DEV Community

Rossano D'Angelo
Rossano D'Angelo

Posted on

Functional requirements vs Non-functional requirements

In order to build a good software system it's usually recommended a good understanding of its requirements. These requirements can be divided into two groups: functional requirements and non-functional requirements.

Functional requirements

Functional requirements describe how the product must behave. For example: "the system sends a confirmation email when a new user account is created".

Non-functional requirements

Non-functional requirements specify the quality attributes of the system, that's why they are also called quality attributes. The key types of non-functional requirements are:

  • performance and scalability - How fast does the system return results? How much will this performance change with higher workloads?
  • portability and compatibility - Which hardware, operating systems, and browsers, along with their versions does the software run on? Does it conflict with other applications and processes within these environments?
  • reliability, maintainability, availability - How often does the system experience critical failures? How much time does it take to fix the issue when it arises? And how is user availability time compared to downtime?
  • security - How well are the system and its data protected against attacks?

These requirements are part of a format that is called SRS a.k.a. Software Requirement Specification.

Top comments (0)