Functional and Non-Functional Requirements – When Do I Need Them?

When you build a product or solution using Agile approach, you will likely need to deal with a variety of requirements from different sources. The two most common types of requirements that you will likely encounter are Functional Requirements (FRs) and Non-Functional Requirements (NFRs). Many teams struggle to gain a clear understanding of these two types of requirements, which can often lead to less-than-desirable performance and output.

Let’s take a look at both of these types of requirements so we can gain a solid understanding.

Functional RequirementIn its simplest form, a functional requirement describes the user’s desired experience with the system. For example, able to conduct some type of business process and/or transaction. On the other hand, Non-Functional Requirements are much more subtle; they usually describe system-level behavior and/or performance (such as system availability, scalability, performance, etc.), which is usually assumed or not explicitly stated. For example, Consumers often assume a cloud-based web application would be secure and responds within a few seconds.

This table below describes a few of the common characteristics for both FRs and NFRs. Let’s take a closer look and see what similarities and differences there are.

 

Characteristic

Functional

Non-Functional

Source

Contract, scope document, customers, stakeholders, users, etc.

Architects, engineering teams, support teams, etc.

Format

User stories, Epics, Features

User stories, technical specifications

Ownership

Product Manager, Product Owner, Business Analyst

Architect, Project Lead

Typical Level of Detail

Low to medium

Low to high