To get the product you need, it is crucial to first compile a list of its crystal clear functionality and specifications. It is not enough to describe the idea of what the future system as a whole should do. It is necessary to clearly indicate how its different components should work with each other, how the user path should look like, how users achieve their goals, what the indicators of a properly functioning system are, and so on. To that end, the functional and non-functional requirements should be listed. Before getting them to be explored let's get started with the basics needed to be in the loop of your web app development process.
Types of Product Requirements and questions to be answered
Product requirements are being determined in the first stage of the development process. In this case, the customer and the development team are involved: the first describes the expectations of the product and the goal to be achieved, and the engineers determine which technical stack and what skills will be required to achieve the goal. The alignment of goals, requirements, and opportunities in the first stage will eliminate possible difficulties in further cooperation.
Product requirements are usually documented and cover categories such as system capabilities, time frames, potential risks, purpose, and system functionality.
The product requirements document should answer the following questions:
- Who is the audience of the product?
- What are the needs of a particular user?
- What are the ultimate benefits for the user of this product?
- What are the business objectives and goals of the product owner?
- What technologies the development team is planning to use to achieve the above?
The product requirements cover all aspects of the product itself and its development process, so different types of requirements are gradually emerging depending on their purpose/need.
Types of Product Requirements
Product requirements determine the end result. If they are set incorrectly, the product may be faulty. For this reason, the list of product requirements is established in the first stages of software solution planning.
This point should describe the marketing and financial tasks that the client expects to solve using the product that is being developed. This includes increased conversion, sales growth, more fast customer requests handling, business scale-up, etc.
The product is evaluated from the user's perspective to answer the question of how good the user experience is. This includes the user-friendly Personal Account, the page loading speed, and the availability of required sections and data.
They describe all those functions needed to implement to achieve the goals of business and users. This may include features such as sorting goods by price, manufacturer, materials, etc., or the ability to multi-factor authentication to achieve the highest possible level of system security.
This type of requirements does not describe the product's functions, but it does describe the properties and rules to which it must comply. For example, there is a multifactor authentication function. Its attribute is the required number of characters in the password - for example, 10, where the numbers and underscores are allowed.
This includes requirements that determine how, using which technologies and tools all of the above requirements are to be implemented.
While each type of requirement is critical to product success, two of them are of paramount importance.
Why are Functional and Non-functional Requirements critical?
Almost 50% of interviewed developers confirm that incorrectly defined requirements to the project lead to errors, budget overspending and risks.
Functional and non-functional requirements refer to vital aspects of software operation, such as security, performance, availability, user experience, etc. Not being defined in the first stages, these requirements jeopardize the correct functioning of the product, making it inconvenient to use and interfering with business goals.
Some large technology companies put their product development requirements publicly. Thus, they set common standards for all developers to get products with the most advanced user experience.
What are Functional Requirements?
A functional requirement is what the entire system or its individual components should be. It covers all the functions that the software must perform. In turn, the term "function" means the outputs needed for a system to properly perform, the inputs it produces, and its behavior. This includes all the functionality describing what the system is supposed to do.
The aspects of system functionality are as follows:
- Data processing;
- Business processes;
- User interaction;
- System use cases (possible scenarios where a system might be involved);
- Technology stack (languages, frameworks, APIs, database, operating systems, and other tools for software-to-be), etc.
Functional Requirements Types and Examples
All requirements of this type are better to maintain structured to get them implemented properly.
Types of functional requirements:
- Business rules;
- Administrative functions;
- Data management;
- Certification requirements;
- Authorization levels;
- Adjustments and cancellations;
- Audit tracking;
- External interfaces;
- Legal requirements, etc.
Functional requirements examples:
- Set data access levels; for example, income data inside the system should be available only to users at the Administrator/Editor level;
- Automatic customer verification for compliance with ABC contact management system;
- Integration of software with banking API;
- Ability to record sales in the sales system;
- Revenue data can only be viewed by employees at the manager level;
- The system should not operate if the external temperature is below 4 degrees Celsius;
- The e-commerce system shall process at least 8 transactions per second;
- All system data must be backed up every 24 hours. Backups are stored in a secure location that is not in the same building as the system.
How to write Functional Requirements Document
To compile a list of functional requirements should be guided by the documents described below.
1. FRS (Functional Requirements Specification) Document
There should be key software solution features out there. There is no need to try to cover all the requirements even before coding. They will be added as the product is developed.
The document should cover such issues:
- Purpose: What is the value of the system? What is it being developed for?
- Description: All the functionality of the product (even if it’s MVP - Minimum Viable Product) and how it can be implemented.
- Requirements: Features, the connection between functions, database specifications, etc.
2. Use Cases Document
This document is to define all the possible scenarios of user interaction with the system, how the system should respond to each specific user action, which scenarios of product use, and what each function is.
The document should specify the types of users (readers, administrators), the list of functionality available for each type of user, the correlation between several system elements at the user-system level.
3. User Stories Document
The "User stories" document describes interaction with the system from the user's perspective. The interaction motives and user expectations are considered.
Recommended structure of the "User stories" document:
- User needs (find a product or best price, make an appointment with a doctor);
- Actions from the user's point of view (which page is accessed, which link is clicked, which request is entered in the search bar, etc.);
- Backlog and progress: This includes how a function chosen by the user is implemented, i.e. the request for execution, execution, result.
Working with a "User stories" document is often more useful than expected. Thanks to a detailed analysis of possible user behavior, it is possible to establish that some use cases are redundant or to be replaced.
4. Functional Decomposition
This is a structure where complex functionality is broken down into structural parts. Functional fragmentation facilitates the development process at an early stage and allows for a more precise estimation of the project duration and cost. Besides, if something goes wrong, it is possible to go back to the structure and find out what part of the system has failed.
What are Non-functional Requirements?
They define the attributes of software quality. This includes a set of standards against which the quality of a particular system is judged, such as page load speed.
- Help ensure system efficiency as a whole and its components.
- Their compliance leads to the users’ needs satisfaction.
- They can be used to impose restrictions or bans on the system. For instance, the site should be loaded in 3 seconds, the number of users at a time should be 10 000.
Non-functional Requirements Types and Examples
When compared to functional requirements, they look unclear and difficult to capture.
Types: Availability, Scalability, Capacity, Reliability, Data Integrity, Recoverability, and so on.
- The primary password cannot be reused.
- Users must change the originally given password immediately after the first successful login.
- Every user’s attempt to access the system component must be recorded in the audit trail.
- The ability of the system to switch from one operating system (OS) to another.
- The ability of the system to process a certain number of user requests/users without functional failures.
- The need to verify such options as data privacy, intellectual property rights, technology export.
- A properly performed system should have 999/1000 or 99% availability. This means that out of every 1000 requests for this platform, 999 must be satisfied.
- For all site pages, the color of their elements and the background color must be the same or follow well-defined settings.
How to write Non-functional Requirements Document
Non-functional requirements include those that help define user expectations and maintain product quality. The list of non-functional requirements is specific to each product. However, it is possible to define the key ones that must be considered.
1. Usability Requirements
- They help to determine how easy it is for users to interact with the product and meet their needs.
- The document states that the system should be intuitive, simple, and easy to use.
- It is important to specify what features are necessary, as well as to exclude all those distracting users from meeting their needs.
- The interface must be correctly understood at the first interaction and be easy to remember and repeat at the second interaction. The way the user should understand each component should be described in the document.
2. Legal Requirements
This type of requirement relates to law compliance. The product owner and the development team must be aware of the industry laws to which the product must comply, as well as the necessary licenses and possible penalties. This requires a comprehensive list of laws, licenses, and other aspects of legal activity of the product being developed to be compiled in cooperation with the legal department.
This aspect concerns possible vulnerable product's points. For this purpose, it is necessary to analyze other similar systems on the market and make a list of their functionality, capabilities, and shortcomings. At this stage, it is crucial to study current technology reports and industry innovations. It is also necessary to examine, together with the IT department, common problems typical for the technology stack applied to avoid possible problems.
The performance indicator is responsible for the product's speed of response to the user's actions, including mouse click response, keystroke response, and output speed in response to a request.
Non-functional performance requirements do not evaluate what is to be implemented, but how it is to be implemented. They are difficult to measure and objectively assess by clear criteria. And yet every such aspect has to be described, which will streamline the development process and avoid chaos, as well as simplify the testing process.
Difference between Functional and Non-functional Requirements
To get a big picture of the issue at hand, let’s dive into the differences between both of these requirements.
- If to describe them as parts of speech, the functional requirement is a verb, while the non-functional requirement is an adjective.
- The functional requirement is the essence of the system, its main function; the non-functional requirement defines the attributes of quality and performance of the system.
- Functional requirements define missing requirements, while non-functional requirements help ensure clear and easy interaction with software and a good user experience.
What is tested at the first and second stages?
1. Functional requirements: API testing, Functional testing of the whole system, Integration, End to End testing, etc.
2. Non-functional requirements: Usability, Performance, Security, Stress testing, etc.
Key issues to consider when developing the system:
- Each requirement can be interpreted differently by each team member;
- One requirement may conflict with another (e.g. the user needs to specify his/her personal data, but their use is forbidden);
- All kinds of obvious requirements, which, however, should be discussed within the team as a mandatory part of agile project management.
Advantages of Functional and Non-functional Requirements
To get an idea of the benefits of both types of requirements, it is better to list them. This helps to be guided by clearly defined requirements so that you don't miss out on something important to the system performance.
Key benefits of pre-defined and well-considered functional requirements:
- It is possible to determine which features are missing and what the expected maintenance and behavior of the system looks like;
- With clearly defined functional requirements, errors can be detected before the system is available to users;
- Conditions required for users to achieve goals, tasks, and actions in project management can be implemented.
The advantages of non-functional requirements are as follows:
- They help to ensure software compliance with legal rules and regulations;
- They are used to state a system security policy;
- Availability, performance, and reliability of the software system are possible when non-functional requirements are met;
- Good user experience and easy software management is provided.
Functional vs Non-functional Requirements based on real examples
To better understand the difference between functional and non-functional requirements, it makes sense to explore the difference using particular examples.
This social network is an application with a huge amount of constantly updated and accumulated content. Based on this example, one can make assumptions about the functional and non-functional requirements imposed on such systems.
Functional Requirements for Instagram
According to the above structure of the "Functional requirements specifications document", functional requirements can be described as follows:
- User Stories. Users want to use Instagram to upload their photos, videos and texts, as well as to be able to respond to the content shared by other users in this application.
- Use Cases. The first page that a user gets to when entering Instagram is the news feed with images/video + text field, as well as users' stories field. From this point, the user can interact with the content through available functionality.
- Additional Functionality. Photo filters, automated Instagram stories, search bar, push-notification, automated location tagging and so on.
Non-functional Requirements for Instagram
Performance. In the case of Instagram, where users view more of someone else's content than they upload their own (80/20), the speed of uploading content and overall system performance is of paramount importance.
Usability. This indicator implies that the application should provide users with easy-to-use and intuitive navigation both in their profile and in between other system elements. Using the features of the system should be as simple and fast as possible: images and videos should be uploaded and edited in 2 clicks, filters, places and other options should be memorized by the system for easier and faster use of Instagram.
Scalability and Reliability. The application must deliver content with minimal delay, run smoothly in low-latency conditions, and provide scalability to meet the needs of millions of users.
Security. Instagram provides users with a high level of security. The platform has authentication protocols, API integration, chat profiles, direct message encryption, user activity, photo usage and embedding. Thanks to such security options Instagram users can manage their content, for example, delete their profiles and all related content.
YouTube is the world's largest video hosting, a platform that allows any user with Internet access to upload their videos to YouTube, view other people's and their own videos, comment, mark the video as liked or disliked, and do other operations with video content.
Functional Requirements for YouTube
User stories. YouTube users follow these goals:
1. To watch/listen to videos based on their preferences and interests;
2. To upload their own videos and develop their YouTube channels to monetize traffic.
Users want the YouTube recommendation system to offer them videos that they are most likely to enjoy.
Use Cases. The first things users face when logging on to YouTube are videos they've seen before and suggestions based on related topics; updates to the channels to which users are subscribed. From this point they can already fully interact with video hosting, including - go to "My Channel" and manage their own videos.
When watching any video, you can use the Like/Dislike feature, add videos to your own lists, schedule to watch later, download videos, subscribe to channels, share videos in social networks and place them on other sites using the built-in code.
Additional Functionality. Live chat, YouTube Creative Studio (available after app downloading), YouTube Premium, paid purchases and subscriptions, incognito mode, etc.
Non-functional requirements for YouTube
Performance. The playback speed of videos already available for viewing is of paramount importance. The fact is that the main purpose of using video hosting is to view someone else's video for free.
Usability. The usability requirement implies that the interaction with the platform must be done in the shortest and easiest way, as soon as the user enters the application. There should be no distracting or confusing elements or suggestions. Options such as the ability to change the decision to watch a video, go to "My Account", check the watch history, go to the section for creating video content must be implemented in 1-2 clicks.
Scalability and Reliability. Video hosting YouTube is the second most visited site in the world. Its computational power, scalability, and reliability must be sufficient to serve 2 billion users and provide smooth upload and playback of 500 hours per minute.
Security. YouTube provides its users with a high level of security for their data:
- The YouTube Kids platform was created as a way to protect children's audience from adult content;
- All pages are protected by SSL;
- There are strict rules governing what is allowed to be published and what should be blocked;
- Prohibited content is automatically detected and blocked; there is a "Complaint" function;
- The viewing history is collected in the relevant section of the user's personal account; there is an incognito mode;
- There is access to YouTube recommendations on the protection of data and devices synced with Google through a user-selected account;
- It is possible to manage the rules for displaying ad units. Next to each ad there is an option "Why do I see this ad?". By clicking on this option, you can set parameters that will prevent you from viewing this ad again.
Functional and non-functional requirements are among the most vital to ensure that software solutions, that are being developed, work as planned and designed. When the functionality of a product is clearly described and aligned with the requirements for each function, the software development process will be as smooth as possible. Clear-cut requirements are the basis not only for the proper matching of the client's tasks with the capabilities of the developers’ team, but also for the proper budget allocation.
We at DDI Development also start working with client projects with this step. If you are going to build the right product with the right team - whether it's a staff augmentation or an outsourced project - write to us or call us. Let your business expectations be met by software that is properly performed and designed within budget.