Software Maintenance
Software maintenance is the
activity consisting of the
cohesive collection of all
tasks that are primarily
performed to incorporate minor fixes and enhancements into a
software after deployment for use by the
user organizations (i.e., between development projects to
produce major new versions).
The typical goals of software maintenance are to:
- Ensure correct functioning of the software until the next
version is deployed.
The typical objectives of the software maintenance
subactivity are to:
- Perform
adaptive maintenance by making minor
modifications due to:
- Business changes (e.g., reengineering, competition,
reorganization, business-internal politics).
- Legal changes (e.g., new legislation, new
regulations).
- Technology changes (e.g., hardware, software,
communications, technology standardization, commercial
packages).
- Physical changes (e.g., reconfiguration of data center,
transfer to new locations).
- Personnel changes (e.g., changes to the users, user
management, information technology staff).
- Perform
corrective maintenance by correcting minor
defects in the software.
- Perform
perfective maintenance by making minor
improvements in correct software (e.g., refactoring).
Kinds of software maintenance include:
- Adaptive maintenance, which is maintenance performed to
make the software usable in a changed environment.
- Corrective maintenance, which is maintenance performed to
fix minor defects in the software.
- Perfective maintenance, which is maintenance performed to
improve a merely adequate quality factor such as
maintainability, performance, understandability, etc.
Examples of software maintenance include:
- Maintenance of commercial-off-the-shelf (COTS)
software
- Maintenance of government-furnished-equipment (GFE)
software
- Maintenance of internally-developed reusable
software
Software maintenance typically may begin when the following
preconditions hold:
Software maintenance is typically complete when the
following postconditions hold:
- The maintained version of the software has been either
removed from service or replaced by a new version.
Software maintenance typically involves the
maintenance team performing the following maintenance tasks
in an iterative, incremental, and parallel manner:
Environments
Software maintenance is typically performed using the
following environment(s) and associated tools:
Software maintenance typically results in the production of
the following work products:
-
Maintenance Plan
- Updated system data, hardware, or software software.
- Updated developer or user documentation
Phases
The software maintenance activity tasks are typically
performed during the following phases:
- Software maintenance depends on the maintainability of
the software being maintained:
- Adaptive maintenance depends on adaptability and extensibility.
- Corrective maintenance depends on correctability.
- Perfective maintenance depends on maintainability.
- Preventative maintenance depends on correctability and maintainability.
- Major modifications do not occur during maintenance but rather during the next development cycle.
- This activity is documented using the typical configuration for large projects. It is intended to be
configured (i.e., instantiated, extended, and tailored) to meet the needs of specific projects.
- The preconditions of this activity should be the union of the preconditions of its constituent tasks.
- The completion criteria for this activity should be the union of the postconditions of its constituent tasks.