elshaday computing
elshaday computing
Topics covered
Evolution processes
– Change processes for software systems
Program evolution dynamics
– Understanding software evolution
– Software maintenance
– Making changes to operational software systems
Legacy system management
– Making decisions about 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 all organizations is implementing and managing change to
their existing software systems.
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 changing and
evolving existing software rather than developing new software.
Evolution process
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.
Evolution process
Change implementation
Change implementation
• Iteration of the development process where the revisions to the system are designed,
implemented and tested.
• A critical difference is that the first stage of change implementation may involve
program understanding, especially if the original system developers are not
responsible for the change implementation.
• During the program understanding phase, you have to understand how the
program is structured, how it delivers functionality and how the proposed change
might affect the program.
Urgent change request
Urgent changes may have to be implemented without going through all stages of the
software engineering process
– If a serious system fault has to be repaired to allow normal
operation to continue;
– If changes to the system’s environment (e.g. an OS upgrade) have unexpected
effects;
– If there are business changes that require a very rapid response (e.g. the
release of a competing product).
The Emergency Repair Process
– Small organizations;
– Medium sized systems.
KEY POINTS
Software development and evolution can be thought of as an integrated, iterative process that can
be represented using a spiral model.
For custom systems, the costs of software maintenance usually exceed the software
development costs.
The process of software evolution is driven by requests for changes and includes change
impact analysis, release planning and change implementation.
Lehman’s laws, such as the notion that change is continuous, describe a number of insights
derived from long-term studies of system evolution.
Software maintenance
Modifying a program after it has been put into use.
The term is mostly used for changing custom software. Generic software products are
said to evolve to create new versions.
Maintenance does not normally involve major changes to the system’s architecture.
Changes are implemented by modifying existing components and adding new components
to the system.
Tyes of Maintenance
Maintenance to repair software faults
initial implementation.
Maintenance to add to or modify the system’s functionality
Modifying the system to satisfy new requirements.
Maintenance costs
• Usually greater than development costs (2* to 100*
depending on the application).
on maintainability.
Maintenance prediction
Change prediction
Predicting the number of changes requires and understanding of the relationships between a
Advantages of reengineering
Reduced risk
– There is a high risk in new software development. There may be
development problems, staffing problems and specification problems.
Reduced cost
– The cost of re-engineering is often significantly less than the costs of
developing new software.
The reengineering processes
Reengineering approaches
Reengineering cost factors
• The quality of the software to be reengineered.
• The tool support available for reengineering.
• The extent of the data conversion which is required.
• The availability of expert staff for
reengineering.
– This can be a problem with old systems based on technology that is no
longer widely used.
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.
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.
Legacy system management
Organizations that rely on legacy systems must choose a
The strategy chosen should depend on the system quality and its business value.
An example of a legacy system assessment
These make an important business contribution but are expensive to maintain. Should be re-