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:


As we all hope for progress against the pandemic and a return to in-person conferences in 2022, we send our best wishes for health and safety to all.

Legacy code, software evolution
and software maintenance - related sites