Back to the 2025 paper

Module 5: Software Maintenance

20257m

Describe different models of software maintenance (corrective, adaptive, perfective, preventive) and give examples.

Worked SolutionAI Assisted

Models of Software Maintenance (Corrective, Adaptive, Perfective, Preventive)

After delivery, software undergoes changes. Software maintenance is traditionally classified into four types (per IEEE and Pressman/Sommerville):

1. Corrective Maintenance

  • What: fixing errors/defects (bugs) discovered in the software after it has been delivered.
  • Purpose: restore the software to its intended, correct behaviour.
  • Examples: fixing a crash when a specific input is entered; correcting a wrong calculation; patching a security vulnerability.

2. Adaptive Maintenance

  • What: modifying the software to respond to changes in its environment — new operating systems, new hardware, new compilers, changed regulations, or new external interfaces.
  • Purpose: keep the software working in a changed external environment.
  • Examples: porting the application to run on a new Windows/Linux version; updating to support a new database server or browser; changing tax calculations for new government rules.

3. Perfective Maintenance

  • What: improving/enhancing the software — adding new features, improving performance, usability, or maintainability — to meet new or changed user needs.
  • Purpose: make the software better from the user's perspective (not fixing bugs).
  • Examples: adding a new reporting feature; optimizing the response time of a query; redesigning a user interface for better usability.

4. Preventive Maintenance

  • What: preventing future problems by making changes that improve the software's maintainability and reliability without changing its external functionality in the short term.
  • Purpose: reduce the risk of future failures and lower future maintenance cost (like servicing a machine before it breaks).
  • Examples: refactoring complex code; updating comments/documentation; adding comments, restructuring modules, applying better error handling — often using reverse/forward engineering for re-engineering.

Summary table

Type Trigger Activity Example
Corrective Bugs/defects Fix errors Crash fix, wrong output fix
Adaptive Environment change Adjust to new environment Port to new OS, new DB
Perfective User needs Enhance/improve Add features, boost performance
Preventive Future risk Re-engineer/harden Refactor, improve docs, code restructuring

Note: reports on maintenance distribution (Lientz & Swanson) show perfective (~50%) and adaptive (~25%) dominate, while corrective is often overestimated; preventive is the smallest but pays off over the long term.

Similar questions

AI LearningWeb Platform

Coursify — Personal AI Course Generator

Struggling with a difficult subject or concept? Turn any engineering topic into a structured course with interactive lessons, quizzes, and research-backed explanations.