KS5H019/H119 F202 TA2 32 min read 10 question quiz 13 marks of written practice

F202 TA2: Planning the Design of a Spreadsheet Model

Understanding the client and the requirements

Every decision in a model should trace back to something the client needs. Before designing anything, find out:

QuestionWhy it mattersFestival example
Who is the client?The person whose decision the model supportsThe festival committee's chair
Who are the end users?They will type the inputs, so the design has to suit themThree volunteers, none of them confident with spreadsheets
What is the problem?The question the model must answer"What should we charge, and how risky is it?"
What are the inputs?Everything that varies or is assumedPrice, survey results, costs, capacity
What are the outputs?What the client will read and act onProfit, tickets sold, break-even price, a chart
What are the constraints?Limits the solution must respectIt must run in the committee's spreadsheet software, and be ready by March

Requirements that can be tested

A requirement is only useful if you can later prove whether it was met. "The model should be easy to use" cannot be tested. "A volunteer can enter a new price and read the profit without help" can.

WeakStrong, and testable
Calculate the profitR1. Calculate profit for any ticket price from £5 to £60, to the nearest penny
Show if it is goodR2. Show PROFIT in green or LOSS in red beside the profit figure
Compare optionsR3. Compare pessimistic, expected and optimistic scenarios side by side, with a chart
Find the right priceR4. Find the price that gives a profit the committee types in
SafeR5. Users can edit only the input cells; every formula is protected
Easy to useR6. A volunteer can change the price, or find the price for a target profit, without help

Functional and non-functional requirements

  • Functional requirements say what the model must do: calculate, look up, validate, compare, chart.
  • Non-functional requirements say how well it must do it: how easy to use, how secure, how accessible, which software it must run in.
Number your requirements

R1, R2, R3. Every design decision, every test and every paragraph of your evaluation can then point back to a numbered requirement, and whoever marks the work can follow the thread from the brief to the finished model.

Designing the structure and the sheets

One job per sheet

Planning a workbook one job per sheetA workbook planned as five sheets, each with one job. The Inputs sheet holds every value a user may change, shaded, unlocked and validated, with a source for each assumption. The Data sheet holds lookup tables such as ticket types and any imported raw data, left untouched and formatted as named tables. Both feed the Calculations sheet, which holds every formula step by step, refers to names rather than typed numbers, and is locked so that no one types there. Calculations feeds the Dashboard, which shows the four numbers that matter, charts, traffic light formatting and a scenario drop-down. A Guide sheet explains how to use the model, what each output means and the assumptions and limits. A colour key underneath: input cells unlocked with a pale fill and validation; formula cells locked and never typed over; output cells bold and formatted on the dashboard.One job per sheet, and the data flows one wayINPUTS• every value a user may change• shaded, unlocked, validated• each assumption with a sourceDATA• lookup tables: ticket types• imported raw data, untouched• formatted as tables, namedCALCULATIONS• every formula, step by step• uses names, not typed numbers• locked and protected• no one types hereDASHBOARD• the four numbers that matter• charts, traffic lights• scenario drop-downGUIDE• how to use the model• what each output means• assumptions and limitsexplainsInput cellunlocked, pale fill, validatedFormula celllocked: never typed overOutput cellbold, formatted, on the dashboard
If a number is typed in two places, the model will one day disagree with itself.

Separating inputs, data, calculations and outputs is the most valuable design decision in a spreadsheet model. Inputs are in one place, so a user knows where to type. Calculations are in one place, so they can be checked and locked. Outputs are in one place, so the client reads them without wading through the workings.

Designing each sheet

Sketch every sheet before building it, on paper or in a drawing tool. A good design shows:

  • the layout: where each label, input, output and chart sits
  • the data types and formats: currency, percentage, date
  • which cells are inputs, and how each is validated
  • the colour scheme and fonts, used consistently
  • navigation: buttons or hyperlinks between sheets
  • annotations explaining each choice and the requirement it meets
