Jump to content

Software evolution

From Wikipedia, the free encyclopedia
This is an old revision of this page, as edited by OrangUtanUK (talk | contribs) at 16:03, 13 November 2006 (new article). The present address (URL) is a permanent link to this revision, which may differ significantly from the current revision.
(diff) ← Previous revision | Latest revision (diff) | Newer revision → (diff)

Software Evolution is the term used in Software engineering to refer to the process of developing software initially, then repeatedly updating it for various reasons.

General introduction

Software Evolution is the process of initial development of a software product, followed by its Software maintenance phase.

Fred Brooks, in his key book The Mythical Man-Month, 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.

Types of software maintenance

There are now 5 recognised types of maintenance effort.

The first four were catalogued by Lientz and Swanson (1980) :

  • perfective maintenance : responding to known changes in user requirements
  • adaptive maintenance : changing software to reflect a known change in the software environment
  • corrective maintenance : fixing known errors
  • preventive maintenance : acting to prevent known problems in the future

All of the preceding take place when there is a known requirement for change.

These were supplemented by Warren et al. (1999) :

  • speculative maintenance : (in webware) the effort of checking for broken links, which may then trigger one of the other forms of maintenance.

Lehman's Laws of Software Evolution

Prof. Manny Lehman of Queen Mary College, University of London, and his team, have identified a set of consistent behaviours in software. These behaviours are known as Lehman's Laws, and there are eight of them :

1. Continuing Change
2. Increasing Complexity
3. Self-Regulation
4. Invariant Work-Rate
5. Conservation of Familiarity
6. Continuing Growth
7. Declining Quality
8. Feedback System

The laws predict that a software maintenance team cannot work faster than its optimal speed; the software itself will regulate the speed of successful progress. They posit that software exhibits behaviours so closely analogous to biological evolution that it should be regarded as living. In this case, the word "evolution" has two meanings : the usual Software Engineering meaning of what is done to software, and the biological meaning of how a species changes itself.

Software evolution is likely not to be Darwinian but Lamarckian or Baldwinian, since it depends partly on the transmission of memes.

See also

References