Software Engineering basics - Non-Functional Requirements

Non-Functional Requirements (NFR) in Software Engineering

A Non-Functional Requirement (NFR) defines the quality attributes, constraints, and standards of a system rather than specific behaviors.
They describe how well the system performs a function, not what the function is.


Definition

  • Non-functional requirements specify the criteria for judging the operation of a system.

  • They answer the question: “How should the system work?”


Examples of Non-Functional Requirements

  1. Performance – The system shall process 1000 transactions per second.

  2. Security – Data shall be encrypted using AES-256.

  3. Usability – The system shall be easy enough for a new user to learn within 1 hour.

  4. Reliability – The system shall have 99.9% uptime.

  5. Scalability – The system shall support 10,000 concurrent users.

  6. Portability – The software shall run on Windows, Linux, and macOS.

  7. Maintainability – The system shall allow code changes with minimal impact on existing modules.


Types of Non-Functional Requirements

  • Product Requirements → Performance, reliability, usability, efficiency.

  • Organizational Requirements → Delivery deadlines, development standards, compliance.

  • External Requirements → Legal, regulatory, safety, ethical requirements.


Difference from Functional Requirements

  • Functional RequirementsWhat the system does. (e.g., "The system shall send notifications to users.")

  • Non-Functional RequirementsHow well the system works. (e.g., "The system shall send notifications within 5 seconds.")

In short: Non-functional requirements define the quality standards and constraints that ensure the system is reliable, secure, and efficient, making it acceptable for real-world use.

 

Would you like me to prepare a comparison table of Functional vs Non-Functional Requirements for quick revision?