Toptal acquires, enhancing custom software leadership

Functional vs Non-functional Requirements: Examples and Types

28.07.2020 Daria Mickiewicz
Functional vs Non-functional Requirements: Examples and Types

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!

Not in the mood for reading? No problem! Listen to the article

What Is Software Requirement?

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:

  • How do you collect requirements?
  • How do you assess the needs and expectations of stakeholder groups? Are there any technical limitations regarding the requirements?
  • How do you determine that work is completed?

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.

Definition of Requirements

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.

What Affects the Requirements?

You can collect the requirements using various sources. For instance:

  • Business goals;
  • Domain knowledge;
  • Stakeholders;
  • Business rules;
  • Operating environment.

But note, by determining the requirements, you should:

  • Pay particular attention to goals. Prioritize requirements and determine the most reasonable ways to achieve project goals.
  • Model real challenges for in-depth requirements’ analysis.
  • Find out the point of view of different stakeholders. Requirements may be conflicting or overlapping. And it’s crucial to find out different stakeholders’ needs, especially during preliminary project planning.
  • Consider the operating environment. This will depend on the organization structure, culture, and in-house policy.

How Requirements Impact the Software Development Process?

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.

Why Are Specs and Requirements Important?

Errors Minimizing

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.

Reducing the Time-to-Value

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.

Cutting the Development Cost

If the Time & Material contract is the option you chose, the sharply outlined requirements list could be a valuable advantage.

Better User Experience

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.

What if We Don’t Have Any Requirements’ Management System

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.

Classification of Requirements

Requirements Categories

Project requirements are usually grouped into three main categories: business, solution, and stakeholder requirements.

  • Business requirements include information and content on the client’s objectives, target user, and overall needs for the product. At this point, you should find out what the client is looking to achieve with the product. As all decisions will be based on this information, these requirements should be as detailed as possible.
  • Stakeholder requirements assume what users need to have a good experience with the product. At this stage, you should plan a product map, wireframe a layout, consider devices it will be reached from, and use cases. Please note, stakeholders’ needs can be competing hard. This can negatively affect the schedule, budget, and scope of the project if not properly managed.
  • At the solution requirements stage, everything you decided before should be planned out according to the currently available systems. This type of requirement includes both functional and non-functional requirements.
    • Functional requirements describe something that a product or service is required to do.
    • Non-functional requirements describe how a system is supposed to function.
Requirements Categories

What Are the Functional and Non-functional 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:

  • Functional requirements drive the application architecture of a system, while non-functional requirements drive the technical architecture of a system. This means that functional requirements include all the features of your future project and ways users engage with it.  Non-functional requirements, however, describe how the system works.
 Functional and Non-functional Requirements
  • Generally, functional requirements are expressed in the form “system must do <requirement>,” while non-functional requirements take the form “system shall be <requirement>.”
  • Functional requirements are easy to define. To identify non-functional requirements, you need to analyze the product’s performance.

The following figure by Karl E. Wiegers shows the relationship between functional and non-functional requirements

figure by Karl E. Wiegers

What Are the 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

 functional requirement for jar

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:

  • Design scope. As not all project phases are completed simultaneously, the design scope may vary. Each development phase may have its own design scope. One of the best opinions you can apply is a use case diagram.
  • System functionality. To define the required system functionality, consider how the users interact with the software and what kind of responses the system provides back. These things have often been written in use cases and UI specification documents.
  • Data definitions. You should define allowable and default values, field lengths, and so on.
  • User classes. Groups of people who will be using the software: customers, visitors, employees, management, or organizations’ representatives.
  • User interfaces. Summary of the screen, report layouts, and schemes. Note, you should explain how each screen operates in detail.

Main Types of Functional Requirements

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:

  • Goals. In this section, you should specify the background, key definitions, and system overview.
  • Description. This section assumes the outline of the main functionality, product vision, business rules, and assumptions. For example, you may define tools that will be utilized for data processing and briefly describe product improvement strategies.
  • Specific requirements. Here, we recommend you describe features, system attributes, database characteristics, connections, etc.
  • Use cases. Use cases define the functional and valuable aspects of human-computer interaction. Describe how to start working within a system, how it will respond to user actions, and outline scenarios of each feature use case.

Use case specification template


The use case document usually involves the following parts:

    • Actors. These users will interact with your software. An actor can be a person or a system. But note, they are not part of the system.  For example, on a learning management system, these actors can be Guest, Student, Staff, or Admin.
    • System. This is a list of the features which describes the expected behavior of the product.
    • Functionality. Functional requirements specify features that are essential for the interaction between each user group and the system.
    • Associations. This part defines relations between different features of the system and associated actors.
  • User stories. In comparison to use cases, user stories define interactions from the user’s perspective. This document outlines possible interactions by taking into account all the user’s motivations and expectations. The user stories document usually adopts the structure of:

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.

  • Functional decomposition or Work Breakdown Structures (WBS). Functional decomposition is a visual document that enables you to divide a complicated process into smaller sections. So you can efficiently understand and manage complex development processes. Additionally, you can estimate the project timeline and costs more accurately. Or, if something goes wrong, the structure allows you to figure out which part of the system failed.

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

 example of a functional decomposition
  • Software prototypes allow you to clarify project vision and key challenges in the development process. Prototypes outline how your solution will operate and provide examples of user-solution interaction.

