Understanding and managing the continuous change of software.
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 Software Engineering that addresses the following:
- Understanding the reasons for software evolution.
- Understanding the impact of software evolution on the structure and quality of source code.
- Developing Software Metrics 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.