The opening questions of June 2025 Paper 2 (9618/22) cover the software-engineering side of the course: development life cycles, types of maintenance, stepwise refinement, and testing techniques. These are definition-heavy topics where the examiner wants precise distinctions — so let's nail them down.

📄 The original paper and mark scheme are on the Cambridge International past papers page. Questions below are paraphrased and explained in my own words, with my own examples.

Development life cycles & maintenance

The first question asked why different development life cycles exist, what influences the choice of programming language, reasons for adaptive maintenance, and some data-type/array work.

Why different life cycles? There's no single "best" model — waterfall, iterative, agile, spiral and others each suit different projects. The choice depends on factors like the complexity of the problem, the team's experience, the budget and timescale, how clear the requirements are at the start, and how involved the client needs to be throughout. The mark is for recognising that the model is matched to the project, not chosen by habit.

The three types of maintenance — and the distinction examiners test hardest:

TypeTriggered byExample
CorrectiveAn error found after releaseFixing a bug that miscalculates a total
AdaptiveA change in the environment or requirementsNew legislation, new hardware, or an updated library
PerfectiveA desire to improve a working systemMaking it faster or easier to use

The misconception that costs marks: swapping adaptive and corrective. Corrective = fixing something that was broken; adaptive = changing something because the world around it changed. A new tax law forcing a payroll update is adaptive, not corrective — nothing was broken.

For the data-type and array parts, the skill is reading an expression and stating what it evaluates to: a string-slicing function returns a STRING, a multiplication involving a decimal returns a REAL, and a logical operator like NOT returns a BOOLEAN. For arrays, remember a 2-D array's total size is the product of its two dimension ranges, and a declaration states both ranges, e.g. DECLARE Product : ARRAY[0:99, 0:9] OF INTEGER.

✏️ Practice it: "A school's reporting system must be changed because the government has introduced a new grading scale. State which type of maintenance this is and justify your answer."

Stepwise refinement & testing

The second question asked candidates to describe stepwise refinement, give white-box test cases, describe stub testing, and identify an error type found by black-box testing.

Stepwise refinement means breaking a problem into smaller and smaller sub-tasks until each one is simple enough to code directly. It makes a program easier to design, test and debug, because you can build and check each piece in isolation.

The three testing terms — get the distinction precise, because they're easy to muddle:

  • White-box testing chooses test data to exercise the different paths through the code — you can see the code and deliberately test each branch and loop.
  • Black-box testing checks inputs against expected outputs without looking at the code — good for catching logic errors (wrong result from valid input) and run-time errors.
  • Stub testing uses temporary placeholder modules that stand in for parts not yet written, returning fixed expected values so the rest of the program can be tested before it's complete.

For white-box test cases, pick inputs that drive different branches. For a pay-with-bonus calculation, for instance, choose one set that should award no bonus and one that should — proving both routes through the IF work. The examiner wants cases that test distinct outcomes, not two that do the same thing.

✏️ Practice it: "A function awards a discount only when an order is over £100. Give two white-box test values — one that should trigger the discount and one that shouldn't — and state the expected output of each."

Quick recap

  • Life cycle choice depends on the project (complexity, team, budget, requirements) — no model is universally best.
  • Maintenance: corrective = fix a bug; adaptive = respond to a changed environment/law/hardware; perfective = improve a working system. Don't swap the first two.
  • Stepwise refinement breaks problems into codeable steps; white-box tests code paths, black-box tests input/output behaviour, and stub testing stands in for unfinished modules.

Part 2 https://www.techiemike.com/cambridge-as-a-level-computer-science-june-2025-paper-2-9618-22-algorithms-data-structures-sorting/

Part 3 https://www.techiemike.com/cambridge-as-a-level-computer-science-june-2025-paper-2-9618-22-records-files-programming-techniques/

Techie Mike
Techie Mike
Computer Science teacher in Thailand. 10+ years Cambridge IGCSE, 4 years AS/A Level. BSc Computer Science & Engineering. Ex-Intel, Virgin Media. Practical exam prep, past paper walkthroughs and tech tutorials.