Software Engineering: Functional Requirements and Non-functional Requirements

Tiempo de lectura: 3 minutos

Reading Time: 6 minutes

In the world of software development, it is common to talk about requirements to understand what a system should do. Requirements are divided into two main categories: functional requirements and non-functional requirements. In this post, we will explain the difference between these two categories, provide examples, and classify them to make it clear how they compare.

Functional Requirements

Functional requirements refer to the specific features and functionalities that the system must have to fulfill defined objectives. These requirements describe what the system does and how it does it. They focus on the actions that the system should perform.

For example, if you are developing an electronic billing system for a company, some functional requirements could be:

  • Allow the creation of an invoice
  • Allow the modification of an existing invoice
  • Allow the deletion of an existing invoice
  • Allow the search of invoices
  • Allow the download of an invoice in PDF format

It is important to note that functional requirements should be measurable, meaning that they should be testable to verify if they have been met or not.

Non-functional Requirements

Non-functional requirements, on the other hand, refer to characteristics that are not related to what the system does, but rather how it does it. These requirements focus on aspects such as performance, security, scalability, and usability. Non-functional requirements are critical for the user experience and can impact satisfaction and acceptance of the system.

For example, if you are developing an electronic billing system for a company, some non-functional requirements could be:

  • Application response time: the system must respond in less than 3 seconds to ensure a good user experience.
  • Scalability: the system must be able to handle at least 1000 invoices per month without performance degradation.
  • Security: the system must comply with the security standards established by the company.
  • Usability: the user interface must be easy to use and understand for end users.

It is important to note that non-functional requirements are difficult to measure and verify. They are typically specified in terms of goals or service-level requirements.

Comparison of Functional and Non-functional Requirements

The main difference between functional requirements and non-functional requirements is that the former focus on what the system should do, while the latter focus on how it should be done.

Another important difference is that functional requirements are measurable, while non-functional requirements are not in most cases. This is because non-functional requirements are more related to the user experience rather than the system’s functionality itself.

However, non-functional requirements are as important as functional requirements. User satisfaction and acceptance of the system heavily depend on the system’s ability to meet non-functional requirements. In fact, some argue that non-functional requirements are more important than functional requirements, as they directly impact user satisfaction.

It is important to consider both types of requirements from the beginning of a project. Ignoring non-functional requirements can result in an insecure, difficult-to-use, or non-scalable system, leading to a poor user experience and dissatisfaction. On the other hand, ignoring functional requirements can result in a system that does not fulfill its intended purpose and, therefore, is useless to the user.

Another way to compare functional and non-functional requirements is by classifying them into subcategories, which allows for a better understanding of each type of requirement.

Classification of Functional Requirements

Functional requirements can be classified into different subcategories, as shown below:

  1. Processing requirements: those that describe how information is processed within the system.
  2. Input/output requirements: those that describe how data is entered into the system and how results are presented.
  3. Storage requirements: those that describe how information is stored within the system.
  4. Performance requirements: those that describe the performance levels that the system must achieve.
  5. Usability requirements: those that describe how the user interface should be designed to be easy to use and understand for end users.

Classification of Non-functional Requirements

Non-functional requirements can also be classified into different subcategories, as shown below:

  1. Performance requirements: those that describe how performance goals of the system should be measured and met.
  2. Security requirements: those that describe how data and system information should be protected.Scalability requirements: those that describe how the system should handle future growth.
  3. Availability requirements: those that describe how system availability should be ensured for end users.
  4. Usability requirements: those that describe how the user interface should be designed to be easy to use and understand for end users.

Example of Functional and Non-functional Requirements Comparison

Let’s consider an example where a hotel reservation system is being developed. Some functional and non-functional requirements for this system could be:

Functional Requirements:

  1. The system must allow hotel room reservations.
  2. The system must allow hotel reservation cancellations.
  3. The system must display real-time room rates and availability.
  4. The system must send a confirmation email to the customer upon reservation.

Non-functional Requirements:

  1. The system must be available 24/7.
  2. The system must have a response time of less than 3 seconds to ensure a good user experience.
  3. The system must ensure the security of customer data, such as personal information and credit card details.
  4. The user interface must be easy to use and understand for end users.

As observed, functional requirements refer to specific functionalities expected from the system, such as the ability to make hotel room reservations, display rates and availability, and send confirmation emails. On the other hand, non-functional requirements relate to more general aspects, such as system availability, response time, and security of customer data.

In this example, both types of requirements are important. Functional requirements ensure that the system performs as expected, while non-functional requirements ensure that the system is secure, reliable, and user-friendly for end users.

Here is an example of a requirements table for a sales management system:

ID Requirement Name Description Priority Type
1 Customer Registration The system must allow the registration of new customers in the database. High Functional
2 Product Management The system must allow the management of products, including creation, modification, and deletion of products. High Functional
3 Sales Reports The system must generate sales reports showing total sales per day, week, month, and year. Medium Functional
4 Data Security The system must ensure the security of customer data and sales information. High Non-Functional
5 Integration with Social Media The system must allow integration with social media platforms like Facebook and Twitter to share promotions and special offers. Low Non-Functional

In this table, each requirement has a unique ID and is given a name and description to help understand what it is about. Additionally, a priority is assigned to indicate the importance of the requirement in the project, and it is classified as either functional or non-functional to assist in planning and system design.

Requirement number 1 refers to the functionality of customer registration in the system, making it a high-priority functional requirement. Requirement number 2 refers to product management, also a high-priority functional requirement. Requirement number 3 refers to generating sales reports, which is a medium-priority functional requirement.

Requirement number 4 relates to data security, making it a high-priority non-functional requirement. Requirement number 5 refers to integration with social media, making it a low-priority non-functional requirement.

By using a requirements table like this, an organized and detailed record of project requirements can be maintained, facilitating system planning and design. It also helps ensure that all important requirements are considered and met during project development.

In summary, functional and non-functional requirements are two types of requirements that should be considered in any software development project. Functional requirements describe what the system should do, while non-functional requirements describe how it should be done. Both types of requirements are equally important and should be considered from the beginning of the project to ensure that the system is useful, secure, reliable, and user-friendly for end users.

Leave a Comment