Lehman's laws of software evolution
From Wikipedia, the free encyclopedia
|
|
It has been suggested that this article or section be merged into Software_evolution . (Discuss) Proposed since October 2009. |
|
|
The topic of this article may not meet Wikipedia's general notability guideline. Please help to establish notability by adding reliable, secondary sources about the topic. If notability cannot be established, the article is likely to be merged, redirected, or deleted. (October 2008) |
In Software engineering, the Laws of Software Evolution refer to a series of laws that Lehman and Belady formulated starting in 1974 with respect to Software evolution[1][2]. The laws describe a balance between forces driving new developments on one hand, and forces that slow down progress on the other hand.
[edit] Context
Lehman and Belady classified programs into three types[3]:
- S-type programs are those that can be specified formally.
- P-type programs cannot be specified. Instead, an iterative process is used to find a working solution.
- E-type programs are embedded in the real world and become part of it, thereby changing it. This leads to a feedback system where the program and its environment evolve in concert.
The laws of software evolution were originally based on observations regarding the evolution of IBM's OS/360 and OS/370. The laws were not presented as laws of nature, but rather as general observations that are expected to hold for all E-type systems, regardless of specific programming or management practices.
[edit] The Laws
All told eight laws were formulated:
- (1974) Continuing Change — E-type systems must be continually adapted or they become progressively less satisfactory[4].
- (1974) Increasing Complexity — As an E-type system evolves its complexity increases unless work is done to maintain or reduce it[4].
- (1974) Self Regulation — E-type system evolution process is self regulating with distribution of product and process measures close to normal[4].
- (1978) Conservation of Organisational Stability (invariant work rate) - The average effective global activity rate in an evolving E-type system is invariant over product lifetime[4].
- (1978) Conservation of Familiarity — As an E-type system evolves all associated with it, developers, sales personnel, users, for example, must maintain mastery of its content and behaviour to achieve satisfactory evolution. Excessive growth diminishes that mastery. Hence the average incremental growth remains invariant as the system evolves[4].
- (1991) Continuing Growth — The functional content of E-type systems must be continually increased to maintain user satisfaction over their lifetime.
- (1996) Declining Quality — The quality of E-type systems will appear to be declining unless they are rigorously maintained and adapted to operational environment changes.
- (1996) Feedback System (first stated 1974, formalised as law 1996) — E-type evolution processes constitute multi-level, multi-loop, multi-agent feedback systems and must be treated as such to achieve significant improvement over any reasonable base.
[edit] References
- ^ Lehman, Meir M. (1980). "Programs, Life Cycles, and Laws of Software Evolution". Proc. IEEE 68 (9): 1060–1076.
- ^ Lehman, M. M.; J. F. Ramil, P. D. Wernick, D. E. Perry, and W. M. Turski (1997). "Metrics and laws of software evolution—the nineties view". Proc. 4th International Software Metrics Symposium (METRICS '97). pp. 20-32. doi:10.1109/METRIC.1997.637156. http://www.ece.utexas.edu/~perry/work/papers/feast1.pdf.
- ^ Cook, Stephen; Rachel Harrison, Meir M. Lehman, and Paul Wernick (2006). "Evolution in Software Systems: Foundations of the SPE Classification Scheme". J. Softw. Maintenance & Evolution: Res. & Pract. 18 (1): 1–35. doi:10.1002/smr.314.
- ^ a b c d e Lehman, M. M. (1980). "On Understanding Laws, Evolution, and Conservation in the Large-Program Life Cycle". Journal of Systems and Software 1: 213–221. doi:10.1016/0164-1212(79)90022-0.