Software evolution

from Wikipedia, the free encyclopedia

Software evolution is a term from software technology , especially software maintenance , and describes the process that follows after a software system has been developed and delivered. After delivery and use, new requirements are added and old requirements change. Parts of the software system may need to be corrected as errors occur that were previously not noticed. The system has to be adapted to a new platform. Performance needs to be improved and other non-functional requirements.

Lehman's Laws

Software evolution is a constant process that extends over the entire life cycle of software. Based on observations with large software systems, the then IBM employees Meir M. Lehman and Laszlo Belady put together the following principles.

In summary (the most important)

  • Continuous change - A system that is in use is subject to continuous change or becomes less effective.
  • Increasing Complexity - A software system that is constantly being changed is losing its structure. The changes increase the entropy and complexity of the program.

All eight laws in their original form

  1. Constant change - software systems have to be continuously adapted or they become less and less satisfactory.
  2. Increasing complexity - The complexity of developing software systems increases exponentially with the lifespan, at least as long as this is not maintained or reduced.
  3. Self-regulation - software evolution is a self-regulating process with an (almost) normal distribution of product and process measures.
  4. Maintaining organizational stability (unchangeable work rhythm) - The average, effective, global effectiveness rate in a developing software system is invariant over the life of the product.
  5. Maintaining familiarity - In order to ensure the satisfactory development of an evolving software system, everyone who works with a system (e.g. developers, sales personnel, users) must ensure that they keep an overview of the content and behavior and know exactly the behavior of the system. Reducing overgrowth makes it easier to maintain control. Therefore, the average, additional growth of a system should remain invariant, since the system is constantly evolving.
  6. Sustained growth - The functional content of a software system must be constantly increased in order to maintain user satisfaction throughout its useful life.
  7. Declining quality - The quality of software systems seems to be declining unless they are consistently maintained and adapted to operational changes.
  8. Feedback system - software evolution processes represent multi-level, multi-loop and multi-agent feedback systems and must be treated as such in order to achieve significant improvement on a reasonable basis.

literature

Individual evidence

  1. Meir Lehman: Metrics and laws of software evolution — the nineties view . (PDF; 115 kB) Metrics '97, IEEE. 1997.