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
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.
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.
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