Functional and non-functional requirements need to be carefully selected in order to ensure that they make sense in the context of the final outcome of the project and conveyed to all the team members working on it.
Missing out on a requirement or misapplying one could spell disaster for a project.
Requirements generally fall into two types: functional and non-functional.
The difference between them is fairly straightforward, nevertheless, in the this article we’ll define the two types of requirements and provide examples of each to point out more concretely the fundamental difference between them.
The definition of a functional requirement is:
Any requirement which specifies what the system should do.
In other words, a functional requirement will describe a particular behaviour of function of the system when certain conditions are met, for example: “Send email when a new customer signs up” or “Open a new account”.
A functional requirement for an everyday object like a cup would be: “ability to contain tea or coffee without leaking”.
Typical functional requirements include:
- Business Rules
- Transaction corrections, adjustments and cancellations
- Administrative functions
- Authorization levels
- Audit Tracking
- External Interfaces
- Certification Requirements
- Reporting Requirements
- Historical Data
- Legal or Regulatory Requirements
The definition of a non-functional requirement is:
Any requirement which specifies how the system performs a certain function.
In other words, a non-functional requirement will describe how a system should behave and what limits there are on its functionality.
Non-functional requirements generally specify the system’s quality attributes or characteristics, for example: “Modified data in a database should be updated for all users accessing it within 2 seconds.”
A non-functional requirement for the cup mentioned previously would be: “contain hot liquid without heating up to more than 45 °C”.
Typical non-functional requirements include:
- Performance – for example: response time, throughput, utilization, static volumetric
- Data Integrity
It is important to correctly state non-functional requirements since they’ll affect your users’ experience when interacting with the system.
One way to prevent missing out on important non-functional requirements is to use non-functional requirement groups as a guide for listing them down. This blog post provides an explanation of each of the four main non-functional requirements groups and how they are used.