The quality attributes of software architecture (SA) determine whether SA can be easily understood, tested, modified and so on, so quality-driven architecture evolution is important for keeping the viability and competitiveness. SA evolution is a process, and it contains multiple steps, such as SA quality measurement, SA modification, code co-evolution and so on. In order to guarantee that the software can be continuously improved and iteratively evolved in the future, we need to focus on all steps. However, most existing approaches only focus on one aspect, so they did not pay attention to how to finish the evolution process. In this paper, we propose a quality-driven iterative evolution approach for SA. This approach focuses on the whole process. In the first step, we use a quantitative approach to measure the architecture quality. Then, we construct the conflict graph to detect conflicts between evolution requirements to generate the final evolution scheme. In the third step, we modify architecture based on the evolution scheme. Finally, we co-evolve file dependency graph (FDG) based on the modified architecture. By focusing on the above steps, our approach can support a complete quality-driven architecture evolution process and obtain the maximum benefit in terms of the combined SA quality. We conduct our experiments with four open source projects, the experimental results indicate that our approach can improve SA quality, and our approach can effectively co-evolve the FDG to lay the foundation for the next evolution.
Read full abstract