ScholarGate
Assistant

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.

Find Topic with PaperMindSoonFind papers & topics
Tools & resources
Download slides
Learn & explore
VideoSoon

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.

Methods for this concept

Related concepts