Community resourceWorksheet
OCR H446 2.1.3 Decomposition and solution components
Part 1 of 2 · H446 2.1.3 · Thinking procedurally
Thinking procedurally, OCR H446 2.1.3, starts with breaking a system apart along defensible lines. A student-run festival system and a community equipment-loan service give students practice at giving every component one responsibility and a clear interface.
Students will:
- distinguish the components of a problem from the components of a solution
- give each component a single responsibility with named inputs and outputs
- explain the problems caused by one component doing several unrelated jobs
- propose better boundaries to replace an overloaded component
- decompose an unfamiliar system and state a testing or teamwork benefit that follows
Inside: 7 explanation cells, 1 multiple-choice question, 1 fill-in-the-blanks cell and 3 written answers. 22 marks, about 25 to 35 minutes.
Series: H446 2.1.3 · Thinking procedurally, part 1 of 2.
Shared by Coding PathwayVerified teacher
- 12 cells
- About 30 minutes
- CC BY-SA 4.0
- Shared 31 Aug 2026
- Updated 15 Sept 2026
Preview
The whole resource, exactly as a class sees it. Answers and marking are held back.
Thinking procedurally: breaking a problem into components
A festival-management system must organise a programme, handle bookings and provide information to visitors. Trying to solve all of this as one large problem would be difficult. Decomposition breaks it into smaller sub-problems that can be understood and solved separately.
By the end, you will be able to
- distinguish components of a problem from components of its solution;
- give each solution component one clear job;
- interpret and complete a structure chart;
- explain how decomposition can help testing and team development.
Remember: a function or procedure should normally carry out one clear task. Its interface describes the data it receives and produces.
From requirements to a structure chart
The problem components describe what must be achieved: prevent timetable clashes, keep bookings within capacity and give visitors useful information. The solution components are the modules, functions or procedures designed to perform those tasks.
Decomposition does not mean splitting code into arbitrary short sections. Each component should perform one clear job. Its interface identifies the data that enters the component and any value or change it produces.
Worked component table
| Component | Input data | Result |
|---|---|---|
| validate_slot | proposed start and end times; existing slots | Boolean value or clash details |
| check_capacity | requested count; capacity; number booked | Boolean value and remaining count |
| build_access_route | start; destination; access needs | route instructions |
Decomposition can make testing easier because check_capacity can be tested separately with boundary values. A fault in the capacity rules can be found before the component is joined to the rest of the system. It can also support teamwork: different programmers can develop separate components at the same time, provided that they agree how data will pass between them.
Which option is the best example of decomposition?
- ADividing the festival problem into coherent booking, programme and information subproblems
- BWriting every statement on a separate line
- CRemoving all difficult requirements
- DRunning every component at the same time
Complete the manage-bookings branch of the structure chart with two lower-level components. For each component, give a suitable name, state its one clear job, and identify one input or output.
Use this layout: Component 1: name; job; input or output. Then repeat for Component 2.
Students type their answer here.
Guided practice: improve a poor decomposition
A single component called doEverything validates a booking request, changes the remaining capacity, formats a confirmation email and draws a venue map. These jobs use different data and would be difficult to test as one unit.
A better design separates the jobs. For example, validate_request can return a Boolean value, while reserve_place changes the stored capacity only after validation succeeds. Route building and message formatting can be separate components because neither should decide whether the booking is valid.
Explain one development or testing problem caused by the doEverything component. Then replace it with two better-named components and state the job of each.
Explain why mixing unrelated jobs causes the problem before describing your two replacement components.
Students type their answer here.
Independent transfer: equipment loans
A community hub lends cameras, microphones and tripods. It must register items, find available items, create loans, accept returns and report overdue loans.
Decompose the equipment-loan system into three solution components. For each, state its job and one item of data that enters or leaves it. Then explain one testing or teamwork benefit of your decomposition.
Choose components that together cover the important requirements. Make clear which component changes an item's availability.
Students type their answer here.
Checkpoint
Complete the distinction between problem and solution components from memory. Your teacher will review your answers.
Review your understanding
Before submitting, check that you can break a problem into genuine sub-problems, design solution components with clear jobs and data, and explain how the decomposition helps development.