Non-Functional Requirements Definition
Turns quality wishes into requirements that can be tested — and asks the requester for every number instead of supplying one.
Deliverable
One Markdown document, nfr-specification.md, in the structure set out under Output below. It is the input to System Architecture Specification, which cannot shape a deployment without it.
Required inputs
- What the system is for — who uses it, what they use it for, and what breaks for them when it degrades.
- The expected load, as stated by the requester — how many users, how often, and what the peak looks like. Stated by a person or measured from a system; never derived by this skill.
- The operating constraints — where the system runs, what it must interoperate with, and the obligations it carries.
If the purpose is absent, stop and report it. If load or constraints are absent, produce the specification with every affected threshold marked unresolved and name who must supply it. A load figure invented here would be tested against, met, and still unrelated to the system.
Optional inputs
- Measurements from the system as it runs now, or from the system it replaces
- The obligations that apply: regulatory, contractual, accessibility, data residency
- What the business attaches to degradation and to unavailability, in its own terms
- The environments and instrumentation available for measuring each attribute
- The users and their conditions: devices, networks, assistive technology, locale
- The requirements set for an earlier version, and which of them actually held
An absent optional input never becomes a number. Where no measurement is available, the requirement names the metric, the observation point and the method, and leaves the threshold unresolved with the person who must set it.
Execution
1 — Take the wishes verbatim. Record every quality statement in the words it arrived in, with who said it and when. Fast, reliable and secure are recorded exactly as written. They are the input to this skill, not its output, and rewriting them at this stage loses the person behind them.
2 — Attach each wish to an attribute. Performance, availability, scalability, security, operability, accessibility, compliance. A wish that touches several is split into one wish per attribute so each can be measured separately. A wish that fits none is carried forward as unresolved rather than forced into the nearest heading.
3 — Name the metric before the number. For each attribute in play: what is measured, in what unit, and observed where — at the client, at the system boundary, or inside a component. A metric agreed before a threshold is argued over is an argument about the system. The reverse is an argument about the number.
4 — Ask the requester for the threshold. Every threshold comes from the person accountable for the outcome or from a measurement of a running system. A threshold that neither source supplies is recorded unresolved — required from <name>. This skill proposes no value, not a target, not a floor, and not a conservative placeholder.
5 — State the condition each requirement holds under. The load, the data volume, the environment, the concurrency, and the period over which the measurement is taken. A threshold with no stated condition is met trivially: at rest, with no data, by a single user, on the fastest network available.
6 — State the consequence of missing it. What happens to the user, what happens to the business, and what happens to the release. A requirement whose consequence is that nothing happens is a preference; it is recorded as one and removed from the set that gates a release, so the gating set stays credible.
7 — Check the set against itself. Requirements that cannot all hold at once — the cost of one against the responsiveness of another, the isolation of one against the operability of another — are recorded as a trade-off with the person who must resolve it. They are never averaged into a set that looks achievable.
Output
nfr-specification.md, in this order:
- 1. Input and date — the purpose, the stated load, the constraints, who supplied each, and when
- 2. Wishes as received — verbatim, with who said it and when
- 3. Requirements — per requirement: attribute, metric, unit, observation point, threshold or
unresolved, condition, measurement method, consequence
- 4. Unresolved — per item: the metric, why no threshold exists, and the person who must set it
- 5. Preferences — wishes with no consequence, kept out of the gating set and recorded as preferences
- 6. Conflicts — requirements that cannot hold together, and the person who must resolve the trade-off
- 7. Measurement plan — per metric: how it is measured, where, how often, and by whom
- 8. Open questions — the question, what it blocks, who can answer it
Validation
The specification is ready when all of these hold:
- Every wish in section 2 appears exactly once in section 3, 4 or 5
- Every requirement in section 3 names a metric, an observation point and a measurement method
- Every requirement in section 3 carries either a threshold with its source or the marker
unresolved
- Every requirement in section 3 states the condition it holds under and the consequence of missing it
- No threshold appears whose source is neither an input nor a measurement
- Section 4 names a person against every unresolved threshold
Fail the run if any threshold appears without a source, or if a wish has been converted into a number that no input supplied.
Failure handling
- No stated purpose — stop. Report that quality attributes cannot be ordered without knowing what the system is for, and that every attribute looks essential in isolation.
- No load figures — produce the full specification with every load-dependent threshold
unresolved, name who must supply the figures, and state that nothing in the set can be tested until they exist.
- A number is demanded and none exists — deliver the metric, the observation point, the method and the condition, and leave the threshold
unresolved. Report that a threshold chosen here would be measured, met, and meaningless.
- Contradictory wishes from different people — record both verbatim with both names, and raise the conflict in section 6 for a named person to resolve. Do not merge them into a middle value.
- Partial material — specify the attributes the material supports, mark the rest
INCOMPLETE — pending <question>, and deliver.