September 20, 2011
How Non-functional Requirements add value to software development?
This article highlights the definition, purpose and value addition of functional requirements in software development.
What are the Non-Functional Requirements?
The non-functional requirements are also called Quality attributes of the software under development. They describe how the system should work. It is further divided into performance, security, usability, compatibility as the characteristics of the software. In the Requirement gathering techniques, the focus is on the functional requirement rather than non-functional requirements. There exists a gap between both types of requirements.
Non-functional requirements add tremendous value to business analysis. It is commonly misunderstood by a lot of people. It is important for business stakeholders, and Clients to clearly explain the requirements and their expectations in measurable terms. If the non-functional requirements are not measurable then they should be revised or rewritten to gain better clarity. For example, User stories help in mitigating the gap between developers and the user community in Agile Methodology.
Understand Non-Functional Requirements:
Defining non functional requirements: “Non-Functional Requirements (NFRs) refer to the criteria that specify the quality of the operation of a system, as opposed to its behaviors, which are known as its functional requirements. NFRs are the attributes of quality that contribute to the system’s functionality.”
Some of the most typical non-functional requirements include performance, capacity, scalability, availability, reliability, maintainability, recoverability, serviceability, security, data integrity, manageability, and usability.
It is important to focus on getting non-functional requirements right so that the software runs well and is sustainable over time. These contribute to the success of the software as much as the functional requirements do so they should not be overlooked. This is because they can significantly influence user experience.
An example of an NFR would be “how fast does a web page load?”. A page should load in under 3 seconds, so this NFR allows you to lay out certain rules that must be met.
How Non-functional Requirements add value in software development?
It is vital to define the non-functional requirements as they are critical to project success. Under-specifying non-functional requirements will lead to an inadequate system. Over specifying will put questions on the system’s viability and price.
So what exactly are we looking for here? Well, here are four examples of Non-Functional requirement groups; usability, reliability, performance, and supportability, as well as a few top tips on each one.
Prioritize the important functions of the system based on usage patterns.
Frequently used functions should be tested for usability, as should complex and critical functions. Be sure to create a requirement for this.
Reliability defines the trust in the system that is developed after using it for a period of time. It defines the likeability of the software to work without failure for a given time period.
The number of bugs in the code, hardware failures, and problems can reduce the reliability of the software.
Your goal should be a long MTBF (mean time between failures). It is defined as the average period of time the system runs before failing.
Create a requirement that data created in the system will be retained for a number of years without the data being changed by the system.
It’s a good idea to also include requirements that make it easier to monitor system performance.
What should system response times be, as measured from any point, under what circumstances?
Are there specific peak times when the load on the system will be unusually high?
Think of stress periods, for example, at the end of the month or in conjunction with payroll disbursement.
The system needs to be cost-effective to maintain.
Maintainability requirements may cover diverse levels of documentation, such as system documentation, as well as test documentation, e.g. which test cases and test plans will accompany the system.
The various attributes of Non-functional Requirements defined above are important to evaluate the qualities of the software under development. ReQtest as a requirements gathering and requirements management tool can help in implementing the various attributes of Non-functional Requirements. It improves software’s usability, reliability, supportability, and performance.