Software evolution
Encyclopedia
Software evolution is the term used in software engineering
Software engineering
Software Engineering is the application of a systematic, disciplined, quantifiable approach to the development, operation, and maintenance of software, and the study of these approaches; that is, the application of engineering to software...

 (specifically software maintenance
Software maintenance
Software Maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes....

) to refer to the process of developing software initially, then repeatedly updating it for various reasons.

General introduction

Fred Brooks
Fred Brooks
Frederick Phillips Brooks, Jr. is a software engineer and computer scientist, best known for managing the development of IBM's System/360 family of computers and the OS/360 software support package, then later writing candidly about the process in his seminal book The Mythical Man-Month...

, in his key book The Mythical Man-Month
The Mythical Man-Month
The Mythical Man-Month: Essays on Software Engineering is a book on software engineering and project management by Fred Brooks, whose central theme is that "adding manpower to a late software project makes it later"...

, 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
Adaptation (Computer Science)
The term “adaptation” in computer science refers to a process, in which an interactive system adapts its behaviour to individual users based on information acquired about its user and its environment.-The need for adaptation:...

 and migration
System migration
System migration involves moving a set of instructions or programs, e.g., PLC programs, from one platform to another, minimizing reengineering....

.

Impact of software evolution

The aim of software evolution would be implementing (and revalidate) the possible major changes to the system without being able a priority to predict how user requirements will evolve [1]. The existing larger system is never complete and continues to evolve [2]. As it evolves, the complexity of the system will grow unless there is a better solution available to solve these issues. The main objectives of software evolution are ensuring the reliability and flexibility of the system. During the 20 years pasted, the lifespan of a system could be in average 6-10 years. However, recently found that a system should be evolved once few months to ensure it is compromised to the real-world environment. This is due to the rapid growth of World Wide Web and Internet Resources that make users easier to find related information. The idea of software evolution leads to open source development as anybody could download the source codes and hence modify it. The positive impact in this case is large amounts of new ideas would be discovered and generated that aims the system to have better improvement in variety choices. However, the negative impact is there is no copyright if a software product has been published as open source.

references
1.
2.

Changes in Software Evolution Models and Theories

Over time, software systems, programs as well as applications continue to develop. These changes will require new laws and theories to be created and justified. Some models as well would require additional aspects in developing future programs. Innovations and improvements do increase unexpected form of software development. The maintenance issues also would probably changed as to adapt to the evolution of the future software.
Software process and development are an ongoing experience that has a never-ending cycle. After going through learning and refinements, it is always an arguable issue when it comes to matter of efficiency and effectiveness of the programs. [aeddy; ref: Understanding Open Source Software Evolution Walt Scacchi Institute for Software Research]
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) .
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.
Stage model
Current trends and practices are projected forward using a new model of software evolution called the staged model [1]. Staged model was introduced to replace conventional analysis which is less suitable for modern software development is rapid changing due to its difficulties of hard to contribute in software evolution. There are five distinct stages contribute in simple staged model (Initial development, Evolution, Servicing, Phase-out, and Close-down).
  • According to K.H.Bennett and V.T Rajlich [1], the key contribution is to separate the 'maintenance' phase into an evolution stage followed by a servicing and phase out stages. The first version of software system which is lacking some features will be developed during initial development or also known as alpha stage [2]. However, the architecture has already been possessed during this stage will bring for any future changes or amendments. Most references in this stage will base on scenarios or case study. Knowledge has defined as another important outcome of initial development. Such knowledge including the knowledge of application domain, user requirements, business rules, policies, solutions, algorithm, etc. Knowledge also seems as the important factor for the subsequent phase of evolution.
  • Once the previous stage completed successfully (and must be completed successfully before entering next stage), the next stage would be evolution. Users tend to change their requirements as well as they prefer to see some improvements or changes. Due to this factor, the software industry is facing the challenges of rapid changes environment. Hence the goal of evolution is to adapt the application to the ever-changing user requirements and operating environment [1]. During the previous stage, the first version application created might contain a lot of faults, and those faults will be fixed during evolution stage based on more specified and accurate requirements due to the case study or scenarios.
  • The software will continuously evolve until it is no longer evolvable and then enter stage of servicing (also known as software maturity). During this stage, only minor changes will be done.
  • Next stage which is phase-out, there is no more servicing available for that particular software. However, the software still in production.
  • Lastly, close-down. The software use is disconnected or discontinue [2] and the users are directed towards a replacement.[1].

Lehman's Laws of Software Evolution

Prof. Meir M. Lehman, who worked at Imperial College London
Imperial College London
Imperial College London is a public research university located in London, United Kingdom, specialising in science, engineering, business and medicine...

 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
Open source software development
Open source software development is the process by which open source software is developed. These are software products “available with its source code and under an open source license to study, change, and improve its design”...

 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 improve processes, and help to ensure continuous rejuvenation of the software as it 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
System dynamics
System dynamics is an approach to understanding the behaviour of complex systems over time. It deals with internal feedback loops and time delays that affect the behaviour of the entire system. What makes using system dynamics different from other approaches to studying complex systems is the use...

 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. Given 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.
See also

  • Software entropy
    Software entropy
    A work on software engineering by Ivar Jacobson et al.describes software entropy as follows:Andrew Hunt and David Thomas use Fixing Broken Windows as a metaphor for avoiding software entropy in software development....


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

  • Journal of Software Maintenance and Evolution: Research and Practice
    Journal of Software Maintenance and Evolution: Research and Practice
    The Journal of Software Maintenance and Evolution: Research and Practice, previously known as the Journal of Software Maintenance: Research and Practice, publishes refereed papers on software maintenance and software evolution. Contributors include practitioners and researchers...


Further Reading
  • Rajlich VT, Bennett KH, A Staged Model for the Software Life Cycle, Computer, July 2000, pp. 66 – 71
  • Andrea Capiluppi, Jesus M.Gonzalez Barahona, Israel Herraiz, Gregorio Robles , Adapting the "Staged Model for Software Evolution" to FLOSS
  • Mark C. Paulk, A History of the Capability Maturity Model Software
The source of this article is wikipedia, the free encyclopedia.  The text of this article is licensed under the GFDL.
 
x
OK