Card 04/ 09
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.
| Requirement | Kind | Why |
|---|---|---|
| Calculate each employee's pay from hours and rates | Functional | What the job does |
| Produce one file for the bank | Functional | What the job produces |
| Every total matches the source records to the penny | Non-functional | How correct the result must be |
| A run that fails partway can be restarted without paying anyone twice | Non-functional | How safely the job recovers |
| The file is ready by 06:00 | Non-functional | How 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.
← → move through sections and cards