Evolution & Maintenance

Lehman's Laws of Software Evolution

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

evolution maintenance complexity legacy

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

Enforce this law (and 100+ more) in your AI coding agents with DevLaws.

Open DevLaws All laws →