Requirements form the basis for initiating any task. When there is a need, then we devise an action plan and proceed towards its accomplishment. The process of software development commences with only one factor in mind - purpose of developing an application.
Hence requirements for a software can be classified in two broad categories- functional, non-functional.
Functionality simply states the expected results from the system and non functional requirements are the obvious features that are expected from the application.
Let us understand these two terms in further detail.
These type of requirements can be thought of as an 'objective' of the software product to be built. The functional requirements form the core of the entire software development process. When a software project is undertaken, the functionalities it must serve, are clearly outlined in the requirements specification document.
It is very important to understand what the client's needs are, the need for a software product, output expected from the system. In short, the key functionalities a software system must deliver.
Functionality can be understood in the context of a real world scenario. For instance, one needs an application to calculate the price for selected products and generate an invoice for the same. The application should also be able to integrate components such as comparison of one product with another similar one of a different brand, and list comparisons to enable the user to make a wise choice. Such facilities can be termed as functional requirements.
Functional requirement is supposed to adhere to some basic ground rules:
These set of requirements are an extension to the functional requirements. Non functional requirements are not the ones that a user demands, but is implicitly expected from the application developed so far. It can be thought of as the “efficiency” of the application in terms of its performance. This term can be further elaborated in the light of a simple fact.
When we order food online, the food has to be the one that is selected, but beyond that many companies offer delivery within 30 minutes , else, free delivery. This free delivery can be thought of as a non functional requirement which extends beyond providing the basic functionality, that is food delivery.
Similarly following factors form the major areas which constitutes a set of non functional requirements.
Functional and non-functional requirements adheres to the following types of testing:
The characteristics of 'functional' and 'non-functional' requirements are governed by the 'types of testing' mentioned above as they are crucial in determining the validity of the respective requirement specifications.
A functional requirement must cater to more granular level needs whereas non-functional requirements are at the macro level.
Functional requirements are characterised by the core or the basic operations, an application is expected to deliver, such as order, purchase, place order etc. On the contrary non-functional requirements comprise of the extra or precisely the external factors that lay a foundation for an application, say, how scalable an application is to be able to adapt to varying user loads, reliability to ensure that the application isn't vulnerable to frequent malware attacks, delivers a consistent performance and so on.
Thus requirements for functional and non-functional aspects are inseparable to ensure an application's sustenance in the long run.