A genetic programming approach to automated software repair
Proceedings of the 11th Annual conference on Genetic and evolutionary computation
The case for software evolution
Proceedings of the FSE/SDP workshop on Future of software engineering research
Assessing architectural evolution: a case study
Empirical Software Engineering
Open Source Software Systems: Understanding Bug Prediction and Software Developer Roles
International Journal of Open Source Software and Processes
Hi-index | 0.00 |
Drawing on models of the evolution of living systems, this dissertation explores the principle of modularity, both biological and in software, and its role in creating structures that are easy to change. These ideas are captured in the Software Evolvability Change Optimization (SECO) model, a framework for investigating how modularity can enhance evolvability in software. SEGO abstracts software history by dividing the code into non-overlapping elements that are linked together by a series of changes. These changes are either gathered from the recorded histories of real software, or modeled using evolutionary computation, change propagation among elements, or correlations in changes between elements. The dissertation uses SECO in both an analytic and synthetic role, investigating aspects of modularity such as encapsulation and code factoring, and using automatic techniques to optimize the modular structure of real code. The dissertation contributes to the further understanding of modularity as a means of improving software evolvability by adding the dimension of time to the analysis. In this way, it can discover dependency links between software elements that are not evident from a static analysis of the program.