The art of requirement gathering is a very important and crucial aspect for every business analyst who is part of a project. The entire project is based on how a B.A was able to differentiate, separate redundant data and gather meaningful information. One of the most important guide ie: BA BOOK available for every B.A would define requirement as “a usable representation of a need”. In simple and lay man terms it can also be defined as something that the client/customer needs to be fulfilled in order to achieve the goals that’s set by them.
For Example: A business needs a feature that would help the employees of the department excel in their work which in turn would help tremendously in their revenue generation. The given example ties back to the goal of the company which was to increase their revenue generation thereby increasing their profits for the financial year.
The process of Requirement gathering generally begins when the B.A visits the client, understands the problem statements and notes down all the requirements stated by the client.
After understanding the basic concept of requirements, let’s see what the different types of requirements are and learn more about them in depth.
Requirements can be broadly classified into 2 types
- Functional Requirement
- Non Functional Requirement
Functional Requirement: This type of requirement is basically a function that a developer or a team of developers must be able to code/develop so that the final end users can use the function in their day to day task.
For Example: The client tells the B.A that he/she wants to retrieve information from a set of data without going through the entire sent of data. To simplify this even further, the client is a retail store manager and he/she needs information about a certain employee from their company, without going through the entire employee data history.
This means that the owner needs a feature of search so that the customer can search employee info by either Employee ID or Employee Name. Here the search feature becomes a functional requirement that the developers will develop on the application that will be used by the designated person.
Some of the most common formats or documents that are used to represent a functional requirements are as follows
- Software requirements specification document: This document must be prepared in the way such that all the stakeholders can read and understand it.Some of the important topic that this must contain are the purpose of the document, the overall description, specific requirements etc.
- Use cases: This helps us in understanding how the primary/secondary actors interact with the system. The use case specification tells how the events takes place sequentially.
- User stories: This is typically used in projects that follow agile based methodology. It describes what exactly the user wants the system to do.
- Prototypes: These helps the client in understanding the visual representation of the requirements in a faster and cheaper way.
Non Functional Requirement: A nonfunctional requirement defines the quality attribute of the software system that has been developed for the client. This kind of requirement impose specific restrictions on the design of the system.
For example: How fast the website must load. (The load time should not exceed 3-4 seconds)
How many people can simultaneously a given application(less than 500)
Some of the important nonfunctional requirements are listed below:
- Usability: This defines how user friendly the app will be to the users
- Security: This defines how secure the software is from the threats and unauthorized activities
- Reliability: How reliable the software is.How well it can work without a failure
- Performance: This describes how responsive the system can be to various user interactions
- Availability: This describes for how long the system’s functionality and services are available for use with all the operations in working condition.
In conclusion both the types of requirements are equally important for the overall functioning of the software. A clarity on the requirements not only helps the developer develop it in a proper manner but also helps the client get what was asked for.