First of all, let us understand what exactly a requirement is…
What is requirement?
Need of a client constitutes in development of a software or a product. This need is referred as a requirement. These requirements are collected, organized, structured and documented in various types by a BA.
One can distinguish requirements into Business Requirement, Functional Requirement, Non -Functional Requirement, System Requirement, Hardware Requirement and so on.
Here comes the confusion. Why we do we have to classify these requirements?
Categorize Requirements:
At a high level, requirements can be categorized to two parts,
- Functional Requirement: These requirements are those which the system must do, the developed functional requirements are the features of the application that the customer will be able to use at the end.
Ex: Customer wants to place an order.
- Non-Functional Requirement: Non-Functional requirements are quality measure of the functional requirements. Some samples could be, how fast system responds, no of users system can handle.
Ex: Customer should be able to place an order within two minutes.
- Firstly, when we receive any requirement, it is important to have a definite classification so that, it will be easy for us to prioritize every piece of requirement so as to define the timeline, budget and estimate of the project in an efficient way. If we take any example of a sample project, when a requirement says that they would require an online food delivery application that can handle a load of 2000 customers at one point of time., given that the timeline of a month. With the given timeline, budget and estimate, if the team would not be able to deliver, here the product owner can further discuss with the client that they would deliver the application with the required functional characteristics for a customer load of 50 as a first cut. Eventually, they can enhance the application further.
- Secondly, distinguishing functional and non-functional requirements is because designing and testing the non-functionality attributes have lot of difficulties engaged in them. Getting designs to meet the non-functional requirements implemented and tested are tedious tasks that involve mainly techies to invest more time. Basically, having a functional requirement in any project is simple and straight. For example, getting a database to store and retrieve transactions is pretty easy whereas getting high performance out of it on a distributed network with high load requires a lot more thought process, design thinking, research, POC (Proof of Concept) to be done and testing.
Therefore, any project’s ultimate goal is to have a successful execution. As a BA, it is our responsibility to structure, organize requirements so as to make it easy for the team.