The Laws of Program Evolution
M.M. Lehman and L.A. Belady

Continuing Change
A program that is used and that as an implementation of its specification reflects some other reality, undergoes continual change or becomes progressively less useful. The change or decay process continues until it is judged more cost-effective to replace the system with a recreated version.
Increasing Complexity
As an evolving program is continually changed its complexity, reflecting an deteriorating structure, increases unless work is done to maintain or reduce it.
The Fundamental Law of Program Evolution
Program evolution is a subject to a dynamics which makes the programming process, and hence measures of global project and system attributes, self-regulating with statistically determinable trends and invariances.
Conservation of Organizational Stability (Invariant Work Rate)
During the active life of a program the global activity rate in the associated programming project is statistically invariant.
Conservation of Familiarity (Perceived Complexity)
During the active life of a program the release content (changes, additions, deletions) of the successive releases of the evolving program is statistically invariant.
Mike Lutz's Home Page      ()