Software evolution

Software evolution

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.

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.

Software maintenance address bug fixes and minor enhancements and software evolution focus on adaption and migration.

Types of software maintenance

E.B. Swanson initially identified three categories of maintenance: corrective, adaptive, and perfective. Four categories of software were then catalogued by Lientz and Swanson (1980)1 :

These have since been updated and normalized internationally in the ISO/IEC 14764:

* "Corrective maintenance: Reactive modification of a software product performed after delivery to correct discovered problems;"
* "Adaptive maintenance: Modification of a software product performed after delivery to keep a software product usable in a changed or changing environment;"
* "Perfective maintenance: Modification of a software product after delivery to improve performance or maintainability;"
* "Preventive maintenance: Modification of a software product after delivery to detect and correct latent faults in the software product before they become effective faults."

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

Although these categories were supplemented by many authors like Warren et al. (1999) and Chapin (2001) the ISO/IEC 14764:2005 international standard has kept the basic four categories.

More recently the desccription of software maintenance and evolution has been done using ontologies (Kitchemham et al. (1999), Derider (2002), Vizcaíno 2003, Dias (2003) and Ruiz (2004)), which enrich the description of the many evolution activities.

Lehman's Laws of Software Evolution

Prof. Meir M. Lehman, who worked at Imperial College, University of London from 1972 to 2002, and his colleagues have identified a set of behaviours in the evolution of proprietary software. These behaviours (or observations) are known as "Lehman's Laws", and there are eight of them :

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

It is worth mentioning that the laws are believed to apply mainly to monolithic, proprietary software. For example, some empirical observations coming from the study of open source software development appear to challenge some of the laws.

The laws predict that change is inevitable and not a consequence of bad programming and that there are limits to what a software evolution team can achieve in terms of safely implementing changes and new functionality.

Maturity Models specific to software evolution have been developed to help improve processes to ensure continuous rejuvenation of the software evolves iteratively.

The "global process" that is made by the many stakeholders (e.g. developers, users, their managers) has many feedback loops. The evolution speed is a function of the feedback loop structure and other characteristics of the global system. Process simulation techniques, such as system dynamics can be useful in understanding and managing such global process.

Software evolution is not likely to be Darwinian, Lamarckian or Baldwinian, but an important phenomenon on its own. Giving the increasing dependence on software at all levels of society and economy, the successful evolution of software is becoming increasingly critical. This is an important topic of research that hasn't received much attention.

The evolution of software, because of its rapid path in comparison to other man-made entities, was seen by Lehman as the "fruit fly" of the study of the evolution of artificial systems.

ee also

* Meir M. Lehman
* Darwinian evolution
* Lamarckian evolution
* Baldwinian evolution

References

*cite book | author=April & Abran | title=Software Evolution Management : Evaluation and Continuous Improvement | location=New York | publisher=John Wiley & Sons | year=2008 | id=ISBN 0-470-14707-5


Wikimedia Foundation. 2010.

Игры ⚽ Поможем сделать НИР

Look at other dictionaries:

  • Software-Evolution — ist ein Begriff aus der Softwaretechnik, im Speziellen aus der Softwarewartung, und beschreibt den Prozess, der folgt, nachdem ein Softwaresystem entwickelt und ausgeliefert wurde. Nach Auslieferung und Benutzung kommen neue Anforderungen dazu… …   Deutsch Wikipedia

  • Lehman's laws of software evolution — In Software engineering, the Laws of Software Evolution refer to a series of laws that Lehman and Belady formulated in 1980 with respect to Software evolution cite web|url=http://ieeexplore.ieee.org/xpl/freeabs all.jsp?arnumber=637156 |title=… …   Wikipedia

  • Evolution (software) — Evolution Evolution 2.32.0 …   Wikipedia Español

  • Software visualization — [(Diehl, 2002; Diehl, 2007; Knight, 2002)] is concerned with the static or animated 2 D or 3 D [(Marcus et al., 2003)] visual representation of information about software systems based on their structure [(Staples Bieman, 1999), size (Lanza,… …   Wikipedia

  • Software maintenance — In software engineering, software maintenance is the modification of a software product after delivery to correct faults, to improve performance or other attributes, or to adapt the product to a modified environment.”(ISO/IEC 14764). This… …   Wikipedia

  • Evolution (disambiguation) — In biology, evolution is a change in the inherited traits of a population from one generation to the next.Evolution may also refer to:Film* Evolution (film), a 2001 film by Ivan Reitman * , a 2006 filmTelevision* Evolution (TV series), a… …   Wikipedia

  • Evolution (software) — Evolution Evolution s e mail client Evolution s calendar software Developer(s) Novell GNOME …   Wikipedia

  • Evolution (Software) — Evolution Groupware / Mail Basisdaten Entwickler Novell und GNOME Aktuell …   Deutsch Wikipedia

  • Software prototyping — Software prototyping, a possible activity during software development, is the creation of prototypes, i.e., incomplete versions of the software program being developed.A prototype typically simulates only a few aspects of the features of the… …   Wikipedia

  • Evolution robotics — ist ein US amerikanisches Unternehmen für Robotertechnologie aus Pasadena, Los Angeles County, Kalifornien. Zu den Produkten gehören Lösungen für maschinelles Sehen, Lokalisation und autonomes Navigieren. Evolution rob …   Deutsch Wikipedia

Share the article and excerpts

Direct link
Do a right-click on the link above
and select “Copy Link”