Software Evolution
Software Evolution
2. Software evolution
3. Evolution processes
4. Software maintenance
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.
System Evolution Process
Software Evolution Process varies depending on the
◦ type of software being maintained
Large organization
Process is structured through use of Change Requests Proposals
System change proposals
are the driver for system evolution in all organizations.
May arise from
Existing requirements that have not been implemented in the released
system,
Requests for new requirements,
bug reports from system stakeholders, and
New ideas for software improvement from the system
development team.
The software evolution process
CR originates from users of system
Impact analysis- The cost and impact of the changes are assessed.
◦ see how much of the system is affected by the change and
◦ how much it might cost to implement the change.
Release Planning-
◦ a new release of the system is planned. During release planning, all
proposed changes (fault repair, adaptation, and new functionality) are
considered
◦ A decision is then made on which changes to implement in the next
version of the system.
Change Implementation-
◦ the revisions to the system are designed, implemented, and tested
System Release-
◦ a new version of the system is released
Change requests sometimes relate to system problems that
have to be tackled urgently. May not follow the process
1. Fault repairs
◦ Coding errors are usually relatively cheap to correct;
Cost implications
Staff Skills
May be inexperienced and unfamiliar to the software
Refactoring
Re-Engineering,
modifying and updating the structure and values of the system’s data.
Re-Engineering Activities,
Source code translation
Using a translation tool, the program is converted from an old programming
language to a more modern version of the same language.
Reverse engineering
The program is analyzed and information extracted from it.
Program modularization
Related parts of the program are grouped together and, duplication removed
Data reengineering
The data processed by the program is changed to reflect program changes
Advantages of reengineering
1. Reduced risk
2. Reduced cost
◦ The cost of re-engineering is often significantly less than the costs of
developing new software
Refactoring
Refactoring
◦ is the process of making improvements to a program to slow down
degradation through change
Long methods
Refactoring
◦ Refactoring is a continuous process of improvement throughout the
development and evolution process.
◦ It is intended to avoid the structure and code degradation that increases the
costs and difficulties of maintaining a system
Legacy System Management
Legacy system management
implies that the system is out of date or in need of replacement.
•The strategy chosen should depend on the system quality and its
business value.
A legacy system assessment Tool
Low quality, low business value
◦ Keeping these systems in operation will be expensive and the rate of the return to
the business will be fairly small. These systems should be scrapped
System dependability
System Outputs
Quote of the Day