An annotated design for an input sheetA design sketch of a spreadsheet's input sheet, drawn as a grid with columns A, B and C and annotated before anything is built. Row 1 is the title, Harbour Lights ticket model. Rows 3 to 8 are the inputs, each with a label including its unit in column A, a shaded input cell in column B and a note in column C: ticket price 27 pounds 50, between 5 and 60 pounds; demand at zero pounds 600 people, from the residents' survey in May; tickets lost per pound 12, from the same survey; venue capacity 400 people, from the premises licence; cost per attendee 5 pounds, for wristband, toilets and security; fixed costs 4,000 pounds for stage, licence and insurance. Rows 10 and 11 repeat the outputs: profit 2,075 pounds and a status of PROFIT, which turns red if profit falls below zero. Sheet tabs along the bottom read Inputs, Data, Calculations, Dashboard and Guide. Five annotations explain the design: input cells are shaded and unlocked while every other cell is protected; units go in the label so nobody types pence into a pounds cell; the price has decimal validation from 5 to 60 with an input message; every assumption has a source the client can check; and the outputs are repeated on the input sheet so the effect of a change is visible at once.Design sketch: the input sheet, annotated before anything is builtfestival-model-v03.xlsx · InputsABC1Harbour Lights ticket model23Ticket price (£)27.50between £5 and £604Demand at £0 (people)600residents' survey, May5Tickets lost per £112residents' survey, May6Venue capacity (people)400premises licence7Cost per attendee (£)5.00wristband, toilets, security8Fixed costs (£)4,000stage, licence, insurance910Profit (£)2,075from Calculations11StatusPROFITred if profit < 0InputsDataCalculationsDashboardGuide123451Inputs shaded and unlocked;every other cell is protected2Units in the label, so nobodytypes pence into a pounds cell3Validation: decimal, 5 to 60,with an input message4Every assumption has asource the client can check5Outputs repeated here: changea value, see the effect at once
A design is detailed enough when somebody else could build the sheet from it without asking you a question.

Design rules that prevent errors

  • No typed numbers inside formulas. Every assumption lives in a labelled cell, and formulas refer to it.
  • One formula per column. The same calculation is copied down, not rewritten row by row.
  • Units in every label. "Fixed costs (£)", "Capacity (people)".
  • Consistent colour coding for inputs, calculations and outputs, explained in a key.
  • Never colour alone. The status shows the word PROFIT or LOSS as well as green or red, for users who cannot tell the colours apart.
  • A naming convention for files, sheets and named ranges, decided before the first save: festival-model-v03.xlsx, TicketPrice.

Planning the data and the processing

The data dictionary

A data dictionary describes every input and stored field before it exists, so building becomes a matter of following the plan.

NameData typeFormatValidationExampleSource
TicketPriceCurrency£0.00Decimal, 5 to 60£27.50Entered by the user
DemandAtZeroWhole number0Whole number, 100 to 2,000600Residents' survey, May
LostPerPoundWhole number0Whole number, 1 to 5012Residents' survey, May
CapacityWhole number0Whole number, 1 to 2,000400Premises licence
CostPerHeadCurrency£0.00Decimal, 0 to 50£5.00Suppliers' quotes
FixedCostsCurrency£#,##0Decimal, 0 to 50,000£4,000Suppliers' quotes
TicketTypeTextTextList: Adult, Child, Concession, FamilyAdultLookup table on the Data sheet

Where the data comes from

SourceExampleWhat to check
Primary: collected for this purposeThe residents' surveyWas the sample big enough, and representative?
Client recordsLast year's ticket salesIs it complete, accurate and still relevant?
Secondary: published by someone elseOfficial statistics from the ONS or data.gov.ukIs it current, from a reliable publisher, and licensed for reuse?

If the model holds information about identifiable people, such as names on a booking list, the UK GDPR and the Data Protection Act 2018 apply: collect only what the model needs, and keep it secure. The ICO explains what that means in practice.

Cleaning data before it goes in

Imported data is rarely ready to use. Plan how you will deal with duplicates, blanks, inconsistent spellings, numbers stored as text and dates in mixed formats, using tools such as Remove Duplicates, TRIM, Text to Columns and Find and Replace.

