Non-Functional Requirements

Published: December 15th, 2021

Every now and then I stumble upon projects, which do not have a defined set of Non Functional Requirements (NFRs in the following) or teams who do not even know about the bits and pieces. Therefore I thought it a good idea to refresh and collect my knowledge and write down my current state of mind about NFRs.

Drawing symbolizing the process of defining Non-Functional Requirements

What are Non-Functional Requirements in software architecture?

Non-Functional Requirements (NFRs) are the properties of a software, that sit outside of specific features or functionalities that typically dictate how a system should behave.

To understand the difference between functional and non-functional requirements, it can be useful to view what a system does, and how well it does it.

Other terms for non-functional requirements are "qualities", "quality goals", "non-behavioral requirements", or "technical requirements". These are sometimes called the "-ilities", from attributes like stability and portability. Qualities can be divided into two main categories:

NFR Frameworks

NFRs, the "soft goals" of a system, are often hard to grasp and express but have a significant impact on the global qualities and user acceptance of a software system. These could be usability, performance, security and flexibility in a given system. To help teams with pinpointing those qualities, there exist multiple frameworks and ISO standard, for example ISO 9126 or its successor ISO 25010, SNAP or Goal Modelling to mention only a few.

Attributes or Qualities of a Software System

ISO 9126 Quality Criterias ISO 25010 Maintainability Model
Chart displaying the ISO 9126 cycle Chart displaying the ISO 25010 Maintainability Model

There are many possibilities to define NFRs for a system and you can really go overboard when defining them. Like functional requirements, also NFRs must be quantified for transparency and testability. A good starting point may be to start with four basic areas and refine them step by step:

Following criteria may also help to further define specific NFRs:

Sources

  1. ISO/IEC 25010:2011 Systems and software engineering - Systems and software Quality Requirements and Evaluation (SQuaRE) - System and software quality models
  2. Götz, Rolf; Scharnweber, Heiko: "IVENA: Integriertes Vorgehen zur Erhebung nichtfunktionaler Anforderungen"
  3. Web Archive - IBM on Furps+
  4. Scaled Agile Framework on NFR
  5. Wikipedia on Non-functional requirements