Insystems engineering andrequirements engineering, anon-functional requirement (NFR) is arequirement that specifies criteria that can be used to judge the operation of a system, rather than specific behaviours. They are contrasted withfunctional requirements that define specific behavior or functions. The plan for implementingfunctional requirements is detailed in thesystemdesign. The plan for implementingnon-functional requirements is detailed in thesystemarchitecture, because they are usuallyarchitecturally significant requirements.[1] Non-functional requirements are also known as cross-functional requirements by some.[2]
Insoftware 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.[3]
Broadly, functional requirements define what a system is supposed todo and non-functional requirements define how a system is supposed tobe.Functional requirements are usually in the form of "system shall do <requirement>", an individual action or part of the system, perhaps explicitly in the sense of amathematical function, ablack box description input, output, process and controlfunctional model orIPO model. In contrast, non-functional requirements are in the form of "system shall be <requirement>", an overall property of the system as a whole or of a particular aspect and not a specific function. The system's overall properties commonly mark the difference between whether the development project has succeeded or failed.
Non-functional requirements are often called the "quality attributes" of a system. Theemergent properties[Note 1] of a system are classified as non-functional requirements. Other terms for non-functional requirements are "qualities", "quality goals", "quality of service requirements", "constraints", "non-behavioral requirements",[4] or "technical requirements".[5] Informally these are sometimes called the "ilities", from attributes like stability and portability. Qualities—that is non-functional requirements—can be divided into two main categories:
As non-functional requirements are all requirements that do not fall into the functional requirements category, they also include both characteristics of the functions and constraints on the system such as non-design items of statutory, regulatory, standards and protocols, or other external requirements.
It is important to specify non-functional requirements in a specific and measurable way.[8][9]
Common non-functional classifications, relevant for all types of systems include[10]
Specific type of systems explicitly enumerate categories of non-functional requirements in their standards[to be determined]
This articleneeds additional citations forverification. Please helpimprove this article byadding citations to reliable sources. Unsourced material may be challenged and removed. Find sources: "Non-functional requirement" – news ·newspapers ·books ·scholar ·JSTOR(February 2023) (Learn how and when to remove this message) |
A system may be required to present the user with a display of the number of records in a database. This is a functional requirement. How current this number needs to be, is a non-functional requirement. If the number needs to be updated inreal time, the system architects must ensure that the system is capable of displaying the record count within an acceptably short interval of the number of records changing.
Sufficient network bandwidth may be a non-functional requirement of a system. Other examples include:
The term "non-functional requirement" is criticized for being seen as amisnomer diminishing of the importance of the set of requirements it covers.[11][12] In its place, the term "cross-functional requirement" (CFR) has been proposed and adopted atThoughtWorks.[2]