Reviewing and tracing requirements — Examples
Example 1 — Review against the four defect types
A section of the refund specification comes back with “looks fine, a couple of typos” against it. Run the structured review instead: read each line for missing, ambiguous, contradictory and untestable defects, and label every finding.
REQ-REF-01 Refunds are processed quickly.
REQ-REF-02 A refund must not exceed the original payment.
REQ-REF-03 Refund confirmations are sent by email.
REQ-REF-04 Refund confirmations are sent by post only.
REQ-REF-05 The refund process is reliable under load.
Solution
REQ-REF-01 ambiguous "quickly" has no duration — give a number
REQ-REF-02 passes testable as written
REQ-REF-03 contradictory clashes with REF-04 — pick one channel
REQ-REF-04 contradictory name the exception where post is used
REQ-REF-05 untestable state a load figure and the failure behaviour
Missing no requirement covers the provider refusing a refund
Asking for named defect categories produced defects; asking for “comments” produces typo notes. The missing case is the most valuable finding and only appears because missing is on the checklist. The usual mistake is reviewing alone: the author reads what they meant and passes REQ-REF-01 as obvious.
Example 2 — Trace forward and backward before release
Before the release, build the trace table for the refund feature and read it in both directions — every requirement has a test, and every test traces to a requirement. Two gaps are hiding in the list below.
Requirements Tests Code
REQ-REF-01 refund_within_90_days payment/refund.ts
REQ-REF-02 payment/refund.ts
REQ-REF-03 refund_email_sent notify/email.ts
REQ-REF-04 refund_post_only notify/post.ts
refund_recalc_totals payment/recalc.ts
Solution
REQ-REF-01 refund_within_90_days payment/refund.ts:41
REQ-REF-02 GAP — no test payment/refund.ts:88
REQ-REF-03 refund_email_sent notify/email.ts:12
REQ-REF-04 refund_post_only notify/post.ts:7
refund_recalc_totals GAP — traces to no requirement
REQ-REF-02's test is written before release; the recalculation is
either given a requirement or removed from scope.
Forward tracing catches the untested requirement; backward tracing catches the recalculation that nobody asked for. Stable identifiers such as REQ-REF-02 are what make the table survive a section being reordered. The usual mistake is renumbering requirements on every edit, after which the trace is worthless within a week.