Non-functional requirements (NFRs) in software engineering specify the quality attributes of a software system. In this article, we'll explore examples of non-functional requirements and how they work in an application.
There’s more to building great software than delivering the right functionality. Users also expect the software product to be convenient to use, blazingly fast, and to hardly ever fail. While these expectations seem obvious, they are often missing from product planning discussions. A good business analyst or requirements engineer will uncover and define these and many less obvious expectations in conversations with the stakeholders. If you are a stakeholder, this article can help prepare for this conversation by detailing which non-functional requirements matter for your product.
Requirements to an IT product should explain why to build a product (business requirements), what the product will do (functional requirements - features), and how the product will work (non-functional requirements). Non-Functional Requirements (NFRs) are the properties of a software system that define under which conditions a system is expected to remain functional, the constraints imposed upon the system, and the system’s quality attributes.
Imagine you built an e-commerce store but didn’t account for traffic spikes around the holidays. Or you expanded to the Arabic market where the reading pattern starts at the top right corner and progresses to the left, but you didn’t mirror the layout on the localized website accordingly. These are examples of non-functional requirements to reliability and localization not being taken into account, and that will leave users unhappy.
Insufficiently addressing Non-Functional Requirements (NFRs) can lead to the following outcomes:
1. Dissatisfied users, clients, and developers.
In software engineering, functional requirements specify the behaviors of the system. They describe what the developers must implement to enable users to accomplish their tasks (user requirements), thereby satisfying the business requirements. (Software Requirements by Karl Wiegers, Joy Beatty)
NFRs (often called quality requirements) augment the functional requirements by identifying their constraints and qualities.
For example, when Golden Globes came to us to prepare their website for the annual awards broadcast, one of their functional requirements was to allow website users to watch the ceremony online. One of the non-functional requirements specified that the system had to be able to support thousands of concurrent users. Defining these expectations was crucial for making the right architectural decisions for the new website and resulted in stelar performance of the website during the 2021 Golden Globes event (see more details in the case study).
A Guide to the Business Analysis Body of Knowledge (BABOK), the industry standard for the practice of business analysis, lists 15 types of non-functional requirements (NFRs) in software engineering. Many of them are interrelated, so we find it is helpful to collect them in blocks.
1. Availability, Reliability, Maintainability, & SLA block
2. Performance & Scalability Block
3. Portability & Compatibility & Localization block
4. Certification & Compliance Block
5. Functionability & Extensibility Block
What questions to prepare for:
1) Where are our users going to be geographically located? At what time of the day are they more likely to be using the product?
2) When can we allow a risk of temporary unavailability of our platform to fix bugs and make updates?
3) What portions of the system are most critical for being available?
An example:
The solution is to be available not less than 97% of the time in a year. The 4th Friday of every quarter is dedicated to updating the system during which the system might be not available. This gives us 98,9% uptime/availability.
What questions to prepare for:
1) How many simultaneous users do you expect on average / maximum?
2) What parts of the system are used more than others and experience heavier traffic? (Logging in, registration, newsfeed)
3) If the system goes down, how long could it stay offline before it significantly affects your business operations?
An example:
The website must perform without failure in 95 % of use cases during a month given the traffic doesn’t exceed 200 concurrent users.
What questions to prepare for:
1) What is the chain reaction in response to a new bug detection?
2) What is the longest turnaround time that is acceptable?
An example:
The mean time to restore the system (MTTRS) following a system failure must not be greater than 60 minutes. MTTRS includes all corrective maintenance time and delay time.
What questions to prepare for:
1) What are the requirements in terms of speed of response?
2) What integrations and APIs can slow the speed of response down?
3) What would users consider an unacceptable response time for a typical query?
An example:
The ecommerce website should take less than 2 seconds to load.
1) Do we expect high traffic most of the time?
2) What are the volumes of customers, transactions, accounts expected from the systems to handle within the first year of functioning of the platform?
3) What is the annual growth in volume (customers, transactions, etc.) expected in the next three to five years?
An example:
The website should be able to handle a website traffic growth of 10 % per quarter for at least three years without user-perceptible performance degradation.
What questions to prepare for:
1) On what devices should the platform be accessible?
2) What browsers do your users use?
3) What are the data portability expectations?
What questions to prepare for:
1) What versions of mobile operating systems are going to support this app?
2) What browsers and their versions are going to support this web app?
3) What different platforms will this software need to run on, both now and in the future?
An example:
The iOS application must support iPhone devices running on OS versions 10.0 and higher.
What questions to prepare for:
1) What languages will the product support?
2) What currencies will the e-commerce store support?
3) (for trading platforms) If we plan to also cater to the Muslim market, what restrictions/adaptations to the functionality should we consider to respect Islam’s view on betting, gambling, and interest rates?
An example:
The layout is to be mirrored for RTL languages (Arabic).
What questions to prepare for:
1) Do we need to meet GDPR compliance rules?
2) With which financial services and consumer protection laws do we need to comply in which countries?
An example:
The app has to be HIPAA compliant.
What questions to prepare for:
1) Which features are we covering in this version of the platform and which not?
An example:
If you are building a centralized crypto exchange platform, your MVP will likely include wallet generation, but stacking or earning crypto by fulfilling tasks might be saved for when you’ve found your product market fit and continue building out your product.
3) What integrations could we potentially need to add in the next 3 years?
An example: The website is to be integrated with Stripe and PayPal payment getaways in this version (V1). The integration with Amazon Pay should be possible in V2.
The default “123456” password for all accounts is undeniably convenient but a terrible idea as far as security is concerned. Many platforms will warn you if you try using this password. Making the most secure way to use your product also the easiest one is something to strive for, because the security problems can be solved only by addressing issues of usability.
What questions to prepare for:
1) What security requirements for the system do we have?
2) What kinds of malware attacks do you want to fend off?
3) What is our protocol in case a user's credentials are lost/forgotten or stolen?
An example: The solution must support Two Factor Authentication.
What questions to prepare for:
1) What is our goal regarding how fast users complete the main actions once they see the interface? (at the stage of account creation, transaction initiation to transaction completion, etc.)
2) Do we have results of usability testing on competitor products?
An example:
The crypto exchange is to offer a transaction “Undo” button for 2 minutes after the transaction is confirmed by the user.
Quality requirements such as “The app should be easy to use” and “The website should be fast” are not useful. They are far too vague and not measurable. Quality requirements need to be measurable to establish a precise agreement on expectations between the customers and the development team. What is measurable is also testable. Well-written functional and non-functional agreements are the perfect basis for writing and running tests, and assuring your product meets the highest quality standards.
Requirements lie at the heart of every well-run software project. Discovering, analyzing, and prioritizing them is truly a team sport. As a customer of either your internal IT team or a software development agency, knowing what non-functional requirements exist and which of them are critical for your product will contribute to much more productive conversations with your partners in tech.