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.
Cited By
- Le Goues C, Forrest S and Weimer W The case for software evolution Proceedings of the FSE/SDP workshop on Future of software engineering research, (205-210)
- Forrest S, Nguyen T, Weimer W and Le Goues C A genetic programming approach to automated software repair Proceedings of the 11th Annual conference on Genetic and evolutionary computation, (947-954)
Recommendations
Software architecture evolution through evolvability analysis
Software evolvability is a multifaceted quality attribute that describes a software system's ability to easily accommodate future changes. It is a fundamental characteristic for the efficient implementation of strategic decisions, and the increasing ...
Symbiosis and Software Evolvability
Software systems need to evolve to adapt to either a new environment or a new requirement. This position paper discusses the evolution of a software system from the viewpoint of an ecosystem and asserts that the evolution of a software system is not a ...
Software evolution and maintenance
FOSE 2014: Future of Software Engineering ProceedingsSuccessful software requires constant change that is triggered by evolving requirements, technologies, and stakeholder knowledge. This constant change constitutes software evolution. Software evolution has gained steadily in importance and recently ...