Non-functional Requirements
Definition
Non-functional requirements (NFRs) define quality attributes and constraints on the system — describing how well the system performs its functions, rather than what functions it performs.
Common Categories (often remembered as "-ilities" + others)
| Category | Description | Example |
|---|---|---|
| Performance | Speed, response time, throughput | "System shall respond within 2 seconds for 95% of requests" |
| Reliability | Ability to function without failure | "System shall have 99.9% uptime" |
| Availability | System accessible when needed | "System available 24/7 except scheduled maintenance" |
| Usability | Ease of use, learnability | "New users shall complete signup in under 3 clicks" |
| Security | Protection from unauthorized access | "Passwords shall be stored using bcrypt hashing" |
| Maintainability | Ease of fixing/updating the system | "Modules shall follow single-responsibility for easy patching" |
| Portability | Ability to run across environments | "System shall run on Windows, Linux, and macOS" |
| Scalability | Ability to handle growth in load/users | "System shall support up to 1 million concurrent users" |
| Interoperability | Ability to work with other systems | "System shall expose a REST API for third-party integration" |
| Compliance/Legal | Meeting regulatory standards | "System shall comply with GDPR data protection rules" |
Characteristics
- Often harder to test precisely than functional requirements (require benchmarks/metrics)
- Constrain the design and architecture significantly (e.g., high scalability affects DB choice)
- Frequently trade off against each other (e.g., higher security can reduce usability/performance)
Why NFRs Matter
A system can implement all functional requirements correctly and still fail if it's too slow, insecure, or unreliable — NFRs are often what determines real-world success or failure.
Exam tip: Memorize at least 6–7 NFR categories with one example each — a very common "list and explain" question. Mnemonic: PRAUSMPSIC (Performance, Reliability, Availability, Usability, Security, Maintainability, Portability, Scalability, Interoperability, Compliance).