Card 04/ 09

ExampleDifficulty: Beginner1 min

Requirements Example: A Nightly Payroll Report

Nobody waits for it, so latency drops off the list and correctness climbs to the top.

The same sorting into functional and non-functional works on a product with no screen and nobody waiting. Here it is applied to a payroll report that a company runs every night to calculate what each employee is owed.

A nightly payroll report's requirements, sorted
RequirementKindWhy
Calculate each employee's pay from hours and ratesFunctionalWhat the job does
Produce one file for the bankFunctionalWhat the job produces
Every total matches the source records to the pennyNon-functionalHow correct the result must be
A run that fails partway can be restarted without paying anyone twiceNon-functionalHow safely the job recovers
The file is ready by 06:00Non-functionalHow late the result may arrive

What to notice. No requirement here mentions milliseconds. Nobody watches the job run, so latency, the time one response takes, barely matters: the report may take two hours, as long as it is ready by six in the morning. Correctness and safe recovery climb to the top, because a wrong payment is worse than a late one.

What it shares with the food delivery app. The sorting is the same: each non-functional line qualifies a functional one, and deleting it would leave the feature in place. What changes is the ranking. The food delivery app puts speed first because a person is waiting; the payroll job puts correctness first because nobody is. A design copied from one to the other would optimise the wrong thing.

So the second list is chosen afresh for each product, by asking who suffers when each quality is missing.