We present a model of the software evolution process. We introduce the notion of a delta, which represents a change in the software's environment, as a key concept for characterizing the software evolution process. A number of prototypical deltas are presented and characterized in terms of the domains, models, and actors involved.
1: IntroductionIt is a common observation that almost all software systems change after their inital development and release. We perceive this as software evolution. Software evolution imply several challenges for the software developers and maintainers. The evolution of a software system can have many forms. The objective of this article is to present an abstract view on software evolution in order to expose the commonalities of these forms rather than to discuss the variations. In our view on software evolution we apply a perspective which expose certain properties of the software life-cycle. The properties become the essential elements of the resulting abstract model of software evolution.We base our work on a previosly developed model of the software development process [8]. The model defines a number of participant roles, domains, and models that make up an abstract view on the development process. In this paper the model from [8] is used as the basis for examining the software evolution process -evolution is seen as combinations of basic changes to the domains etc. of that model. The overall purpose of the research conducted in this article and in [8] is to expose, understand, and characterize various aspects of the software life-cycle -in [8] the lifecycle seen from a software development perspective, and in this article the life-cycle seen from a software evolution perspective.We use the term "software development process" for the result of applying a development perspective on the software life-cycle. Similarly we use the term "software evolution process" for the result of applying an evolution perspective on the software life-cycle. The research perspectives development and evolution are illustrated in Figure 1. The researcher roles apply the development and evolution perspectives on the software life-cycle to describe abstract models corresponding to the perspectives. This article and [8] may be seen as (descriptions of) the two models -they support the understanding of the development and evolution processes by their restricted characterizations of the processes.