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

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”.

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.

Last updated