---
title: "Software maintenance and its types"
subject: "Software Engineering"
chapter: 10
key: "semester_5/software_engineering:maintenance-types"
source: https://www.bctengineer.com/q/semester_5/software_engineering/maintenance-types
site: BCT Engineering
---

# Software maintenance and its types

Software Engineering · Chapter 10: Configuration Management

- Asked in: 2070 Chaitra (old course), 3+7 marks; year not given, 10 marks
- Video: [Perfective, Preventive, Adaptive, Corrective Maintenance in Software Engineering](https://www.youtube.com/watch?v=nulFv99VBGs) — Gate Smashers
- Answer checked by Claude Opus 5.5 (high effort) on 2026-10-14
- Page: https://www.bctengineer.com/q/semester_5/software_engineering/maintenance-types
- Whole chapter: https://www.bctengineer.com/md/semester_5/software_engineering/chapter-10

## Question

What is software maintenance? What are the types of software maintenance? Explain with example.

## Short answer

Software maintenance is modifying a delivered system to correct faults, improve performance, or adapt to a changed environment. Its types are corrective (fix bugs), adaptive (new environment), perfective (add/improve features), and preventive (restructure for easier future maintenance).

## Answer

#### Software maintenance

**Software maintenance** is the process of modifying a software system after it has been delivered, to correct faults, improve performance or other attributes, or adapt it to a changed environment (IEEE). Software must keep changing to stay useful, so maintenance usually takes the largest share of total life-cycle cost, often 60–80%.

#### Types of software maintenance

**1. Corrective maintenance**
- Fixing faults (bugs) found by users after delivery.
- Faults may be coding errors (cheap to fix), design errors, or requirements errors (most expensive).
- Example: in a college library system, the fine for late returns is calculated wrongly for leap years. The calculation is corrected.

**2. Adaptive maintenance**
- Changing the software so that it works in a new or changed environment: hardware, operating system, database, network, laws or business rules.
- Functionality is not changed; only the environment it works in.
- Example: the library system is moved from a Windows desktop to a web server, or updated because the government changes the tax (VAT) rate used in billing.

**3. Perfective maintenance**
- Adding new features or improving existing ones (performance, usability) in response to user requests.
- This is the largest share of maintenance work.
- Example: users request that the library system send SMS reminders before due dates, and that searching be made faster.

**4. Preventive maintenance**
- Changing the software to make future maintenance easier and to prevent future problems, without changing visible behaviour.
- Includes restructuring code, improving documentation and removing duplicate code (re-engineering and refactoring).
- Example: the library system's large, tangled "issue book" module is split into smaller, well-documented functions.

**Distribution of maintenance effort** (approximate, Sommerville)

```text
Functionality addition or modification  ~65%
###########################################
Environmental adaptation                ~18%
############
Fault repair                            ~17%
###########
```

(Preventive maintenance, when counted separately, is a small share of a few percent.)

| Type | Reason | Changes functionality? |
|---|---|---|
| Corrective | Fix faults | No (restores intended function) |
| Adaptive | New environment | No |
| Perfective | New or better features | Yes |
| Preventive | Easier future maintenance | No |

**Maintenance process:** whatever the type, a change follows the same steps (Sommerville):

```text
Change request --> Impact analysis --> Release planning
                                             |
  System release <-- Testing <-- Change implementation
```

1. **Change request:** a user or manager asks for a fix, an adaptation or an enhancement.
2. **Impact analysis:** find which components are affected and estimate cost and risk.
3. **Release planning:** group approved changes (fault repairs, adaptations, new features) into the next release.
4. **Change implementation:** understand the existing code, make the change and update documents.
5. **Testing and release:** regression-test the system so the change does not break existing features, then release the new version.

**Factors that increase maintenance cost:** poor documentation, poor program structure, staff turnover, the age of the system, contracts that separate development from maintenance, and weak programming skills of maintenance staff.

Good design (modularity, low coupling, high cohesion, clear documentation) reduces all four kinds of maintenance cost.

## Check yourself

The answer's key points as multiple-choice questions, with the correct option and why.

1. A library system calculates late fines wrongly for leap years and the calculation is fixed. Which type of maintenance is this?
   A. Adaptive
   B. Perfective
   C. Corrective
   D. Preventive
   Answer: C. Corrective maintenance fixes faults found after delivery. (Key point: Corrective maintenance)

2. The government changes the VAT rate and the billing software is updated. Why is this adaptive maintenance?
   A. It adds a new feature requested by users
   B. It restructures code to ease future work
   C. It fixes a coding bug
   D. It changes the software to suit a changed environment (law or business rules) without new functionality
   Answer: D. Adaptive maintenance responds to changes in hardware, OS, laws or business rules, not new user features. (Key point: Adaptive maintenance)

3. Which activity is preventive maintenance?
   A. Splitting a large tangled module into smaller documented functions without changing behaviour
   B. Adding SMS reminders
   C. Moving the system from Windows to a web server
   D. Fixing a crash reported by a user
   Answer: A. Preventive maintenance restructures and documents software to make future maintenance easier without changing visible behaviour. (Key point: Preventive maintenance)

4. Which is correct about maintenance effort and process?
   A. Fault repair takes the largest share of effort
   B. Functionality addition or modification is the largest share, and a change request is followed by impact analysis
   C. Change implementation comes before impact analysis
   D. Regression testing is skipped for small changes
   Answer: B. About 65% of effort goes to functionality changes (perfective), and the process runs change request, impact analysis, release planning, implementation, then testing and release. (Key point: Maintenance process and effort)

## Related in Software Engineering

- [Maintenance types; design for maintainability](https://www.bctengineer.com/question.md?key=semester_5%2Fsoftware_engineering%3Amaintainability) — Software Engineering, chapter 10

## Related in other subjects

- [Software maintenance and fixing common bugs](https://www.bctengineer.com/question.md?key=semester_5%2Finstrumentation_ii%3Asw-maintenance-bugs) — Instrumentation II, chapter 9
