You are on page 1of 13

July 5, 2023 Software Evolution and Maintenance 1

Objectives
Define and introduce software maintenance and
evolution.
Distinguish software maintenance from software
development.
Outline why maintenance is needed.
Introduce theoretical background and key skills
required to implement effective software change.
Introduce the specific activities that comprise
software maintenance.

July 5, 2023 Software Evolution and Maintenance 2


“ There is no such thing as a ‘finished’
computer program”
[Lehman]

July 5, 2023 Software Evolution and Maintenance 3


Introduction
Software maintenance
The discipline concerned with changes related to a
software system after delivery.
An appreciation of the discipline is important as costs are
extremely high.
Correct use and functioning of a software system can be
a matter of life and death.
Factors that bear on the usefulness of software systems
(i) Functionality, (ii) flexibility, (iii) continuous availability
and (iv) correct operation

July 5, 2023 Software Evolution and Maintenance 4


Introduction
Changes will usually be required to support these
factors during the lifetime of a system.
Greatest challenges facing software engineers is the
management and control of these changes.
Results from studies undertaken to investigate the
characteristics and costs of changes carried out on a
system after delivery show estimated expenditure at
40-70% of the costs of the entire life cycle of the
software system.

July 5, 2023 Software Evolution and Maintenance 5


Definitions
Evolution
 A process of continuous change from a lower, simpler or worse to a
higher, more complex, or better state.
Maintainability
 The ease with which maintenance can be carried out.
Maintenance
 The act of keeping an entity in an existing state of repair, efficiency, or
validity; to preserve from failure or decline.
Software
 The programs, documentation and operating procedures by which
computers can be made useful to man
Software Maintenance
 Modification of a software product after delivery, to (i) correct faults,
to (ii) improve performance or other attributes, or (iii) to adapt the
product to a modified environment.

July 5, 2023 Software Evolution and Maintenance 6


The Basics
McDermid’s defines software as not only programs –
source and object code – but also documentation of
any facet of the program, such as requirements
analysis, specification, design, system and user
manuals, and the procedures used to set up and
operate the software system.
Table 1.1 shows the components of a software system
and some examples of each.

July 5, 2023 Software Evolution and Maintenance 7


Table 1.1 Components of a software
system
Software Components Examples

Program 1 . Source code


2. Object code

1. Analysis/specification: (a) Formal specification


(b) Context diagram
(c) Data flow diagram
2. Design: (a) Flowcharts
Documentation (b) Entity-relationship charts
3. Implementation: (a) Source code listings
(b) Cross-reference listings
4. Testing: (a) Test data
(b) Test results
Operating procedures 1. Instructions to set up and use the software system
2. Instructions on how to react to system failures

July 5, 2023 Software Evolution and Maintenance 8


New development vs. software maintenance
Jones provides an interesting analogy where he likens
the addition of functional requirements to a live
system, to the addition of a new room to an existing
building
“ The architect and the builders must take care not to
weaken the existing structure when additions are made.
Although the costs of the new room usually will be lower
than the costs of constructing an entirely new building,
the costs per square foot may be much higher because of
the need to remove existing wall, reroute plumbing and
electrical circuits and take special care to avoid
disrupting the current site.”

July 5, 2023 Software Evolution and Maintenance 9


July 5, 2023 Software Evolution and Maintenance 10
Modification initiated by defects in the software
Change driven by the need to accommodate
modifications in the environment of the software
system
Change undertaken to expand the existing
requirements of a system
Change undertaken to prevent malfunctions

July 5, 2023 Software Evolution and Maintenance 11


Summary
The cost of maintaining systems in many
organizations has been observed to range from 40%
to 70% of resources allocated to the entire software
life cycle.
It is important to understand what is meant by the
basic terms that underlie the field, software,
maintenance, evolution and maintainability, in order
to understand the importance of software
maintenance and how it fits into context in the
modern world.

July 5, 2023 Software Evolution and Maintenance 12


Summary
Software maintenance and software development,
although closely linked are different. It is important
for those involved in maintenance fully to appreciate
the differences.
In a world ever more reliant on software systems, the
discipline of software maintenance is becoming more
and more important.
As with other fields, software maintenance is
underpinned by a theoretical base. It is important to
be aware of this in order to be an effective software
maintainer.

July 5, 2023 Software Evolution and Maintenance 13

You might also like