Software Evolution Process

Read Complete Research Material

SOFTWARE EVOLUTION PROCESS

Software Evolution Process

Software Evolution Process

Software Reengineering

The reengineering of software was described by Chikofsky and Cross in their 1990 paper, as "The examination and alteration of a system to reconstitute it in a new form". Less formally, reengineering is the modification of a software system that takes place after it has been reverse engineered, generally to add new functionality, or to correct errors.

This entire process is often erroneously referred to as reverse engineering; however, it is more accurate to say that reverse engineering is the initial examination of the system, and reengineering is the subsequent modification.

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 adaptation 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:2006

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:2006 international standard has kept the basic four categories.

More recently the description 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 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 ...
Related Ads