Lack of data, rough requirements, uncertain business goals are reasons why software development projects fail. However, it is absolutely in your power to address these issues.
Clear defining functional and non-functional requirements for the project is crucial as this allows you to improve the software development process.
In this blog post, we share information on how writing better project requirements reducing risk and the project’s cost, increasing productivity and delighting clients
Let’s dive in!
The concept of software requirements seems plain: you choose any issue that your project will solve, think it over, and come up with quite a few requirements for the software.
It seems like everything is simple, right? But it’s not so. There are many issues for discussion:
This list may seem endless.
While considering these, you will find that software requirements are a pretty wide field of expertise. This involves the process of defining requirements, their analysis, specification, and validation, as well as managing requirements during the entire software development cycle.
Some organizations hire a requirement gathering person. But often the responsibility for the development of requirements is distributed between completely different experts. Business analysts, product owners, managers, and developers may be involved in this process.
The definition of requirements involves requirements collecting and formulating. Some requirements can be determined by consumers. The other can be defined by the system or field of activity for which the product is being developed.
For project management, the definition of requirements is an essential point. It enables you to determine the project volume and set priorities to meet customers’ needs.
You can collect the requirements using various sources. For instance:
But note, by determining the requirements, you should:
Undocumented requirements are a common cause of miscommunication, which leads to rework, changes, and bug fixes. Usually, this guides to disrupted deadlines and costs that increase by a lot very rapidly.
Note, every team member should understand all project development parts in the same way. This is especially important if you outsource software development to a team that is not familiar with your business. Using software requirements spec, you will be sure that developers see all the features as you do.
Accurately defined product requirements enable developers to recognize and fix bugs at early product development stages. As a result, this leads to a reduction in mistakes and iterations number.
Errors reducing allows one to decrease the time necessary to finish a project and to achieve the effectiveness of an investment. In a competitive environment, this can be an essential benefit.
If the Time & Material contract is the option you chose, the sharply outlined requirements list could be a valuable advantage.
Solid product requirements allow you to build a solution that will bring additional business value to all the stakeholders. Attempt to include the features users are waiting for.
Amazon provides open access to its AVS product requirements as Alexa’s skill developers should be familiar with user expectations and crucial features of the product. Amazon tells the full guide with functional and non-functional requirements will allow developers to deliver the best user experience. Additionally, this enables to set out the same policy and standards for all developers who are working with the Alexa products.
It’s not necessary to apply a specific system. You can adopt an issue tracking program, project management tools, or a version control system to recorded your requirements.
But if you do not write down the requirements at all, you’re taking a risk.
For instance, some functionality may be omitted or not implemented in the way you wanted to.
Let’s consider another example. Since your business increase, your software will also grow. Thus, it would be advisable to notice somewhere expected project duration and maintain timing.
Project requirements are usually grouped into three main categories: business, solution, and stakeholder requirements.
Clear functional and non-functional requirements allow you to cut app development costs and save time. In a nutshell, the difference between functional and non-functional requirements is as follows:
The following figure by Karl E. Wiegers shows the relationship between functional and non-functional requirements
Functional requirements define the internal working of the software. Simply put, they describe product features that should be implemented by web & app developers. For instance, this can be providing a communication channel for a user or transferring data from one format to another.
For instance, a functional requirement for a jar would be that it holds fluid and have a threaded top for a lid to seal the jam for better preservation
Usually, functional requirements involve a unique name and number, a brief description, and a description of the reason that the requirements are needed.
The description should be clear and precise both for the software development company and stakeholders. In case a product fails functional requirements, it usually means the product is of low quality.
Switch for a moment from reading to video and check out some great examples of functional requirements that were created by the University of Washington and the University of Wisconsin.
Note, functional requirements may be considered met even when the non-functional requirements are not.
Functional requirements section should include the following data:
Those requirements may appear in the functional requirements’ specification document form. This document highlights the main features and capabilities of the software. It can involve functional requirements only or additional types like user stories or use cases as well.
Usually, the specification consists of the following sections:
Use case specification template
The use case document usually involves the following parts:
As a <role>, I want <goal/desire>, so that <benefit>
but the shorter version is commonly used as well:
As a <role>, I want <goal/desire>
An example: As a user, I want to download the app from the store, next register/login, search photos by person name, view photos and updates, set likes, and upload media files.
Please pay attention, that sometimes use cases don’t correlate with user needs. In this case, a clear user stories document enables you to decide which use cases are necessary.
Agile development teams organize user stories in an intuitive, visual backlog, also named user story map. This allows one to understand the functionality of a system, and identify gaps and omissions.
The individual parts and their hierarchy are usually presented in the form of a functional decomposition diagram that contains the overall functions and the required sub-tasks.
An example of a functional decomposition
There are two general forms of prototypes:
While defining functional requirements, we recommend you to:
But, remember, when documenting functional requirements, keep your language detailed enough. So your development team will have a clear understanding of the demanded solution and all the additional ways to implement it. You should also avoid using technical terms to establish effective communication with the subject matter experts.
Non-functional requirements specify ways your project, system, or process should behave. These requirements will be created, changed, and adapted as the needs of a business change.
Usually, non-functional requirements have been organized by using categories: operational, revisional, or transitional.
This enables you to evaluate the successes of a project, define vital user expectations, and control product quality.
Alternative terms for non-functional requirements are “constraints”, “quality attributes”, “quality goals” and “quality of service requirements”
Below we will have a closer look at a list of basic non-functional requirements.
Usability has been defined by ISO as the extent to which a product can be used by specified users to achieve specified goals with effectiveness, efficiency, and satisfaction in a specified context of use. In a nutshell, usability is how easily a user can accomplish a given task utilizing your product. Usability is the result of choices that have been made based on solid research and testing.
Please, note the following:
Depending on your area of interest and your business focus, there could be various regulations and legal obligations. Please be aware that violating these regulations may result in legal punishment.
Legal or regulatory requirements enable you to describe product adherence to laws. But you should be familiar with the industry’s laws your product has to comply with. Moreover, you should have all the licenses required by the local authorities.
For instance, in the USA, a medical mobile app must meet HIPAA requirements. The Europe-based medical app must be compliant with the General Data Protection Regulation (GDPR). And in the UK, the major governing legislation is the new Data Protection Act or DPA 2018.
Reliability is a crucial non-functional requirement for your product. This usually specifies whether a product will operate without failure for a number of transactions or a particular period.
To outline the effective reliability requirement’s list, you should to:
Performance outlines how your solution will behave in various user interaction scenarios. This specifies the number of concurrent users, the system or query response times, the system’s capacity in terms of memory, disk space, and data volumes.
NFR for a milk package can be “Production cost of one package should be no more than 0.20 cents”
To define non-functional requirements, we recommend you to adopt the best practices early on. Below you will find a list of must-implement actions for non-functional requirements’ documentation.
Operational attributes | Revision attributes | Transitional attributes |
|
|
|
Note. “The system should be easy to use” isn’t a suitable usability requirement. You should specify the term easy to use by applying particular metrics.
It will be more convenient to find differences between functional and non-functional requirements through real-world experiences and cases. Now, let’s take a glance at popular platforms and apps to consider how their functional and non-functional requirements could be written.
Platform/App | Description | Examples of functional requirements | Examples of non-functional requirements |
Netflix | Netflix is a streaming service that allows its members to watch TV shows, movies, and documentaries on internet-connected devices. | Streaming
Users should be able to instantly open any video by hovering icon and pushing the play button. A hover should lead to a panel that automatically displays titles, previews, and summary for the video. When a video file is opened, the interface shows the video in a full web window. Title search Platform’s search bar should allow users to filter results by actors and genres. If a user enters an incomplete or inaccurate name, the software should find similarly titled videos. Additionally, users should be able to search for a title in “Movies,” “TV Shows,” and “Recently Added” categories. Watch history The platform regularly updates the suggestions list by using data analytics. The contents of the main page depending on users’ search history, preferences, and data. This may include genres, actors, viewers’ interests, location, age, etc. |
Usability
The interface should be adapted to desktop and mobile devices. The main page has to display items that are in progress and suggestions list. Notification about the new releases should be gently provided. The search experience should be seamless. Users should be able to look for various videos by smoothly switching between tabs. Security Every user should fill a form with personal details (e.g. email address, name, age, and location) and provide financial data for advanced subscriptions. Personal information and any data on clients’ credit cards should be stored securely. Performance Time an average user needs to find a required title. The number of clicks required to open a TV show or a movie. The number of clicks needed to optimize the watching experience. Legal issue How does Netflix handle copyright? How do Netflix license TV shows and movies? Does the service provide closed captioning for deaf and hard-of-hearing people? |
Uber | Uber is the taxi ordering app used by people worldwide due to its outstanding service for clients, as well as job opportunities. Note, this solution may not only prove helpful for transport businesses. For example:
|
Geolocation
The native iOS and Android APIs have to be integrated into the app to track user’s locations, determine a convenient route, and provide real-time vehicle tracking. A user should be able to book a car from any location and track the driver’s arrival. Driver assistance Uber should provide drivers with real-time maps to determine a convenient route. Integration of MapKit and Google Maps Android will allow users to create the native route fast. Booking process Users should be able to see the driver’s ratings. Users should be able to order a ride in less than 15 seconds. An app should provide information about the arrival time and cost of the ride. Notifications The app should notify a user when the driver:
Payments Users should be able to pay with promo codes, credit or debit cards. Also, the system will support Braintree, Stripe, and Instacart. |
Usability
Users should be able to book a ride, access personal accounts, or pay for services within one minute. The app should provide data on clients and drivers connects, past activities records, and detailed reports on all financial transactions. Legal requirements The app should comply with both local transportation and employment laws. Further, personalization and data collection processes should comply with the GDPR. Reliability The performance should be fast and error-free in low-bandwidth zones. All payments, requests, and updates should run smoothly. Security How is location data collected and stored? How is the financial data handled by the app? How is private data saved and encrypted? |
Instagram is a free photo and video sharing app that allows users to upload photos or videos to our service and share them with their followers. They can also view, comment and like posts shared by their friends on Instagram. | Use stories
Users should be able to upload images and video, write descriptions, and publish the updates. Also, they should be able to respond to content posted by other users, commend, and follow them. Use cases Feed page should be the main page shown to visitors by accessing the mobile, web, or desktop app. The Feed provides users with the stories section, posts updates, and Instagram ads. There should be ways to interact with Instagram friends in the comment section; such as replying with a text, adding reactions with emoji, or likes. Additional functionality Push-notification, automatic geotagging of photos, Instagram stories auto expiration, photo filters, masks, and search bar. |
Performance
As users spend more time swiping feed rather than uploading media files, content load time and performance are the top priority. Usability Instagram should provide users with natural and seamless navigation. Users should be able to edit and publish pictures and videos in 1-2 clicks. The app should notice the most used spots and filters to provide users with more convenient uploads. Reliability and scalability The system should display content with the smallest delay possible, and scale to handle dozens of thousands of new users. Safety Users can delete all their content (posts, pages, custom post types), their profiles, and all associated user account information from the app. |
The information above should have satisfied your basic curiosity. To find out the difference between functional and non-functional requirements in the most convenient way, let’s take a closer look at the table below.
The difference between functional and non-functional requirements is not so essential. But note, both types should be taken into account.
But our experience has shown that customers mainly consider the functional requirements. Non-functional requirements have been taken into account if they have had a bad experience in the past.
If you are curious to know how to improve the processes for identifying, analyzing, and writing requirements, fill out the contact form. Our business analysts will get in touch with you within 24 hours.
josh dun says:
Hi, nice piece. at this moment I’m writing a requirement document for the first time. and I’ll admit, I didn’t know quite how to find out how well the requirements were formed?
Darya Tryfanava says:
Hi, josh.
Well-defined requirements should cover all scenarios, including what the system should not do.
You should highlight those functions useful to users. However, their abundance will necessarily increase costs and make it difficult to use them. So, it is important not to overdo it or overestimate it. Here comes a benchmark against competitors’ products to understand what will make your product stand out from others.
Also, it is crucial that the requirements do not overlap in meaning. Later on, it will be easier for your developers to implement and test them.