Skip to content

Laws of Software Evolution#

See also: bricolage

Programs, life cycles, and laws of software evolution#

Blog post talking about Lehman (1980)

Lehman (1996)#

2.1 I -- Continuing Change An E-type program that is used must be continually adapted else it becomes progressively less satisfactory.” ([Lehman, 1996, p. 108]

2.2 II -- Increasing Complexity As a program is evolved its complezity increases unless work is done to maintain or reduce it.” ([Lehman, 1996, p. 109]

2.3 III -- Self Regulation The program evolution process is self regulating with close to normal distribution of measures of product and process attributes. ([Lehman, 1996, p. 109]

2.4 IV -- Conservation of Organisational Stability (invariant work rate) The average effective global activity rate on an evolving system is invariant over the product life time.” ([Lehman, 1996, p. 110])

2.5 -- Conservation of Familiarity During the active life of an evolving program, the content of successive releases is statistically invariant.” ([Lehman, 1996, p. 110])

2.6 VI -- Continuing Growth Functional content of a program must be continually increased to maintain user satisfaction over its lifetime.” ([Lehman, 1996, p. 110])

2.7 VII -- Declining Quality E-type programs will be perceived as of declining quality unless rigorously maintained and adapted to a changing operational environment.” ([Lehman, 1996, p. 111])

2.8 VIII -- Feedback System E-type Programming Processes constitute Multi-loop, Multi-level Feedback systems and must be treated as such to be successfully modified or improved.” ([Lehman, 1996, p. 112])

References#

Lehman, M. M. (1980). Programs, life cycles, and laws of software evolution. Proceedings of the IEEE, 68(9), 1060--1076. https://doi.org/10.1109/PROC.1980.11805

Lehman, M. M. (1996). Laws of software evolution revisited. In C. Montangero (Ed.), Software Process Technology (pp. 108--124). Springer. https://doi.org/10.1007/BFb0017737