A dirty extract and the same rows cleanedOne extract of six rows shown as it arrived and again after cleaning. The dirty version contains six distinct problems. Rows one and two are the same person recorded twice with different capitalisation and a trailing space, which is a duplicate that a naive exact match would miss. The country column holds one real category spelled six ways: UK, U.K., United Kingdom, GB, uk and Uk. The joined column mixes formats, and 03/04/2026 against 4/3/26 is genuinely ambiguous about which is the month. One name and one spend are blank. A spend of 99999 is not a plausible value and is an outlier. The cleaned version standardises the country to the code GB, converts every date to ISO format, merges the duplicate pair into one row, records the missing values explicitly as unknown rather than deleting the rows, and flags the outlier for investigation rather than silently removing it. The decisions matter more than the mechanics: deleting every row with a blank field would have removed whichever source had stopped capturing that field, which biases the result rather than cleaning it.The same six rows, before and afterAS EXTRACTEDidnamecountryjoinedspend1A. ShahUK03/04/2026120.002a. shah U.K.2026-04-031203L. OkaforUnited Kingdom4/3/26—4M. PriceGB03-04-2026999995—uk03/04/202684.506J. AliUk03/04/202676.20AFTER CLEANINGidnamecountryjoinedspend1A. ShahGB2026-04-03120.003L. OkaforGB2026-03-04unknown4M. PriceGB2026-04-03flagged5unknownGB2026-04-0384.506J. AliGB2026-04-0376.20Duplicaterows 1 and 2 are the same person, differently casedInconsistent categoryUK, U.K., United Kingdom, GB, uk, UkInconsistent dates03/04/2026 and 4/3/26 are ambiguousMissing valuesa blank name and a blank spendOutlier99999 is not a plausible spendWhitespace and case'a. shah ' will not match 'A. Shah'Note the decisions: the duplicate was merged, the outlier was flagged not deleted, and the blanks were kept as explicitly unknown.Deleting every row with a blank would have removed whichever source stopped capturing that field.
Cleaning is a set of decisions, not a button. Record which ones you took and why.

The processing plan

Describe every output in words, then as the formula you intend to write. Writing it in words first catches mistakes in the logic before they become mistakes in the brackets.

OutputIn wordsPlanned formula
TicketsSoldDemand at this price, but never more than the capacity=MIN(Capacity, DemandAtZero-LostPerPound*TicketPrice)
RevenueTickets sold times the price=TicketsSold*TicketPrice
TotalCostsFixed costs plus the cost of each attendee=FixedCosts+TicketsSold*CostPerHead
ProfitRevenue minus total costs=Revenue-TotalCosts
StatusPROFIT if profit is at least zero, otherwise LOSS=IF(Profit>=0,"PROFIT","LOSS")

Decisions with several outcomes are clearer as a flowchart than as a formula, and the flowchart belongs in the design: the nested IF diagram in TA3 is an example. Plan each macro as numbered steps too: what starts it, what it does, and what the user sees when it has finished.

Planning is allowed to be wrong

The planned TicketsSold formula above has a flaw: a high price gives negative tickets. Testing finds it, and TA3 shows the fix. A plan that changes because a test caught something is evidence of a real process, so keep the original plan and record the change.

Planning the testing

Write the test plan before building, from the requirements, and work out every expected result by hand. Tests written after the build are shaped by what the model already does, so they can only confirm it.

Types of test data

TypeWhat it isFestival example
NormalSensible data the model should accept and processA price of £27.50
BoundaryValues at the edge of what is allowed, on both sides of the limit£5.00 and £60.00 accepted; £4.99 and £60.01 rejected
InvalidThe right type of data, outside the allowed rangeA price of £75
ErroneousThe wrong type of data altogetherA price of "twenty"

What to test, beyond the inputs

  • every formula, against a result calculated by hand
  • every validation rule, with data on both sides of its boundary
  • every lookup, including a value that is not in the table
  • every macro and button
  • protection: try to type in a locked cell
  • the outputs: do the chart and the dashboard update when an input changes?
  • usability: can a real user complete a task without help? This is user acceptance testing.
