Non-Functional Requirements (NFR) - What are they?

An essential part of scoping projects, this article seeks to explain what they are and why they are important.

NFRs or “Non-Functional Requirements” are an essential part of scoping projects. But what are they? A few minutes in google will give you quite a bit of information on this topic, but it’s typically rather technical and can be difficult to understand if you are not a seasoned developer. We understand that not everyone is technical and part of what we do is to translate “developer speak” to plain English. In this article, we are going to just that for NFRs.

If you are involved in a digital project of any kind you should know about the two common types of requirements: Functional and Non-Functional. To understand Non-Functional Requirements, it can help to first understand Functional Requirements. Because the easiest way to understand what something is, is to get an idea of what it is not.

When scoping a new project, we will typically start with writing the user stories together with the project stakeholders. These are non-technical requirements in a format that reflects what the actual users want to achieve in a solution. From these user stories, we work with the developers to add more technical detail to make it clear how and what they need to implement. These technical details are what we would call Functional Requirements.

Now that you have an idea of what Functional Requirements are, let’s talk about Non-Functional Requirements (NFRs). Basically, the NFRs are needs or expectations of the solution that are not directly related to any functional behavior and are not always dependent on user input.

Typical topics covered by NFRs are:

  • Experience
    Related to corporate branding, customer service expectations, etc.
  • Usability
    Support for different devices, visually impaired, etc.
  • Performance
    Loading and processing speed in different regions, number of users, etc.
  • Reliability
    Backup and restore requirements, stability, uptime, etc.
  • Support
    How quickly issues need to be resolved, service level agreement, etc.
  • Security
    Encryption, password controls, storing and handling of personal and sensitive data, etc.
  • Transferability
    Technical documentation, standards the solution should comply with, etc.

For instance, if you are storing personal data then you will likely need encryption in place to protect that data. Both while the data is stored and while it is moving between the user and your solution. Part of the implementation of this NFR would be to buy a security certificate (SSL) so that the data between the user and the solution can be encrypted.

A successful eCommerce site could get many thousands of visitors at any given point in time. It must be able to handle that kind of traffic without slowing down or breaking. This is where NFRs for performance and reliability come into play. We can have NFRs that state that the solution must be able to handle up to 25,000 users per day. This will affect how the solution is designed which is why it is crucial to set the NFRs during scoping and before the solution is designed.

To summarize, while the Functional Requirements define what a system is supposed to do, the Non-Functional Requirements define how the system is supposed to be and what is expected of it in different, often long-term, hypothetical scenarios.

The NRFs are essential for a high-quality solution because there are often thousands of ways to develop a functional requirement. The NFR’s filter that down to a much smaller number which ensures that the resulting feature is developed at an expected level of quality and cost.