Functional vs non-functional requirements
Model answer
Functional requirements describe what the system must do: behaviors, rules and data handling. For example, "a customer can reset their password through an emailed link".
Non-functional requirements (NFRs) describe how well the system must do it, or the constraints it works under: performance, security, availability, usability, accessibility, compliance and scalability. For example, "the reset link expires after 30 minutes" or "the page loads in under 2 seconds for 95% of requests".
A good NFR is measurable. "The system should be fast" cannot be tested, but "search results return within 500 ms at the 95th percentile with 1,000 concurrent users" can.
NFRs are often forgotten during elicitation, yet they drive architecture and cost, so ask about them explicitly and write them with a number and a way to verify.
Key points
- Functional: what the system does
- Non-functional: how well it does it (performance, security, availability)
- Write NFRs as measurable, testable statements
Likely follow-ups
- Give three non-functional requirements for a payment page.
- How do you make a vague NFR such as "easy to use" testable?
Common mistakes
- Writing NFRs without a number or a way to verify them
- Asking only about features and discovering NFRs late