Software maintenance
CIE A-Level Computer ScienceΒ· Unit 12: Software Development, Topic 6Β· 15 min read
1. Core Types of Software Maintenanceβ β ββββ± 5 min
CIE 9618 classifies software maintenance into four distinct categories, grouped by the purpose of the change. All maintenance work occurs after the software has been deployed to end users and is in active use.
Software Maintenance
All activities required to modify, update, correct, and improve a software product after it has been released to production use.
Example:
Patching a newly discovered security vulnerability in a mobile banking app
Type | Core Purpose | Example |
|---|---|---|
Corrective | Fix existing errors/bugs missed during testing | Fixing a checkout crash when an empty cart is processed |
Adaptive | Adapt to new external requirements/environment | Updating an app to run on a new major version of Windows |
Perfective | Add new features or improve user experience | Adding a dark mode to a social media app |
Preventive | Prevent future issues, improve maintainability | Refactoring outdated, undocumented code before it causes errors |
A school's internal attendance system was updated to comply with new government data protection rules. What type of maintenance is this? Justify your answer.
- 1
First, identify the driver of the change: the update is required to meet new external regulatory requirements that did not exist when the system was originally built.
- 2
Match the change driver to the maintenance types: adaptive maintenance covers modifications to meet new external environmental or regulatory requirements.
- 3
Conclusion: This is an example of adaptive maintenance.
2. Common Causes of Software Maintenanceβ β ββββ± 4 min
Maintenance requirements arise from multiple sources across the software lifecycle. Identifying the root cause of a change helps correctly classify the maintenance type in exam questions.
Undiscovered errors and bugs that slipped through pre-release testing
Changes to the operating environment: new hardware, operating systems, or third-party APIs
Changes to legal or regulatory requirements governing the software's use
Evolving user and business needs that require new features or changes to existing workflows
Requirements to improve the long-term maintainability of an aging codebase
Give two specific common causes of corrective maintenance.
- 1
Recall that corrective maintenance fixes existing faults in the software.
- 2
First common cause: Incomplete requirements capture that led to incorrect logic not picked up during development. For example, a tax calculation routine that does not account for newly introduced tax brackets that were added after requirements were finalized.
- 3
Second common cause: Incomplete testing that left edge-case bugs undiscovered before release. For example, a system that crashes when 1000 concurrent users log in, a volume that was never tested during pre-release testing.
3. Costs of Software Maintenanceβ β β βββ± 4 min
For most long-lived software products, maintenance accounts for 60-80% of the total lifecycle cost of the product, far exceeding the initial development cost. Costs include direct labour for changes and testing, plus indirect costs like downtime during updates and user retraining.
A software project has an initial development cost of \45,000 per year for maintenance. What percentage of the total lifecycle cost is spent on maintenance?
- 1
Calculate total maintenance cost over the 10-year lifetime:
- 2
- 3
Calculate total lifecycle cost, which is initial development plus total maintenance:
- 4
- 5
Calculate the percentage of total cost spent on maintenance:
- 6
- 7
This matches the industry rule of thumb that maintenance makes up the majority of total software lifecycle cost for long-lived products.
4. Key Maintenance Activitiesβ β β βββ± 2 min
The standard maintenance workflow follows four key steps: understanding the existing codebase, implementing the required change, testing the change, and deploying the updated version to end users.
Regression testing is the most critical testing step for maintenance: it re-runs all existing tests for affected modules to confirm that the new change did not break any existing working functionality.
Explain why regression testing is required for almost all software maintenance work.
- 1
Any change to existing code can introduce new errors into previously working parts of the system, even if the change itself is correctly implemented.
- 2
Regression testing re-runs existing tests for the affected system modules to confirm that all existing functionality still works as expected after the change.
- 3
Without regression testing, fixing one bug can easily introduce multiple new bugs in unrelated parts of the system, leading to more maintenance work later.
5. Common Pitfalls
Wrong move:
Confusing adaptive and perfective maintenance
Why:
Both are non-corrective changes, leading students to mix them up. Adaptive is for new external conditions, perfective is for new user features.
Correct move:
If the change is required to work with a new external environment, regulation, or hardware, it is adaptive. If it adds new functionality to meet user needs, it is perfective.
Wrong move:
Thinking maintenance only includes fixing bugs
Why:
Only corrective maintenance fixes bugs. Three of the four core maintenance types are non-corrective.
Correct move:
Remember all four categories: corrective, adaptive, perfective, and preventive. Only corrective addresses existing bugs.
Wrong move:
Automatically assuming maintenance is more expensive than initial development
Why:
While true for long-lived software, this is not the case for short-lived projects with a 1-2 year lifetime.
Correct move:
Always calculate total maintenance cost over the product's lifetime when comparing costs, do not rely on assumptions.
Wrong move:
Forgetting that regression testing is a core maintenance activity
Why:
Students often confuse regression testing with pre-release unit testing, and miss it in exam questions about maintenance.
Correct move:
Remember regression testing is specifically re-testing existing functionality after a change, which is a required step for almost all maintenance work.
6. Quick Reference Cheatsheet
Maintenance Type | Core Purpose |
|---|---|
Corrective | Fix existing bugs/defects |
Adaptive | Adapt to new environment/regulations |
Perfective | Add new user features/improve usability |
Preventive | Prevent future problems, improve maintainability |
When this came up on past exams
AI-estimated based on syllabus patterns β cross-check with official past papers for accuracy. Use only as revision-focus signals.
- 2022 Β· 12
Identify maintenance types from scenarios
- 2023 Β· 11
Explain why maintenance costs are high
- 2021 Β· 13
List causes of software maintenance
Going deeper
What's Next
Software maintenance is the final active phase of the software development lifecycle, and questions about classifying maintenance types and explaining maintenance costs are common in Paper 1 of CIE 9618. This topic builds on your understanding of the broader software development lifecycle, and connects to testing methods, requirement analysis, and project management topics that are also regularly tested. Solidifying your knowledge of maintenance classification will help you earn easy marks in scenario-based questions. Explore the related resources below to extend your learning.
