What is a Non-Functional Requirement (NFR)?
Non-functional requirements (NFRs), also known as quality attributes, define how well a system must perform its functions rather than what it must do. While functional requirements specify features (e.g., "the user can log in"), NFRs define the system's operational constraints (e.g., "the login process must take less than 2 seconds under load").
According to software engineering studies, over 50% of production performance failures originate from poorly defined or omitted non-functional requirements during the early design phases.
What are the Main Categories of Non-Functional Requirements?
Modern business analysis frameworks, including the IIBA BABOK Guide, classify non-functional requirements into several core quality attributes. Presenting these with specific, measurable metrics is key to successful implementation.
| Quality Attribute | Definition | Metric / Target Example |
|---|---|---|
| Performance | How fast the system responds under typical and peak loads. | Response time $< 1.5$ seconds for 95% of API requests. |
| Availability | The percentage of time the system is fully operational. | 99.9% uptime SLA (allowing max 8.76 hours of downtime/year). |
| Security | Protection of data against unauthorized access and compliance. | Data encryption at rest via AES-256; compliance with GDPR. |
| Scalability | The ability to handle growing volumes of users or data. | Support for a $300%$ spike in traffic without degraded response. |
| Usability | The ease of use, accessibility, and learning curve. | Compliance with WCAG 2.1 AA accessibility guidelines. |
| Maintainability | The effort required to update or repair the system. | Maximum Mean Time to Repair (MTTR) of under 2 hours. |
Why are NFRs Critical for Project Success?
A common pitfall in software engineering is focusing exclusively on functional user stories while leaving NFRs as an afterthought. This neglect leads to a system that functions correctly in testing but collapses under actual production load.
On the Uvents project, I worked closely with the lead architect to write detailed non-functional requirements early in the lifecycle, with a specific focus on scalability and data storage. The client aimed to scale the platform to multiple universities. Our early NFR analysis showed that the initial database architecture could not support this scale cost-effectively. By defining these performance boundaries early, we saved the client from a costly infrastructure redesign six months later.
This collaboration between business analysis and architecture allowed us to structure the non-functional requirements in a way that significantly reduced long-term infrastructure and maintenance costs.
How to Manage NFRs in Agile Delivery?
In Agile frameworks, non-functional requirements rarely live as independent user stories because they do not deliver isolated business value. Instead, they are managed through:
- The Definition of Done (DoD): Global NFRs (such as security standards, code quality, or automated test coverage) are baked into the criteria that every single story must meet before being marked done.
- Acceptance Criteria: Story-specific constraints (e.g., "this specific search page must load in under 1 second").
Exam Tip: How Does CBAP Test Non-Functional Requirements?
🎓 CBAP Exam Tip: The IIBA BABOK Guide distinguishes functional requirements (what the system does) from non-functional requirements (how well it behaves).
- Functional: "The system shall allow users to process payments."
- Non-Functional: "The payment transaction must complete within 2 seconds with 99.9% reliability."
The CBAP exam frequently tests your ability to identify and separate these two requirement types based on scenario questions.
