Functional requirements, as well as non-functional requirements, are the two major software requirements types that must be taken into consideration to develop a perfect software that meets the client’s goals and expectations. We’ve learned about functional requirements and examples in the previous tutorial. In this tutorial, we shall be discussing Non-functional requirements, types, and examples of non-functional requirements.
Non-functional requirements describe the properties that the product must have to function properly. It also describes the experience that the user has while using the software to perform their work. Non-functional requirements are constraints on all the features and functions of the software. Such constraints include constraints on timing, developmental process constraints as well as constraints on standards.
The non-functional requirements are very vital for the entirety of the system to work. Failure to meet these requirements will result in a failed system. For instance, if an automobile engine system fails to meet its performance requirements, the control features will not function appropriately. If a medical life support system is unable to meet its reliability requirements, it cannot be approved for use as safety is not guaranteed.
Why Non-functional requirements?
The need for Non-functional requirements arises due to the following reasons:
- Increase in user needs and satisfaction: The rising necessity of improving user experience leads to the adoption of non-functional requirements in the software requirements analysis.
- Budget restrictions: The budget of one organization may vary to another. One organization might be willing to spend several millions of dollars on developing desired software another organization might not be willing to spend much. Hence the need to optimize non-functional requirements to suit the organization’s budget plan.
- Organizational policies: For instance, say there is a company “A” if it is stated in company A’s policies that all their software must be developed using java programing language, then as a developer, there is a need for you to apply certain non-functional requirements that will align with the company’s policy.
- Interoperation with other software or hardware systems: when developing a software product for a company, you want to ensure that the software can coexist and operate with other existing software in terms of having certain required characteristics and properties. Hence the need for non-functional requirements.
- External factors: Non-functional requirement is needed to meet up with external factors such as safety regulations as well as privacy legislation.
Examples of Non-functional requirement for banking software:
- If hosted, locally or externally, must be able to authenticate into a banner
- It must have a theming and styling feature.
- Must have the ability to support two-factor authentication.
- Must use full site encryption.
- Must provide analytics and robust reporting.
- Must have the ability to integrate with bank’s current management system
Categories of Non-functional Requirements
- Product requirements:
Product requirements describe product behavior. They include performance requirements, capacity requirements, and usability requirements.
- Organizational requirement:
These requirements are derived from the policies and goals of the client’s organization. These include availability requirements, recovery requirements, and reliability requirements.
- External requirements:
External requirements are obtained from certain factors that are external to the software and the entire development process. Examples include safety requirements, interoperability requirements.
Types of Non-functional requirements
You may also want to specify the capacity of the system. How much disk space is needed? How are you going to plan for the growth of the system as you add more users to it?
Examples of capacity requirement:
- The software shall have a disk space of 3500 terabytes
- The software disk space shall be replaceable with a larger capacity when space is exhausted.
This describes the ease with which the software can interact with other software.
Examples of interoperability requirements:
- User can share post to social media websites
- Users can download files via links to other websites.
This deals with the general safety of the software. This includes the safety of user data, assets, safety from hackers as well as cybersecurity.
Example of security requirement:
- Employees should be required to reset a new password if they have not changed it within the stipulated period specified as “password expiration duration”.
- All Passwords should be hidden and never viewable at any point in time.
- The access permission for the data may only be changed by the system’s data administrator.
This describes the extent to which the software can be assessed and used. Who can make use of the software and who is not allowed to make use of the software?
Examples of Accessibility requirement:
- Persons with disabilities shall be able to use the software following Canada’s disability act 1991.
- The system should be accessible to color blind persons such that they can recognize and read all text and other information on the software with ease.
How often do you want the software running? You want to ensure that users can use certain functions on the software for a specified time.
Examples of Availability requirement:
- The online payment system should always be available for use 24/7 from Mondays to Fridays, between the hours of 5: 00 am and 11: 00 pm.
- Uptime of the system shall be 99.8%
- A new installation of the system shall be ready for first-time use within 24 hours of initial installation.
These are requirements that describe how fast and effectively a system can respond to users’ input and produce the desired output. These include response time and net processing time. For instance, when you use a website, you want to make sure that the page responds promptly. So you can have a functional requirement that says: the website loads within 2 seconds. Or when you process a form, you get a response within 2 seconds time frame.
Examples of performance requirements include:
- The app shall take 3 seconds to load
- The acceptable data processing time is 2 seconds
- When a query is made the report of the query shall load within 2 seconds.
These requirements deal with the plans of the company to meet up with an increase in demand for their product or service in terms of increasing its capacity.
Examples of scalability requirements:
- The system shall be able to handle five thousand transactions per day.
- We need to plan for 1000 terabyte data capacity for the first two years of operation
In cases of user misplacement or forgetting their data, what are the plans in place to retrieve back their information? This brings about the need for recovery requirements.
Examples of Recovery requirements:
- The app shall take 5 seconds to restore backup
- The app shall back up data of various forms including texts, images, and videos.
You want users to be able to make use of the software easily. Hence usability requirements describe the ease of use of the software.
Examples of usability requirement:
- Users shall be able to use the software at first sight without seeking assistance.
Although functional requirements are very crucial in determining what the software does and how it responds to user inputs. Non-functional requirements are likewise necessary to help facilitate the functional requirements to provide a befitting user experience and enhance all-round excellent performance of the software.