A test plan for a spreadsheet modelA test plan for the ticket model with seven tests and the columns number, purpose, test data, type, expected result and actual result. Test 1, normal data: a price of 27.50 should give 270 tickets and a profit of 2,075 pounds, and did. Test 2, normal: a price of 20.00 should give 360 tickets, revenue of 7,200 pounds and a profit of 1,400 pounds, worked out by hand, and did. Test 3, normal: a price of 10.00 gives demand of 480, so the capacity limit should cap tickets at 400, and did. Test 4, boundary: the lowest valid price, 5.00, should be accepted with 400 tickets, and was. Test 5, boundary: the highest valid price, 60.00, should be accepted with 0 tickets and a loss of 4,000 pounds; instead minus 120 tickets were shown, so MAX of 0 was added to the formula and the retest passed. Test 6, invalid: a price of 75 should be rejected with a stop alert, and was. Test 7, erroneous: the text 'twenty' should be rejected with a stop alert, and was. Test 8, normal: a price of 15.00 should give 400 tickets and a profit of exactly zero, the break-even point, and did. Expected results are worked out by hand before the test is run, and the failed test, with its fault, fix and retest, is what makes the log believable.Test plan: written before building, completed while testing#PurposeTest dataTypeExpected resultActual result1Profit at expected priceprice 27.50Normal270 tickets, profit £2,075As expected2Hand-checked calculationprice 20.00Normal360 tickets, revenue £7,200,profit £1,400As expected3Capacity limit appliedprice 10.00Normaldemand 480, so 400 ticketsAs expected4Lowest valid priceprice 5.00Boundaryaccepted; 400 ticketsAs expected5Highest valid priceprice 60.00Boundaryaccepted; 0 tickets,profit −£4,000−120 tickets shown: failedMAX(0, …) added; retest passed6Price above the rangeprice 75Invalidrejected with stop alertAs expected7Wrong data type"twenty"Erroneousrejected with stop alertAs expected8Break-even checkprice 15.00Normal400 tickets, profit £0As expectedExpected results are worked out by hand before the test is run, or there is nothing to compare against.Test 5 failed. The record shows the fault, the fix and the retest, which is what makes the log believable.
Normal, boundary, invalid and erroneous data, plus a hand check of every calculation.
What a test plan shows

Test number, purpose, test data, type of data, expected result, actual result, and the action taken when a test fails. Planning tests you expect to be rejected, such as invalid and erroneous data, shows you understand testing rather than demonstrating that the model works.

Sources and further reading

Key terms you must be able to define

Client
The person or organisation whose decision the model is built to support.
End user
A person who will use the model day to day, such as entering inputs.
Functional requirement
Something the model must do, such as calculate a value or validate an input.
Non-functional requirement
How well the model must work, such as how easy, secure or accessible it is.
Data dictionary
A table describing every field's name, data type, format, validation, example and source.
Processing plan
A description of how each output is calculated, in words and as the intended formula.
Test plan
A table of planned tests, each with its purpose, test data, type and expected result.
Normal data
Sensible data that the model should accept and process correctly.
Boundary data
Data at the edge of the allowed range, tested on both sides of each limit.
Invalid data
Data of the right type but outside the allowed range, which should be rejected.
Erroneous data
Data of the wrong type altogether, which should be rejected.
User acceptance testing
Testing in which real users carry out tasks to confirm the model meets their needs.

Flashcards

DefineClient
AnswerThe person or organisation whose decision the model is built to support.
DefineEnd user
AnswerA person who will use the model day to day, such as entering inputs.
DefineFunctional requirement
AnswerSomething the model must do, such as calculate a value or validate an input.
DefineNon-functional requirement
AnswerHow well the model must work, such as how easy, secure or accessible it is.
DefineData dictionary
AnswerA table describing every field's name, data type, format, validation, example and source.
DefineProcessing plan
AnswerA description of how each output is calculated, in words and as the intended formula.
DefineTest plan
AnswerA table of planned tests, each with its purpose, test data, type and expected result.
DefineNormal data
AnswerSensible data that the model should accept and process correctly.

Reach the top grade on this topic

  • Number the requirements and make every one testable
  • Separate inputs, data, calculations and outputs, and explain why
  • Design every sheet, annotated with the requirement each feature meets
  • Complete a data dictionary with types, formats, validation and sources
  • Describe each output in words before writing it as a formula
  • Write the test plan before building, with expected results worked out by hand

