Insystems engineeringandrequirements engineering,anon-functional requirement(NFR) is arequirementthat specifies criteria that can be used to judge the operation of a system, rather than specific behaviours. They are contrasted withfunctional requirementsthat define specific behavior or functions. The plan for implementingfunctionalrequirements is detailed in thesystemdesign.The plan for implementingnon-functionalrequirements is detailed in thesystemarchitecture,because they are usuallyarchitecturally significant requirements.[1]
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.[2]
Definition
editBroadly, functional requirements define what a system is supposed todoand non-functional requirements define how a system is supposed tobe.Functional requirementsare 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 boxdescription input, output, process and controlfunctional modelorIPO 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. Other terms for non-functional requirements are" qualities "," quality goals "," quality of service requirements "," constraints "," non-behavioral requirements ",[3]or "technical requirements".[4]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:
- Execution qualities, such as safety, security and usability, which are observable during operation (at run time).
- Evolution qualities, such astestability,maintainability, extensibility and scalability, which are embodied in the static structure of the system.[5][6]
It is important to specify non-functional requirements in a specific and measurable way.[7][8]
Examples
editThis articleneeds additional citations forverification.(February 2023) |
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:
- Accessibility
- Adaptability
- Auditabilityand control
- Availability(seeservice level agreement)
- Backup
- Boot up time
- Capacity,current and forecast
- Certification
- Compliance
- Configuration management
- Conformance
- Cost, initial and life-cycle cost
- Data integrity
- Data retention
- Dependency on other parties
- Deployment
- Development environment
- Disaster recovery
- Documentation
- Durability
- Efficiency(resource consumption for given load)
- Effectiveness(resulting performance in relation to effort)
- Elasticity
- Emotional factors (like fun or absorbing or has "wow factor" )
- Environmental protection
- Escrow
- Ethics
- Exploitability
- Extensibility(adding features, and carry-forward of customizations at next major version upgrade)
- Failure management
- Fault tolerance(e.g. operational system monitoring, measuring, and management)
- Flexibility (e.g. to deal with future changes in requirements)
- Footprint reduction - reduce the exe files size
- Integrability(e.g. ability to integrate components)
- Internationalization and localization
- Interoperability
- Legal andlicensingissues or patent-infringement-avoidability
- Maintainability(e.g.mean time to repair– MTTR)
- Management
- Memory optimization
- Modifiability
- Network topology
- Open source
- Operability
- Performance/ response time (performance engineering)
- Platformcompatibility
- Privacy(compliance toprivacy laws)
- Portability
- Quality(e.g. faults discovered, faults delivered, fault removalefficacy)
- Readability
- Reliability(e.g.mean time between/to failures– MTBF/MTTF)
- Reporting
- Resilience
- Resource constraints (processor speed, memory, disk space, network bandwidth, etc.)
- Response time
- Reusability
- Robustness
- Safetyorfactor of safety
- Scalability(horizontal, vertical)
- Security(cyber and physical)
- Software, tools, standards etc.Compatibility
- Stability
- Supportability
- Testability
- Throughput
- Transparency
- Usability(human factors) by target user community
- Volume testing
See also
editReferences
edit- ^Chen, Lianping; Ali Babar, Muhammad; Nuseibeh, Bashar (2013). "Characterizing Architecturally Significant Requirements".IEEE Software.30(2):38–45.doi:10.1109/MS.2012.174.hdl:10344/3061.S2CID17399565.
- ^Richards, Mark; Ford, Neal (2020).Fundamentals of Software Architecture: An Engineering Approach.O'Reilly Media, Incorporated.ISBN978-1492043454.
- ^Stellman, Andrew; Greene, Jennifer (2005).Applied Software Project Management.O'Reilly Media.p. 113.ISBN978-0-596-00948-9.Archived fromthe originalon 2015-02-09.
- ^Ambler, Scott."Technical (Non-Functional) Requirements: An Agile Introduction".Agile Modelling.Ambysoft Inc.Retrieved5 October2018.
- ^Wiegers, Karl; Beatty, Joy (2013).Software Requirements, Third Edition.Microsoft Press.ISBN978-0-7356-7966-5.
- ^Young, Ralph R. (2001).Effective Requirements Practices.Addison-Wesley.ISBN978-0-201-70912-4.
- ^Zimmermann, Olaf; Stocker, Mirko (2021).Design Practice Repository.LeanPub.
- ^Glinz, Martin (2008)."A Risk-Based, Value-Oriented Approach to Quality Requirements"(PDF).IEEE Software.25(2):34–41.doi:10.1109/MS.2008.31.S2CID19015424.
External links
edit- Petter L. H. Eide (2005). "Quantification and Traceability of Requirements".CiteSeerX10.1.1.95.6464.
- Dalbey, John."Nonfunctional Requirements".Csc.calpoly.edu.Retrieved3 October2017.
- "Modeling Non-Functional Aspects in Service Oriented Architecture"(PDF).Cs.umb.edu.Archived fromthe original(PDF)on 24 July 2011.Retrieved3 October2017.
- "Non-Functional Requirements: Do User Stories Really Help?".Methodsandtools.com.Retrieved3 October2017.
- "Non-Functional Requirements Be Here - CISQ - Consortium for IT Software Quality".it-cisq.org.Retrieved3 October2017.
- ""Do Software Architectures Meet Extra-Functional or Non-Functional Requirements?"".19 November 2020.