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.
Systems must be continually adapted else they become progressively less satisfactory in use
As a system is evolved its complexity increases unless work is done to maintain or reduce it
Global system evolution processes are self-regulating
Conservation of Organisational Stability
Unless feedback mechanisms are appropriately adjusted, average effective global activity rate in an evolving system tends to remain constant over product lifetime
Conservation of Familiarity
In general, the incremental growth and long term growth rate of systems tend to decline
The functional capability of systems must be continually increased to maintain user satisfaction over the system lifetime
Unless rigorously adapted to take into account changes in the operational environment, the quality of systems will appear to be declining
Evolution 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: