11
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 l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

Embed Size (px)

Citation preview

Page 1: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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.

Page 2: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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.

Page 3: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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.

Page 4: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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

Page 5: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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.

Page 6: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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”

Page 7: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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

Page 8: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

Software Evolution 8

Change identification and evolution

Change proposalsNew system

Change identificationprocess

Software evolutionprocess

Sommerville, Ch. 21

Page 9: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

Software Evolution 9

The system evolution process

Releaseplanning

Changeimplementation

Systemrelease

Impactanalysis

Changerequests

Platformadaptation

Systemenhancement

Fault repair

Sommerville, Ch. 21

Page 10: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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

Page 11: Software evolution l Software evolution is the term used in software engineering (specifically software maintenance) to refer to the process of developing

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