Functional Requirements vs Non-functional requirements

ℹ️ Functional requirements specify what system should do and they are mandatory. Non-functional describe how system should behave and establish constraints of system functionality.
Software or System requirements are often classified as functional and non-functional requirements
Functional Requirements vs Non-Functional Requirements

What are Functional Requirements?

Any Requirement Which Specifies What The System Should Do.
A Functional requirement will describe a particular behavior 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”.
Functional Requiremeent

Typical Functional Requirements Examples

  • Business rules
  • Authentication
  • Authorization
  • Authorization levels

Examples

  • Authentication of a user when he/she tries to log into the system.
  • System shutdown in the case of a cyber-attack.
  • A verification email is sent to a user whenever they register for the first time on some software system.

What are non-Functional requirements?

Any requirement that specifies HOW the system performs a certain function.
Simply put, the difference is that non-functional requirements describe how the system works, while functional requirements describe what the system should do.
In case non-Functional requirements are not met the basic functionality will not be impacted. However, non-functional requirements deal with system usability, and this important as well. Non-functional requirements affect the user experience.
Non-functional requirements when defined and executed well will help to make the system easy to use and enhance the performance. Non-functional requirements focus on user expectations, as they are product properties.

Typical non-Functional requirements

Non-Functional Requirements are also quality attributes, so they may include:
  • Usability - addresses the simple question "How hard is it to use the product?".
  • Securability - assures that all data inside the system or its part will be protected against attacks or unauthorized access.
  • Reliability - specifies how likely a system or its part would run without failures for a defined period of time.
  • Availability - describes how likely the system is accessible to a user at a point in time. For example, the system may be available 98% of the time during a month.
  • Performance - defines how fast the system or its part responds to certain user actions under certain conditions/workload.

Examples

  • An email should be sent to a user with a maximum latency of 12 hours. -> Performance
  • Each request should be processed within 10 seconds. -> Performance
  • Use should not be able to save a password that contains only characters or only numbers. -> Security

Summary

ℹ️ Software or System requirements are classified as functional and non-functional requirements. Functional requirements define/specify what the system should do and they are mandatory. Non-functional requirements are system quality attributes, they describe how the system should behave and establish constraints of its functionality.