Upload
barbara-wiggins
View
218
Download
3
Embed Size (px)
Citation preview
Software evolution
Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing software initially, then repeatedly updating it for various reasons.
Software Evolution 2
Importance of evolution
Organizations have huge investments in their software systems - they are critical business assets.
To maintain the value of these assets to the business, they must be changed and updated.
The majority of the software budget in large companies is devoted to evolving existing software rather than developing new software.
Studies indicate that up to 75% of all software professionals are involved in some form of maintenance/evolution activity.
Software Evolution 3
Software change
Software change is inevitable• New requirements emerge when the software is used;• The business environment changes;• Errors must be repaired;• New computers and equipment is added to the
system;• The performance or reliability of the system may have
to be improved. A key problem for organizations is implementing
and managing change to their existing software systems.
Software Evolution 4
Repair software faults• Changing a system to correct deficiencies in the way meets
its requirements. Adapt software to a different operating environment
• Changing a system so that it operates in a different environment (computer, OS, etc.) from its initial implementation.
Add to or modify the system’s functionality• Modifying the system to satisfy new requirements.
Improve the program structure and system performance• Rewriting all or parts of the system to make it more efficient
and maintainable.
Types of changes
Software Evolution 5
Software evolution and software maintenance
No standard definitions.
Broad definition of evolution: Generally, software evolution refers to the study and management of the process of making changes to software over time. • In this definition, software evolution comprises:
• Development activities• Maintenance activities• Reengineering activities
Narrow definition of evolution: Sometimes, software evolution is used to refer to the activity of adding new functionality to existing software.
Maintenance refers to the activity of modifying software after it has been put to use in order to maintain its usefulness.
Software Evolution 6
Repair software faults• Changing a system to correct deficiencies in the way meets
its requirements. Adapt software to a different operating environment
• Changing a system so that it operates in a different environment (computer, OS, etc.) from its initial implementation.
Add to or modify the system’s functionality• Modifying the system to satisfy new requirements.
Improve the program structure and system performance• Rewriting all or parts of the system to make it more efficient
and maintainable.
Types of changes“M
aint
enan
ce”
“Evo
lutio
n”
“Ree
ngin
eerin
g”
Software Evolution 7
Evolution processes
Processes for evolving a software product depend on• The type of software being maintained;• The development processes used;• The skills and experience of the people involved.
Proposals for change are the drivers for system evolution. Change identification and evolution continue throughout the system lifetime.
Sommerville, Ch. 21
Software Evolution 8
Change identification and evolution
Change proposalsNew system
Change identificationprocess
Software evolutionprocess
Sommerville, Ch. 21
Software Evolution 9
The system evolution process
Releaseplanning
Changeimplementation
Systemrelease
Impactanalysis
Changerequests
Platformadaptation
Systemenhancement
Fault repair
Sommerville, Ch. 21
Typess of maintenance 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;
Software Evolution 10
Cont…………..
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.
Software Evolution 11