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

Festival system structure chartFestival management systemmanage programmemanage bookingsproduce informationvalidate times; detect clashescheck capacity; store bookingbuild schedule; access routeEach box has one coherent responsibility and exchanges named data through an interface.

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

ComponentInput dataResult
validate_slotproposed start and end times; existing slotsBoolean value or clash details
check_capacityrequested count; capacity; number bookedBoolean value and remaining count
build_access_routestart; destination; access needsroute 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.

Multiple choice1 mark

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
Written answer4 marks

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.

Written answer5 marks

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.

Written answer8 marks

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.

Fill in the blanks4 marks
Decomposition breaks a larger problem into smaller checkpoint gap 1. Problem components describe what must be checkpoint gap 2, while solution components are designed modules with a coherent checkpoint gap 3. Named data should pass through each component's checkpoint gap 4.

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.