Non-functional requirement (NFR)
A non-functional requirement (NFR) is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviours.
They are contrasted with functional requirements that define specific behaviour or functions
What is NFR?
Non-functional requirements are the qualities or characteristics of a software system that define its overall behavior, but do not relate to specific functions or features. These requirements describe how the system performs, rather than what it does. Non-functional requirements can be grouped into various categories such as:- Performance: This category deals with the response time, throughput, and resource utilization of the system. Examples include system availability, response time, scalability, and reliability.
- Usability: This category deals with how easy and intuitive the system is to use. Examples include accessibility, user interface design, and user experience.
- Security: This category deals with the protection of the system and its data from unauthorized access, modification, or destruction. Examples include data privacy, authentication, and authorization.
- Maintainability: This category deals with how easy it is to maintain and modify the system over time. Examples include code maintainability, extensibility, and testability.
- Compatibility: This category deals with how well the system can integrate with other systems, software, and hardware. Examples include platform compatibility and data format compatibility.
- Legal and Regulatory: This category deals with the legal and regulatory requirements that the system must comply with. Examples include data protection regulations and software licensing requirements.
Non-functional requirements are essential to ensure that the software system meets the desired level of performance, usability, security, and maintainability, among other factors. They are often overlooked in the requirements gathering process, but neglecting them can lead to significant problems in the functionality and performance of the system.
- Snippet from Wikipedia: Non-functional requirement
In systems engineering and requirements engineering, a non-functional requirement (NFR) is a requirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviours. They are contrasted with functional requirements that define specific behavior or functions. The plan for implementing functional requirements is detailed in the system design. The plan for implementing non-functional requirements is detailed in the system architecture, because they are usually architecturally significant requirements.
In software architecture, non-functional requirements are known as "architectural characteristics". Note that synchronous communication between software architectural components, entangles them and they must share the same architectural characteristics.
- Taxonomy of Non-functional requirements (NFRs).txt
Accessibility Adaptability Auditability and control Availability Backup Capacity Certification Compliance Cost Data integrity Data retention Dependency Deployment Development environment Disaster recovery Documentation Durability Effectiveness Efficiency Emotional factors Environmental Environmental protection Escrow Exploitability Extensibility Failure management Fault tolerance Integrability Internationalization Interoperability Legal Licensing Life-cycle cost Localization Maintainability Manageability Management Modifiability Network topology Open source Operability Patent-infringement Performance Platform compatibility Portability Privacy Quality Readability Recoverability Regulatory Reliability Reporting Resilience Resource constraints Response time Reusability Robustness Safety Scalability Security Serviceability Software Stability Supportability Testability Throughput Transparency Usability Volume