Ch9 Evolution
Ch9 Evolution
Evolution processes
Software maintenance
Evolution
▪ The stage in a software system’s life cycle where it is in
operational use and is evolving as new requirements are
proposed and implemented in the system.
Servicing
▪ At this stage, the software remains useful but the only changes
made are those required to keep it operational i.e. bug fixes and
changes to reflect changes in the software’s environment. No
new functionality is added.
Phase-out
▪ The software may still be used but no further changes are made
to it.
Fault repairs
▪ Changing a system to fix bugs/vulnerabilities and correct
deficiencies in the way meets its requirements.
Environmental adaptation
▪ Maintenance to 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.
Functionality addition and modification
▪ Modifying the system to satisfy new requirements.
Duplicate code
▪ The same or very similar code may be included at different
places in a program. This can be removed and implemented as a
single method or function that is called as required.
Long methods
▪ If a method is too long, it should be redesigned as a number of
shorter methods.
Switch (case) statements
▪ These often involve duplication, where the switch depends on
the type of a value. The switch statements may be scattered
around a program. In object-oriented languages, you can often
use polymorphism to achieve the same thing.
Data clumping
▪ Data clumps occur when the same group of data items (fields in
classes, parameters in methods) re-occur in several places in a
program. These can often be replaced with an object that
encapsulates all of the data.
Speculative generality
▪ This occurs when developers include generality in a program in
case it is required in the future. This can often simply be
removed.