In this paper we introduce the evolution tree - a software life-cycle model that describes software development as the continuous evolution of a software product. That is, we view software development as a maintenance process based on a tree of engineering decisions made at various times. These decisions are made by software engineers in response to modifications in the requirements as they are issued. Our evolution tree is a two-dimensional model for the entire software development process. It reflects the phase-wise nature of the development of each version of the software product, as well as the need for maintenance as successive versions evolve. In particular, the evolution tree can be used to identify those pieces of the software that need to be modified when the requirements change. The paper introduces an informal description of the evolution tree through a typical software development case study, and discusses the meaning of software artifacts, software documentation and maint...
Amir Tomer, Stephen R. Schach