Software Evolution and Maintenance


When software systems are embedded in real world domains, their active and on-going use presents a number of challenges, enumerated here as Lehman's Eight Laws of Software Evolution.

1Continuing ChangeSystems must be continually adapted else they become progressively less satisfactory in use
2Increasing ComplexityAs a system is evolved its complexity increases unless work is done to maintain or reduce it
3Self RegulationGlobal system evolution processes are self-regulating
4Conservation of Organisational StabilityUnless feedback mechanisms are appropriately adjusted, average effective global activity rate in an evolving system tends to remain constant over product lifetime
5Conservation of FamiliarityIn general, the incremental growth and long term growth rate of systems tend to decline
6 Continuing Growth The functional capability of systems must be continually increased to maintain user satisfaction over the system lifetime
7 Declining Quality Unless rigorously adapted to take into account changes in the operational environment, the quality of systems will appear to be declining
8 Feedback SystemEvolution processes are multi-level, multi-loop, multi-agent feedback systems

The study of these challenges has been the focus of a number of professional organizations and academic research groups. The following internet resources provide a range of related information, ranging from introductory tutorials to publication of the latest research.
On-line introductions to the terminology and techniques of working with existing software include:

There's a large body of published materials covering the topic of software maintenance. Lists of these writings include:

Academic and Government Sites
There are a number of academic and government groups which are focused on legacy code and software evolution:


For those with the self-control to sit in conference rooms and discuss the problems of maintaining software, while surrounded by exciting and exotic locations, there are number of related conferences:

Legacy code, software evolution
and software maintenance - related sites