Functional and Non-Functional Requirements

Gathering the complete and accurate requirements from the stakeholders is an essential thing in development of any application. Lack of collecting proper requirements is always considerable reason for software failure.



Functional Requirements are the functions of the system and its components. A function can be described as a set of inputs, the actions, and outputs and defines the functionality of what the system supposed to achieve or something system should do. These might be calculations, data modifications, data processing, and other specific functionality of the system. Usually, functional requirements are specific users and stakeholders. For example, in trading system, functionalities like receiving orders, enrich, transforming orders and sending orders to stock exchange are comes under functional requirements.

Non-Functional Requirements are the requirements that specifies criteria used to judge the operations rather than specific behavior of the system and describes how the system works. Simply, these are the requirements other than features and functions, actually do nothing but essential characteristics for the system. Well-known non-functional requirements are security, performance, availability and extensibility. In general, non-functional requirements are specified by technical people such as developers, architects, and technical staff. For example, in same trading application Fail-over, recovery, auditing, latency and other performance specific characteristics are considered as non-functional requirements.