HOME

TheInfoList



OR:

In
software engineering Software engineering is a systematic engineering approach to software development. A software engineer is a person who applies the principles of software engineering to design, develop, maintain, test, and evaluate computer software. The term '' ...
, the laws of software evolution refer to a series of laws that Lehman and Belady formulated starting in 1974 with respect to
software evolution Software evolution is the continual development of a piece of software after its initial release to address changing stakeholder and/or market requirements. Software evolution is important because organizations invest large amounts of money in the ...
. The laws describe a balance between forces driving new developments on one hand, and forces that slow down progress on the other hand. Over the past decades the laws have been revised and extended several times.


Context

Observing that most software is subject to change in the course of its existence, the authors set out to determine laws that these changes will typically obey, or must obey in order for the software to survive. In his 1980 article, Lehman qualified the application of such laws by distinguishing between three categories of software: * An ''S''-program is written according to an exact specification of what that program can do. For example the eight queens problem. They are mostly static and shouldn't evolve much. * A ''P''-program is written to implement certain procedures that completely determine what the program can do (the example mentioned is a program to play chess) * An ''E''-program is written to perform some real-world activity; how it should behave is strongly linked to the environment in which it runs, and such a program needs to adapt to varying requirements and circumstances in that environment The laws are said to apply only to the last category of systems.


The laws

All told, eight laws were formulated: # (1974) "Continuing Change" — an E-type system must be continually adapted or it becomes progressively less satisfactory. # (1974) "Increasing Complexity" — as an E-type system evolves, its complexity increases unless work is done to maintain or reduce it. # (1974) "Self Regulation" — E-type system evolution processes are self-regulating with the distribution of product and process measures close to normal. # (1978) "Conservation of Organisational Stability (
invariant work rate Invariant and invariance may refer to: Computer science * Invariant (computer science), an expression whose value doesn't change during program execution ** Loop invariant, a property of a program loop that is true before (and after) each iteratio ...
)" — the average effective global activity rate in an evolving E-type system is invariant over the product's lifetime. # (1978) "Conservation of Familiarity" — as an E-type system evolves, all associated with it, developers, sales personnel and 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 Increment or incremental may refer to: * Incrementalism, a theory (also used in politics as a synonym for gradualism) * Increment and decrement operators, the operators ++ and -- in computer programming * Incremental computing * Incremental backu ...
remains invariant as the system evolves. # (1991) "Continuing Growth" — the functional content of an E-type system must be continually increased to maintain user satisfaction over its lifetime. # (1996) "Declining Quality" — the quality of an E-type system will appear to be declining unless it is rigorously maintained and adapted to operational environment changes.Liguo Yu and Alok Mishra (2013) An Empirical Study of Lehman’s Law on Software Quality Evolution in International Journal of Software and Informatics, 11/2013; 7(3):469-481. # (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.


References

{{DEFAULTSORT:Lehman, Meir Manny Software maintenance