Description Meir M. Lehman
was one of the first scientist to observe
that software evolves over its lifetime. He formulated several
laws
about software evolution. Here are three examples of his laws (slightly paraphrased):
- Continuing Change: Programs must be continually adapted or they become progressively less usefull.
- Increasing Complexity: When a program evolves, its complexity increases unless work is done to maintain or reduce it.
- Continuing Growth: The functional content of programs must be continually increased to maintain user satisfaction over their lifetime.
Software evolution is a specialisation in
SoftwareEngineering that address the following:
- Understanding the reasons for software evolution.
- Understanding the impact of software evolution on the structure and quality of source code.
- Developing SoftwareMetrics and tools to measure the impact of software evolution.
- Developing methods and tools for the better understanding of source code.
- Developing Refactoring tools to counter the effects of software evolution.