There are two general forms of prototypes:

  • A throwaway prototype. Such a prototype is a quick and cheap option to represent requirements visually.
A throwaway prototype
    • An incremental or A throwaway prototype. This is a more complex and robust prototype that will be constantly refined and rebuilt. Although evolutionary prototypes may not have all the features the users have planned, they are functional systems that may even turn into MVP.
A throwaway prototype

How Do You Determine Functional Requirements?

While defining functional requirements, we recommend you to:

  • Describe the functionality you need, instead of the tools you plan to apply.
  • Bear in mind the user-system interactions.
  • Focus on the detailed representations of look and feel instead of code design and implementation.

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.

What Is a Non-functional Requirement?

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.

 Non-functional Requirement

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:

  • Your product should be clear and intuitive. As a result, users will become familiar with it during the first interaction.
  • The product should quickly lead users to the achievement of their objectives.
  • Careful execution of certain usability principles allows can you to achieve designing an effective, efficient, and enjoyable product.

Legal or Regulatory Requirements

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:

  • Define how consistently you want the solution to perform and what maintenance and support you need to make sure it stays that way.
  • Explore related solutions, their weak points, and functionality.
  • Analyze technology reports, news, new industry perspectives, and insights to consider safety risks.
  • Consider the common issues with the tech stack while choosing a suitable one.


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”

NFR for a milk package

List of Main Challenges That You Should Be Aware

  • Subjective views. Non-functional requirements can be defined variously by different users. Make sure that your document involves clarifications and examples.
  • Inconsistencies. Non-functional requirements may directly contradict each other. And they typically have a noticeable impact on the whole system.
  • Unclear terminology. Confusing definitions may cause a lack of understanding of non-functional requirements.
  • Assuming that requirement is obvious. When you create a document with non-functional requirements, some points seem obvious. For example, statistics should be tracked by Google Analytics. Often, many of those  “obvious” requirements are forgotten almost instantly.

How to Define Non-functional Requirements

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.

  • Utilize a defined classification. These requirements are usually divided into three groups: operation, revision, and transition.
Operational attributes Revision attributes Transitional attributes
  • Security
  • Accessibility
  • Efficiency
  • Reliability
  • Survivability
  • Usability
  • Availability
  • Confidentiality
  • Integrity
  • Safety
  • Flexibility
  • Maintainability
  • Modifiability
  • Scalability
  • Verifiability
  • Installability
  • Interoperability
  • Portability
  • Reusability
  • Use a pre-defined set of questions. This enables you to improve the development team’s productivity and save time.
  • Cooperate with the development team. Ongoing communication allows you to reach an understanding with the development team. You should facilitate requirements documentation planning meetings and arrange conversations. Also, we recommend you to capture and share your notes and put the final drafting on the documentation.
Cooperate with the development team
  • Engage the stakeholders. Discuss non-functional requirements with all interested parties early on.
  • Use templates. Software products have a lot in common when comparing nonfunctional requirements. So, gathering the previous requirements to build a complete project picture will definitely benefit you. Especially if your business focuses on e-commerce or e-learning application development. Identify where you can repurpose some requirements documents to template them for future use on other projects.
  • Take into account users’ feedback. The user’s feedbacks enables you to specify new functional requirements or find out that some of yours were irrelevant.
  • Use state-of-the-art tools. Apply automated testing tools such as Selenium, TestComplete, Robot Framework, Xamarin.UITest, Espresso, XCUITest, and Appium. These tools will help to check your product performance faster and reveal more non-functional requirements.
  • Reconsider requirements through development, testing, maintenance, and scaling processes. Also, you may evaluate each requirement with a grade from 1 to 10.
  • Assume stakeholders know nothing. Define as much as you can. For each point, ask “Why” 5 times to ensure that you’ve written the correct and logical requirement.

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.

Functional vs Non-functional Requirements Examples

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.


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.


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.


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:

  • The company can use a taxi app for its internal services like tracking the goods from the warehouse to the store.

  • The healthcare industry is that which needs to sync riders and drivers to a large extent.

  • The hospitality industry can thrive with the automation advances of taxi apps.


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.


The app should notify a user when the driver:

  • accepted the ride,
  • arrived at the destination,
  • or canceled the ride.


Users should be able to pay with promo codes, credit or debit cards. Also, the system will support Braintree, Stripe, and Instacart.


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.


The performance should be fast and error-free in low-bandwidth zones. All payments, requests, and updates should run smoothly.


How is location data collected and stored? How is the financial data handled by the app? How is private data saved and encrypted?

Instagram 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.


As users spend more time swiping feed rather than uploading media files, content load time and performance are the top priority.


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.


Users can delete all their content (posts, pages, custom post types), their profiles, and all associated user account information from the app.

Difference Between Functional and Non-functional Requirements

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.

Difference Between Functional and Non-functional Requirements

That’s It In a Nutshell

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.

Please, rate my article. I did my best!

1 Star2 Stars3 Stars4 Stars5 Stars (22 votes, average: 4.77 out of 5)

2 responses to “Functional vs Non-functional Requirements: Examples and Types”

  1. 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.

Leave a Reply