Mistakes that cost marks here

Avoid these
  • Requirements that cannot be tested, such as 'easy to use'.
  • Designing only the dashboard and leaving the input and calculation sheets to chance.
  • Designs with no annotation, so nobody can tell why any choice was made.
  • A data dictionary without validation rules or sources.
  • Test plans written after the build, with expected results copied from the model's own output.
  • Testing only normal data, never the boundaries or invalid entries.
Fun fact

Field audits of real business spreadsheets, summarised by the researcher Raymond Panko, found errors in most of the spreadsheets examined. That is why professional modellers plan and test as carefully as programmers do.

Knowledge check

0 of 10 answered
1Which requirement can be tested?
2Which of these is a functional requirement?
3Why separate inputs, calculations and outputs onto different sheets?
4What does a data dictionary record?
5The valid prices are £5 to £60. Testing with £60.00 uses:
6Typing 'twenty' into the price cell is a test with:
7Why work out expected results by hand before testing?
8Why should the status show the word PROFIT as well as a green fill?
9Which is user acceptance testing?
10Where should an assumption such as cost per head be stored?
Score 0 / 10

Check you could explain this

13 marks
1Explain why a test plan should be written before a spreadsheet model is built.3 marks
Explain

Mark scheme0 / 3
  • LTests are based on the requirements, not on what the build happens to do
  • LExpected results are worked out independently, by hand
  • LProblems are found early, and invalid or boundary cases are planned in
Model answer

A test plan written first is based on the requirements, so it checks what the model should do rather than what the finished build happens to do. Its expected results are worked out by hand before the model exists, which gives an independent answer to compare against; tests written afterwards tend to copy the model's own output and so confirm whatever it does, including its mistakes. Planning the tests also forces the designer to think about boundary, invalid and erroneous data at the design stage, when adding a validation rule or a limit to a formula costs minutes rather than a rebuild.

The marker looks for key phrases. If you said it another way and it is still right, give yourself the mark.

Think this answer or mark scheme is wrong? Report it

2Describe what should be included in the design of an input sheet for a spreadsheet model.4 marks
Describe

Mark scheme0 / 4
  • LThe layout and position of labels and input cells
  • LData types, formats and units
  • LValidation rules and input messages
  • LColour coding, protection, or annotations linked to requirements
Model answer

The design should show the layout of the sheet, with every label and input cell in position, so the builder knows exactly where everything goes. Each input should have its data type, format and unit stated, such as currency to two decimal places in pounds. The validation rule for each input should be given, for example a decimal from 5 to 60 with an input message explaining it, or a drop-down list fed from a named range. Finally, the design should show the colour coding that marks input cells as unlocked and editable, and be annotated to explain each choice and the requirement it meets.

The marker looks for key phrases. If you said it another way and it is still right, give yourself the mark.

Think this answer or mark scheme is wrong? Report it

3A café owner says: "I want a spreadsheet to help me plan my prices."Explain how you would turn this into requirements that can be tested. Give two examples of testable requirements.6 marks
Explain

Mark scheme0 / 6
  • LFind out more from the client, such as by an interview
  • LIdentify the users, the inputs and the outputs
  • LMake each requirement specific and measurable
  • LA first valid testable requirement
  • LA second valid testable requirement
  • LNumber the requirements so tests and evaluation can refer to them
Model answer

The request is a starting point, not a requirement, so I would interview the owner to find out what decision the model is meant to support, who will use it, what data is available and what they need to see. That identifies the inputs, such as the cost of ingredients for each item and the expected number of sales, and the outputs, such as the profit on each item and in total. I would then rewrite each need so that it is specific and measurable, because a requirement is only useful if I can later prove whether it was met. For example: R1, the model calculates the profit per item and for the whole menu for any price the owner enters, to the nearest penny; and R2, a member of staff can change a price and read the new weekly profit without help. Numbering the requirements means each one can be traced to a test in the test plan and to a verdict in the evaluation.

The marker looks for key phrases. If you said it another way and it is still right, give yourself the mark.

Think this answer or mark scheme is wrong? Report it

Machine mark 0 / 13