Software Requirements: Means the requirements in the software i.e. a complete description of what the software system will do.
The software requirements are divided into different sub type i.e.
- Functional Requirement
- Non-Functional Requirement
- Domain Requirement
- Inverse Requirement
- Design & Implementation constraints
Let me define and explain each and every type one by one
- Functional Requirement: In functional requirements we actually define the actual functionalities for which we are developing the software system. In short functional requirement actually define what the system will do. If we get in details the functional requirements actually define what will be the reaction of system for the particular input and what will be the behavior of the system in different conditions.
If our system is showing any kind of abnormal behavior we will also put that behavior in the list of functional requirements and in the exceptional handling.
Changes are part of software development but we should try to make functional requirement complete & consistent. When the software is under-development customers and developers completely focus on functional requirements because these are the actual functions the software has to perform when it will release.
Example of Functional Requirement:
Suppose we are making a system to perform mathematical operation and there is a requirement
“The system should solve the quadratic equation using the formula i.e. x = (-b+sqrt(b^2 – 4*a*c))/2*a”
So we will put this requirement into the list of functional requirements.
Let’s take a look at another example suppose we are making a vehicle database management system which will store all the records of vehicles and assign a unique ID to every vehicle through which we can access the records of the vehicle. Now in this example “Every vehicle should be allocated a unique ID so we can access the record of that vehicle” so this is the functional requirement.
Critical review of the Functional requirements:
- All functional requirements are not always same in the sense of level of details some have small details while other requirements have deep details.
- If we take a closer look to the example one in which we discuss the quadratic equation the functional requirement is not defined in detail.
It is not define what will happen if the value of “a” becomes 0. i.e. (a=0)
- When requirements are incomplete like in “example 1” people may miss interpret the requirements and this may become cause the poor quality of software.
- Non-Functional Requirements: Non-functional requirements are not limited to the specific function of the system. We implement these to the whole system.
For Example: Suppose we want to achieve the performance we will try to achieve the performance in the whole system not only in the specific function of the system so that is why the performance is in the non-functional requirement.
Same like performance, the reliability, security, maintainability are also the non-functional requirements. We cannot ignore the non-functional requirements as well as functional requirements; they are also important part of the system. As I try to clarify each of my concepts by relating the concept with any solid example so the best example to show the importance of non-functional requirement is the aircraft Reliability check. Till now according to our discussion “reliability” is non-functional requirement but an aircraft cannot be marked as saved if it is not reliable so this example shows how many important non-functional requirements is.
These Non-Functional requirements are further divided into the categories
1) Product Requirements 2) Organization Requirements 3) External Requirements
Product Requirements: It tells people what a product should do. For the product requirements we write the product requirements documents and mention all the requirements there.
Example: Suppose we develop a website which allow “one hundred thousand” clicks per minute so we will mention it as a Product requirement that the system allow one hundred thousand clicks per minute.
Organizational Requirements: Organization requirements mean the priorities and preferences of organizations are considered first.
Suppose we are developing software for any organization, the organization has some priorities and rules we will first follow them in the software.
Example: There are lots of standards which we can follow for the development of software but for which organization we are developing the software use always a specific standard so we will follow that one for that organization because this is the requirement of organization.
External Requirements: These requirements affect the software or its development process externally. Usually came from outside or from the people who will get affected by the software.
Example: Suppose an organization is developing a system which will keep the all personal record of the employees. So employees must demand that the system should secure enough and data should be accessible by the system administrator when needed only so these requirements will be consider as external requirements.
Some critical review on Non-Functional Requirements: Non-functional requirements reflect the general goals of the system but some time it becomes difficult to differentiate between functional requirements & non-functional requirements because of the nature of the system. Let me clarify my point with the example.
Example: Till now according to our knowledge Security is a non-functional requirements but if we are making a system for the bank which deals with the money transactions now for this system security will becomes the main priority and off course the client will also demand the security so we here it will become the functional requirement.
We should try to mention the non-functional requirements clearly the best way to write something clearly is mentioning it in quantitative manners.
There are high chances of confusions in non-functional requirements as we know that these Non-functional requirements are coming from different stakeholders so conflicts can be arise into the requirements.
- Domain Requirements: The domain means area where the software system going to work some domain are pre-define suppose if we are making an online shopping website so its domain will be e-commerce. So some requirements will come from the domain like in case of e-commerce domain we will have some already understood requirements like “System should provide secure system to client for making system” so like this the requirements came from the domain of the system are known as domain requirements.
Domain Requirements can be both functional and non-functional requirements; these requirements are not well explained it is the job of requirements engineers to find out these requirements. One cannot ignore these requirements because these are sometime functional and sometime non-functional kind of requirements and absence of these requirements can create heavily dissatisfaction in the developed system.
- Inverse Requirements: These are very simple these requirements explain what the system should not do. Most of the time client explains the requirements in inverse form. Suppose a client visit to you He want you to develop a POS(Point of sale) for his shop he asked you do not you red color in the interface now actually he is saying you cannot use red color but you are open to use other colors so these kind of requirements are known as inverse requirements.
- Design & Implementation Constraints: These are the requirements or we can say the constraints which we apply on the development process.
Suppose a designer is designing the interface and the client or stack holders ask him for the specific design so now the designer is limited to keep the design under the constraints which the stake holders define.
One more example to clarify the concept of this kind of requirements is, suppose a client ask a developer to develop a website now the developer can develop a website using php, asp, wordpress or any other platform but if the client give his requirements, He asked to develop a website using Asp platform so now the developer is bound to develop the website using asp with Microsoft .NET framework.
There is also another view of requirements although the other requirements are derived from the main categories of functional and non-functional requirements but play an important role in to the development of well-established system we will discuss them in to the next articles.