Study Guide

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.

πŸ“˜ Definition

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

πŸ“ Worked Example

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. 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. 2

    Match the change driver to the maintenance types: adaptive maintenance covers modifications to meet new external environmental or regulatory requirements.

  3. 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

πŸ“ Worked Example

Give two specific common causes of corrective maintenance.

  1. 1

    Recall that corrective maintenance fixes existing faults in the software.

  2. 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. 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.

πŸ“ Worked Example

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. 1

    Calculate total maintenance cost over the 10-year lifetime:

  2. 2
    10Γ—45000=45000010 \times 45000 = 450000
  3. 3

    Calculate total lifecycle cost, which is initial development plus total maintenance:

  4. 4
    200000+450000=650000200000 + 450000 = 650000
  5. 5

    Calculate the percentage of total cost spent on maintenance:

  6. 6
    (450000650000)Γ—100β‰ˆ69.2%\left(\frac{450000}{650000}\right) \times 100 \approx 69.2\%
  7. 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.

πŸ“ Worked Example

Explain why regression testing is required for almost all software maintenance work.

  1. 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. 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. 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.