Software evolution: past, present and future

Abstract Much of the focus of software engineering has been on the initial development of software. The subsequent fate of the software has not been seen as a major issue. However, for much long-lived commercial and industrial software, the largest part of lifecycle costs is concerned with the evolution of software to meet changing needs. The cost-effective evolution of mission-critical software, for example, is still a major challenge. In this paper we review progress in software evolution in order to provide an overview for the conference. Much progress has been made in meeting industrial needs in recent years, and we can now think in terms of solutions rather than in problems alone. Some excellent case studies are available to demonstrate what is possible. The field is presented as a three-level model. At the top level, the way in which software evolution interacts with organizational needs and goals is addressed. The paper then concentrates on the middle, process layer, and explains the new proposed IEEE standard for maintenance processes. Finally, important technologies (particularly impact analysis) to underpin the process activities are described. This paper reviews the current state-of-the-art, and suggest some future trends for software evolution, along with key research issues.