Evolution & Maintenance

Lehman's Laws of Software Evolution

Programs that are used must be continually adapted or they become progressively less satisfactory.

Meir Lehman formulated eight laws describing how software systems evolve over time:

  1. Continuing Change: A system must be continually adapted or it becomes progressively less satisfactory
  2. Increasing Complexity: As a system evolves, its complexity increases unless work is done to reduce it
  3. Self-Regulation: System evolution is self-regulating with close to normal distribution of measures
  4. Conservation of Organizational Stability: The average effective global activity rate is invariant over the product's lifetime
  5. Conservation of Familiarity: The content of successive releases is statistically invariant
  6. Continuing Growth: Functional content must be continually increased to maintain user satisfaction
  7. Declining Quality: Quality will appear to be declining unless rigorously maintained
  8. Feedback System: Evolution processes constitute multi-level feedback systems

Resources

Open the interactive DevLaws app for protocols, bookmarks, and AI enforcement.

Open in app Browse all laws Marketing site