The Lehman laws describe a balance between forces driving new developments on one hand, and forces that slow down progress on the other hand.
Lehman distinguishs between three categories of software:
- A S-program (specified) is written according to an exact specification
- A P-program (procedural) is written to implement certain procedures that completely determine what the program can do
- An E-program (evolving) is written to perform some real-world activity, 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
Continuing Change
An E-type system must be continually adapted or it becomes progressively less satisfactory.
Increasing Complexity
As an E-type system evolves, its complexity increases unless work is done to maintain or reduce it.
Self Regulation
E-type system evolution processes are self-regulating with the distribution of product and process measures close to normal.
Conservation of Organisational Stability (invariant work rate)
The average effective global activity rate in an evolving E-type system is invariant over the product’s lifetime.
Conservation of Familiarity
As an E-type system evolves, the average incremental growth remains invariant as the system evolves.
Continuing Growth
The functional content of an E-type system must be continually increased to maintain user satisfaction over its lifetime.
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.
Feedback System
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.