Functional and non-functional requirements
What it is
Requirements come in two kinds:
- Functional: what the system does. 'Show ten recommended products on the home screen'; 'score every payment for fraud'.
- Non-functional: how well it must do it. Latency, throughput, availability, freshness, cost, privacy.
For ML systems add two more non-functional ones: how fresh the data behind a prediction must be, and how quickly a new model must reach production.
Why it matters
Non-functional requirements decide the architecture.
- 'Recommendations' could be a nightly batch job or a live service; '100 ms, using what the user did in the last minute' decides which.
- Writing both kinds down gives every later decision something to be checked against.
In the real world: A design review at a payments company rejects a fraud proposal in five minutes because it has no stated latency: the payment network allows only a fixed time for a decision.
Listing only functional requirements. Two systems that both 'recommend products' can differ by a factor of a hundred in cost because one needed live features and the other did not.