Definition(s):
Software evolution/evolving is a fact in software products’ lifecycle.
According to Sommerville (2020) software evolution refers to “accommodation of perfective, corrective and adaptive maintenance, which may involve some reengineering activity“.
“Those activities which are geared towards improving the software itself, rather than increasing one’s understanding of the same. Examples include restructuring, redocumenting and data reengineering. All are meant to evolve the subject system from its current form to one that better meets the new requirements.” (SEI, 1995)
“In a Software Engineering context, the term evolution can be interpreted in two ways. One view considers that important topics regarding the evolution of software are the ones that describe the means through which evolution occurs, i.e., the mechanism, instruments, and tools used in this process. In this case, the focus is the understanding of how software is modified. Another view seeks to understand the nature of the evolution phenomenon, its causes, properties and characteristics, consequences, impacts, management, and control. In this case, the focus is to investigate what software evolution is and why it happens. In this context, the Laws of Software Evolution (LSEs) mean to support the understanding of the evolutionary process of software.” (Araujo, Monteiro and Travassos, 2012)
Source(s):
- Sommerville, Ian. Engineering software products. London: Pearson, 2020.
- Perspectives on legacy system reengineering. Reengineering centre, Software Engineering Institute, Carnegie Mellon University, 1995.
- Araújo, Marco Antônio Pereira, Vitor Faria Monteiro, and Guilherme Horta Travassos. “Towards a model to support in silico studies of software evolution.” Proceedings of the ACM-IEEE international symposium on Empirical software engineering and measurement. 2012.