Maintenance activities include all work carried out postdelivery
and should be distinguished from block
modifications which represent significant design and
development effort and supersede a previously released
software package. These maintenance activities can be
quite diverse, and it helps to identify exactly what postdelivery
activities are to be included in an estimate of
maintenance effort. Maintenance activities, once defined,
may be evaluated in a quite different light than when called
simply “maintenance”. Software maintenance is different
from hardware maintenance because software doesn't
physically wear out, but software often gets less useful with
age and it may be delivered with undiscovered flaws. In
addition to the undiscovered flaws, it is common that some
number of known defects pass from the development
organization to the maintenance group. This bow wave of
unclosed bugs is exacerbated when multiple versions of the
same deliverable exist simultaneously. Accurate estimation
of the effort required to maintain delivered software is aided
by the decomposition of the overall effort into the various
activities that make up the whole process.
In his book Software Engineering Economics, Barry Boehm
defines maintenance as the process of modifying existing
operational software while leaving its primary functions
intact. The definition includes the following types of
activity within the category of software maintenance:
• Redesign and redevelopment of smaller portions (less
than 50% new code) of an existing software product.
• Design and development of smaller interfacing software
packages which require some redesign (of less than 20%) of
the existing software product.
• Modification of the software product’s code,
documentation, or data base structure.
The definition excludes the following types of activity from
the category of software maintenance:
• Major redesign and redevelopment (more than 50% new
code) of a new software product performing substantially
the same functions.
• Design and development of a sizable (more than 20% of
the source instructions comprising the existing product)
interfacing software package which requires relatively little
redesign of the existing product
• Data processing system operations, data entry and
modification of values in the data base
IEEE and others generally identify four categories of
Software Maintenance efforts.
a) Correct - maintenance is a change made in order to
remove a fault
b) Adapt - maintenance is a change made in order to
become suited to a different condition
c) Perfect - maintenance is a change made in order to
improve
d) Enhance - maintenance is a change made to
forestall or reverse a deterioration
From the table below 8 it is obvious that maintenance
related to enhancement or perfection of a software product
is the largest single cost driver.