What Is a Requirement?
A requirement is a statement of what a system shall do or what qualities it shall have. Requirements drive all design decisions and serve as the basis for testing. Every requirement must ultimately be verified.
The word "shall" is the engineering standard for mandatory requirements. "Should" means desirable but not mandatory. "Will" describes facts or declarations of intent.
Functional vs. Non-Functional Requirements
- Functional: What the system does — "The system shall allow users to log in with a username and password."
- Non-functional: How well the system does it — "The login system shall respond within 1.5 seconds for 99% of requests."
- Constraints: Limits on design — "The system shall comply with HIPAA regulations."
Non-functional requirements (NFRs) include performance, security, usability, reliability, and maintainability.
SMART Requirements
Good requirements are SMART: Specific, Measurable, Achievable, Relevant, and Testable (Verifiable). Every requirement must be provable true or false by inspection, analysis, demonstration, or test.
Requirements Flowdown
System-level requirements flow down to subsystems, which flow down to components. Each child requirement must be traceable to its parent requirement — this is captured in a Requirements Traceability Matrix (RTM).