For any project in the IT sector, there are two terms related to the business requirements that are mainly covered during the requirement gathering phase. The terms are Functional and Non-functional requirements which a Business Analyst is responsible to cover for a business requirement. Both are enumerated below in detail.
Functional requirements
The functional requirements derive the behavior of the envisioned system. These are also referred to as ‘Functional Specifications’. A function is simply explained as the following:
- Input provided to the system
- Operation performed based on the logic defined
- Output delivered by the system
A simple example of a function is the authentication module where the following flow is executed:
- Input: Username/Email & Password
- Operation performed: Verifying the entered credentials match with the ones in the database
- Output: Authenticating if the credentials entered match with one in the database
Non-functional requirements
Those requirements are not related to functional requirements but are associated with them or the entire system in some form. These can be considered an essential part of the system as there are certain criteria that these requirements can fulfill in order to execute a functional requirement.
A few examples of such requirements are security, usability, storage, flexibility, performance, etc.
Differences between Functional and Non functional requirements
Functional Requirements | Non Functional Requirements |
These are used to define the system and its modules or components. | These are used to define the quality attributes of the system. |
These are used to define what a system does. | These are associated with the functional requirements and define how they support them. |
These requirements are defined by the end users. | These requirements are defined by technical members. |
These requirements are considered to be mandatory. | These requirements derive the non-functional aspects offering association to the functional requirements. |
These requirements are defined at the module or component level. | These requirements are defined for the entire system. |
These requirements help figure out the functionality or the logic applied in the system. | These requirements help figure out various performance related parameters of the system. |
Testing involved for these requirements is system testing, integration testing, API testing, etc. | Testing involved for these requirements is Performance testing, Usability testing, Security testing, etc. |