Skip to content

Requirements and quantified non-functional requirements

An NFR you cannot fail is not a requirement yet: give it a metric, a percentile, a load and a window.

Predict first

Before you read: predict

The proctor console's product owner asks that new alerts "show up fast" for proctors.

Which rewrite should the team adopt as the requirement?

Pick one

The 30-second version

A functional requirement is something the system lets a user do. A non-functional requirement says how well, and it becomes a requirement only when it names a metric, a percentile (never the average), the load and the window. Then a test can fail it. Availability turns into allowed downtime: (1 − target) × window.

An NFR you cannot fail is not a requirement yet: give it a metric, a percentile, a load and a window.

How it works

Step 1 of 10

A functional requirement is something a user can do, such as "shoppers can save a basket". It is built or it is not.
In the kitchen
  • empty the bins, restock the washrooms → functional requirements (step 1)

Analogy: An office-cleaning contract

A landlord hires cleaners for a twelve-floor office. "Clean the offices, empty the bins, restock the washrooms" is the work. "Keep it spotless" is a wish. The contract instead says: 95 of every 100 spot checks pass, on all 12 floors, before 08:00 each weekday.

In the cleaning contract In requirements
empty the bins, restock the washrooms functional requirements (step 1)
"keep it spotless" an adjective, not an NFR (step 3)
95 of 100 spot checks pass metric and percentile (steps 3–4)
all 12 floors, before 08:00 each weekday load and window (steps 3, 5)
an inspector checking one floor on a Sunday a test at the wrong load and window (step 6)
a cleaner on call for 99.5% of opening hours availability, turned into minutes without cover (step 7)
separate headings: hygiene, supplies, key security, spills quality characteristics (step 8)
two cleaners off sick: window polishing waits, washrooms do not which target gives way first (step 10)

In real terms: a requirement is only as good as the check that can fail it; the four parts make that check possible.

Breaks down when: a landlord's inspector sees every floor. A service's users see only their own requests, and one bad request in twenty never shows up on a dashboard average. Wrong inference: "if the average spot check passes, every tenant is happy." The tail is the percentile's job (step 4).

Contrasting case: a contract that only lists the tasks, with no spot checks. Everything is functional; nothing can be failed on quality.

Examples, run for real

4.1 ExamHall: status tiles that passed their check

EXH-1670: at 09:00 on ECON-201 day, proctors' candidate status tiles ran seconds behind. The release check had passed. The requirement said "under 2 s on average", and it was checked in a rehearsal with 240 candidates. MR !1870 rewrote it with all four parts. The samples below are synthetic, from a seeded generator.

rehearsal       n=240  mean 0.9 s · p95 (rank 228) 1.4 s · max 1.5 s
  old "under 2 s on average":           PASS
  new "p95 <= 2 s at 2,400, 09:00-09:10": NOT A TEST (load differs)
09:00 exam day  n=2400 mean 1.5 s · p95 (rank 2280) 6.5 s · max 9.0 s
  old "under 2 s on average":           PASS
  new "p95 <= 2 s at 2,400, 09:00-09:10": FAIL

The old wording passed twice: the average hid the tail (step 4), and the rehearsal ran at a tenth of the load (step 5). The new wording refuses the rehearsal as evidence and fails the real morning (step 6).

4.2 Proof domain, e-commerce catalog: nines as minutes

The catalog runs its search API at 99.5% and checkout at 99.99%. Allowed downtime is (1 − target) × window:

search API   99.50%  day: 7.2 minutes · 30-day month: 3.6 hours · 365-day year: 43.8 hours
checkout     99.99%  day: 8.6 seconds · 30-day month: 4.3 minutes · 365-day year: 52.6 minutes
99.99% over a 365-day year = 52.56 minutes; SRE book says 52.56: true

Each extra nine divides the allowance by ten, and the window decides the number (step 7). A target with no window has no allowance to check against. The last line reproduces the SRE book's figure.

Try it

Answer first, then check. Nothing is saved.

Question 1 of 6

The catalog's search requirement is "p95 latency ≤ 400 ms at 150 queries/s, 18:00–20:00", with the p95 taken by nearest-rank: sort the n values and take the one at rank ⌈0.95 × n⌉. A load test at 150 queries/s from 18:00 to 20:00 sampled 20 searches, in ms: 240, 110, 380, 150, 1200, 170, 200, 135, 300, 190, 260, 430, 120, 220, 330, 160, 280, 140, 210, 180.

What is the verdict?

Pick one

Question 2 of 6

The catalog's flash-sale service must be "99.95% available, measured per 4-hour sale window".

How much downtime, in total, can one sale window have and still meet it (rounded to one decimal)?

Pick one

Question 3 of 6

At 14:00 the catalog's stock database loses a disk and the shop takes no orders for 20 minutes. The team adds a requirement for next time: within 30 minutes of such a failure, checkout accepts orders and every stock count equals the last confirmed order.

Which ISO/IEC 25010 sub-characteristic does this requirement belong under?

Pick one

Question 4 of 6

For the sale weekend the catalog team can meet only three of its four product-page targets with the servers it has. On the product page a shopper picks a size, sees whether that size is in stock and adds it to the basket. The page also carries a strip of the products the shopper opened earlier.

Which target should the team relax?

Pick one

Question 5 of 6

The catalog's product-detail API promises 99.9% availability. On 14 September it had one outage of 30 minutes, and none on any other day. Finance reads the target per 30-day month; the on-call team reads it per calendar day.

Which verdicts do the two readings give?

Pick one

Question 6 of 6

The catalog team's requirements for faceted search file four lines under "non-functional". One of them belongs under "functional".

Which of the four lines is it?

Pick one

Go deeper

Pro tips
  1. Write the release gate from the requirement's own four parts. Make the load-test script refuse a run whose load or window differ from the requirement, and apply the percentile method the requirement names. When: the first time an NFR gates a release (steps 5–6). Verify:
    NOT A TEST: ran at 30/s, Sunday 03:00-05:00; requirement is 120/s, weekdays 12:00-14:00
    PASS: p99 (nearest-rank, rank 198 of 200) = 227 ms vs 250 ms
    FAIL: p99 (nearest-rank, rank 198 of 200) = 900 ms vs 250 ms
  2. Keep the list short. In a design round, name the three to five qualities that shape this system and quantify those, rather than reciting every characteristic. When: the requirements minutes of an interview. Status: DOC (Hello Interview, Delivery framework: "You'll want to identify the top 3-5 that are most relevant to your system."); not run.
Source
  • Functional requirements as "Users/Clients should be able to..." statements; non-functional requirements as "statements about the system qualities"; "where possible, are quantified"; the durability contrast (a social network vs a banking system); "top 3-5". Supports steps 1–3 and 10. Valid as of 2026-09-29.
  • ISO/IEC 25010:2023 product quality model, as rendered by the ISO 25000 portal: https://iso25000.com/index.php/en/iso-25000-standards/iso-25010 and ?start=5 · fetched 2026-09-29, saved as iso25010-portal-p1.txt and iso25010-portal-p2.txt. Nine characteristics; Reliability's sub-characteristics Faultlessness, Availability, Fault tolerance, Recoverability; Security's Integrity; Performance efficiency's Time behaviour; Maintainability. Supports steps 2, 8 and 9. The standard itself is paywalled and was not read. Valid as of 2026-09-29.
  • Google, Site Reliability Engineering, ch. 3 "Embracing Risk": https://sre.google/sre-book/embracing-risk/ · fetched 2026-09-29, saved as sre-embracing-risk.txt. Time-based availability over a period ("99.99% can be down for up to 52.56 minutes in a year"); "100% is probably never the right reliability target"; optional data in a "cheaper, less reliable, less fresh" store; the risk of exposing private data. Supports steps 7 and 10. Valid as of 2026-09-29.
  • Google, Site Reliability Engineering, ch. 4 "Service Level Objectives": https://sre.google/sre-book/service-level-objectives/ · fetched 2026-09-29, saved as sre-service-level-objectives.txt. Averages obscure tail latencies; percentiles preferred; variance "exacerbated at high load by queuing effects"; objectives "should specify how they're measured and the conditions under which they're valid". Supports steps 3–5. SLOs and error budgets themselves are not taught here (obs-slo-error-budget-burn). Valid as of 2026-09-29.

Checked against the tools and docs as of 2026-09-29.