- The law of continuing change. -- Any software system used in the real-world must change or become less and less useful in that environment.
- The law of increasing complexity. -- As time flows forwards, entropy increases. That is, as a program evolves, its structure will become more complex. Just as in physics, this effect can, through great cost, be negated in the short term.
- The law of large program evolution. -- Program evolution is a self-regulating process and measurements of system attributes such as size, time between releases, number of reported errors, etc., reveal statistically significant trends and invariances.
- The law of organizational stability. -- Over the lifetime of a program, the rate of development of that program is approximately constant and independent of the resources devoted to system development.
- The law of conservation of familiarity. -- Over the lifetime of a system, the incremental system change in each release is approximately constant.
(Lehman, M., (1980), "Programs, life cycles and the laws of software
evolution,"
Proc. IEEE, 15 (3).)
See also SoftwareLifeCycle