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
()