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