Open In App

Functional vs Non Functional Requirements

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Share
Report issue
Report

Requirements analysis is a very critical process that enables the success of a system or software project to be assessed. Requirements are generally split into two types: Functional and Non-functional requirements.

Functional-vs-non-functional

Functional Requirements

These are the requirements that the end user specifically demands as basic facilities that the system should offer. All these functionalities need to be necessarily incorporated into the system as a part of the contract.

These are represented or stated in the form of input to be given to the system, the operation performed and the output expected. They are the requirements stated by the user which one can see directly in the final product, unlike the non-functional requirements.

Example:

  • What are the features that we need to design for this system?
  • What are the edge cases we need to consider, if any, in our design?

Non-Functional Requirements

These are the quality constraints that the system must satisfy according to the project contract. The priority or extent to which these factors are implemented varies from one project to another. They are also called non-behavioral requirements. They deal with issues like:

  • Portability
  • Security
  • Maintainability
  • Reliability
  • Scalability
  • Performance
  • Reusability
  • Flexibility

Example:

  • Each request should be processed with the minimum latency?
  • System should be highly valuable.

Extended Requirements

These are basically “nice to have” requirements that might be out of the scope of the System.

Example:

  • Our system should record metrices and analytics.
  • Service heath and performance monitoring.

Difference between Functional Requirements and Non-Functional Requirements:

Functional Requirements

Non Functional Requirements

A functional requirement defines a system or its component.

A non-functional requirement defines the quality attribute of a software system.

It specifies “What should the software system do?”

It places constraints on “How should the software system fulfill the functional requirements?”

Functional requirement is specified by User.

Non-functional requirement is specified by technical peoples e.g. Architect, Technical leaders and software developers.

It is mandatory.

It is not mandatory.

It is captured in use case.

It is captured as a quality attribute.

Defined at a component level.

Applied to a system as a whole.

Helps you verify the functionality of the software.

Helps you to verify the performance of the software.

Functional Testing like System, Integration, End to End, API testing, etc are done.

Non-Functional Testing like Performance, Stress, Usability, Security testing, etc are done.

Usually easy to define.

Usually more difficult to define.

Example
1) Authentication of user whenever he/she logs into the system.
2) System shutdown in case of a cyber attack.
3) A Verification email is sent to user whenever he/she registers for the first time on some software system.

Example
1) Emails should be sent with a latency of no greater than 12 hours from such an activity.
2) The processing of each request should be done within 10 seconds
3) The site should load in 3 seconds when the number of simultaneous users are > 10000


Last Updated : 17 Jan, 2024
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads