Software evolution

Fred Brooks, in his key book The Mythical Man-Month,[1] states that over 90% of the costs of a typical system arise in the maintenance phase, and that any successful piece of software will inevitably be maintained.

In fact, Agile methods stem from maintenance-like activities in and around web based technologies, where the bulk of the capability comes from frameworks and standards.

[2] The need for software evolution comes from the fact that no one is able to predict how user requirements will evolve a priori .

Prof. Meir M. Lehman, who worked at Imperial College London from 1972 to 2002, and his colleagues have identified a set of behaviours in the evolution of proprietary software.

For example, see a presentation by Nanjangud C Narendra[17] where he describes a case study of an enterprise Agile project in the light of Lehman’s laws of software evolution.

Some empirical observations coming from the study of open source software development appear to challenge some of the laws [vague][citation needed].

The laws predict that the need for functional change in a software system is inevitable, and not a consequence of incomplete or incorrect analysis of requirements or bad programming.

They state that there are limits to what a software development team can achieve in terms of safely implementing changes and new functionality.