Software Maintenance
Software maintenance is the modification of a software product after delivery to correct faults, adapt it to a changing environment, and improve its function, performance, or maintainability.
Definition
Software maintenance is the totality of activities required to provide cost-effective support to software after delivery, including correcting defects, adapting to new environments, and enhancing capabilities while preserving integrity.
Scope
This topic covers the four maintenance categories (corrective, adaptive, perfective, preventive); the maintenance process from change request through impact analysis, modification, testing, and release; program comprehension and the challenges of changing unfamiliar code; maintainability as a quality attribute; and the standards and metrics that govern maintenance work.
Core questions
- How are maintenance changes classified and prioritized?
- What process steps take a change request through to a released modification?
- How is the impact of a proposed change analyzed before it is made?
- What makes software maintainable, and how is maintainability measured?
Key theories
- Maintenance categories
- Corrective maintenance fixes faults, adaptive maintenance accommodates environmental change, perfective maintenance improves or extends function and performance, and preventive maintenance improves future maintainability; non-corrective categories dominate effort.
- Impact analysis
- Before a change is implemented, impact analysis identifies the components, interfaces, and tests affected, using dependency information and traceability to estimate effort and ripple effects and to bound risk.
Clinical relevance
Because maintenance dominates total software cost and most of it is adaptive and perfective rather than corrective, designing for maintainability and following a disciplined maintenance process directly governs the long-run economics of a system.
Evidence & guidelines
ISO/IEC 14764 defines the maintenance process and its activities, and ISO/IEC 25010 specifies maintainability sub-characteristics such as modularity, modifiability, and testability.
History
Surveys in the 1970s and 1980s revealed that maintenance consumes most software budgets and that adaptive and perfective work outweighs corrective fixing; this reframed maintenance from an afterthought into a central, process-governed phase, later standardized in ISO/IEC 14764.
Key figures
- Meir M. Lehman
- Bennet Lientz
- Ian Sommerville
Related topics
Seminal works
- iso14764
- swebok2014
- sommerville2015
Frequently asked questions
- What kind of maintenance consumes the most effort?
- Studies consistently find that adaptive and perfective maintenance — adapting software to new environments and enhancing it — together account for the majority of maintenance effort, well above corrective bug fixing.
- Why is changing old code so difficult?
- Maintainers must first comprehend code they often did not write, where original rationale and documentation may be missing; understanding the existing system and the ripple effects of a change frequently costs more than making the change itself.