Software Maintenance
Table of Contents
- Introduction
- Software Configuration Management
- Software Maintenance Activities
- Software Maintenance Characteristics
- Activities
- Unstructured Maintenance
- Structured Maintenance
- Costs
Return to
Table of Contents for the Course Notes
- The maintenance of existing software can account for over 60 percent
of all development effort.
- Because change is inevitable, mechanisms must be developed for
evaluating, controlling and making modifications.
- Maintenance is a set of software engineering activities that occur
after software has been delivered to the customer and put into operation.
- 70 per cent of the cost of software is devoted to maintenance.
- Maintenance activities can be divided into two types:
- Modification
- As the specifications of computer systems change,
reflecting changes in the external world, so must the
systems themselves.
- Debugging
- Removal of errors that should never have been
there in the first place.
- More than two-fifths of maintenance activities are extensions and
modifications requested by the users.
- The magnitude of this proportion seems to reflect the lack of
extendibility of commonly implemented software.
- Changes in data formats is the next largest activity. The issue
is not that some part of the program knows the physical structure of
the data but that this knowledge is usually spread out over too many
parts of the system.
- Emergency bug fixes cost more than routine, scheduled corrections.
They are performed under pressure, disrupt the orderly process of
delivering new releases and tend to introduce new errors.
- Software configuration management activities are developed to
identify change, control change, assure that change is being properly
implemented, and report change to others who may have an interest.
- SCM is a set of tracking and control activities that begin when a
software development project begins and ends only when the software is
retired.
- Maintenance can be defined as four activities:
- Corrective Maintenance
- A process that includes diagnosis and correction
of errors.
- Adaptive Maintenance
- Activity that modifies software to properly interface
with a changing environment (hardware and software).
- Perfective Maintenance
- Activity for adding new capabilities, modifying
existing functions and making general enhancements.
- This accounts for the majority of all effort
expended on maintenance.
- Preventive Maintenance
- Activity which changes software to improve future
maintainability or reliability or to provide a better
basis for future enhancements.
- Still relatively rare.
- Distribution of maintenance activities (based on a study of 487
software development organizations):
- Perfective: 50%
- Adaptive: 25%
- Corrective: 21%
- Others: 4%
- The activities required to accomplish the maintenance
phase and the impact of a software engineering approach (or lack
thereof) on the efficacy of such activities.
- The costs associated with the maintenance phase.
- The problems that are frequently encountered when software
maintenance is undertaken.
If the only available element is the source code:
- painstaking evaluation of the code, complicated by poor internal
documentation,
- things such as program structure, global data structures, system
interfaces, performance and/or design constraints are difficult to
ascertain and frequently misinterpreted,
- ramifications of changes to the code are difficult to assess,
- regression tests are impossible to conduct because no record of
testing exists.
- Begins with an evaluation of the design documentation.
- The impact of required modifications or corrections is assessed
and an approach is planned.
- The design is modified and reviewed, new source code is developed and
regression tests are conducted.
- Typical software organizations spend anywhere from 40 to 70 percent
of all funds conducting maintenance.
- Maintenance-bound organizations result --> loss or postponement of
development opportunities.
- Customer dissatisfaction when requests cannot be addressed.
- Reduction in overall software quality as a result of changes that
introduce latent errors in the maintained software.
Deb Stacey
Fri Jul 28 22:40:00 EDT 1995
Return to
Table of Contents for the Course Notes