📜 ⬆️ ⬇️

Non-functional software requirements. Part 1

Introduction


When developing a new information system or introducing an existing one, you inevitably encounter the need to identify non-functional requirements for your system.

In this article I will talk about the following:



Non-functional requirements: what are they?


To begin with, the requirements for software products or information systems can be divided into two large groups. These are functional requirements (describing what needs to be implemented in a product or system, including what actions users should perform when interacting with them) and non-functional requirements (describing how a system or software should work, and what properties or characteristics it should have).
')
As a rule, when speaking of non-functional requirements, it is often said that quality attributes (i.e., requirements that determine the quality characteristics of the software or system being developed, such as performance, reliability, scalability), do not pay attention to other types of non-functional requirements, namely :


Examples of restrictions : “Development should be carried out on a vendor's platform X ”, “When authenticating a user, biometric identification methods should be used”.


Examples of business rules : “When the order is shipped, the manager must ask the accountant for a waybill and an invoice”, “If the payment on the invoice has not been received within 15 days, the order is considered canceled.”


Examples of external interfaces : “Ensure the following events are recorded in the operating system log: messages about starting and stopping service XX ”; “Ensure that the parameters of the program modules are recorded in the log: the scanner, the kernel, the anti-virus databases (information must be logged when the program is started and when the modules are updated)”







All these requirements must be defined and recorded before you proceed with the implementation of your system or product.

Non-functional requirements: how to determine them



Now that we have met with various types of non-functional requirements, it is a good idea to understand what needs to be done next.

First you need to create a template in which you need to list the main types of non-functional requirements. This template is necessary mainly in order not to forget any of the specified types of requirements. To compile this template you can use the following sources:

Non-functional requirements: work on definition

Both to determine functional and non-functional requirements, working groups are used, the members of which determine, verify and approve requirements. For non-functional requirements definition groups, it is especially important to involve not only analysts and users, but also architects and key product or system developers, as well as a testing team. The architect perceives non-functional requirements as input to the selection and design of the application architecture, and the testing team plans those load testing scenarios that will be used to verify non-functional requirements (mainly for quality attributes).

The roles played by the members of the non-functional requirements working group are described below.



An example of a script used to determine the performance requirements of a system module that sends notifications to site users by email:
1. The system receives a notification of the event initiating the distribution of notifications.
2. The system sends out alerts to addresses on the X distribution list using the Y template. The Z service is used to send messages.
3. In case of failure to complete the mailing, the system makes repeated attempts to mail.

Requirements for notification of the event initiating the distribution of notifications: the system should receive an alert no later than XX seconds after the occurrence of the event.
Requirements for sending notifications: all notifications must be sent no later than YY minutes after receiving notification of an event
Requirements for re-sending mailings after a failed attempt: the number of retries should be equal to 10, with an interval of 10 minutes after each unsuccessful attempt to send.

What questions need to be asked to the customer? In essence, there is only one thing: after how much time after the occurrence of the event, all users of the site should be guaranteed a notification.

Criteria for quality non-functional requirements

Both the functional and non-functional requirements are subject to the quality criteria of the requirements - i.e. a description of the qualities that quality requirements must meet.

The following are the main characteristics of the quality requirements.


The quality of non-functional requirements directly determines the quality of the product or system being developed and is achieved through an iterative process of determining and analyzing non-functional requirements with the coordinated work of the whole group involved in their development.

Quality attributes



This section will focus on the quality characteristics of a product or system.

Quality characteristics and software quality model


The definition of quality attributes is closely related to the quality model chosen for your product. The development of a quality model is carried out by a quality assurance team (which includes testers and which, of course, is not limited to them).

In the software industry there are several quality models adopted as standard. These models were developed in the 70s-80s of the last century and continue to be improved.

Among them are the following:

You can also call two more standards that can serve as a source for determining your quality model:



Quality characteristics in terms of impact on system architecture

All attributes of quality from the point of view of the system architecture can be divided into two large groups: the first group (runtime) are attributes related to the time of the application or system; The second group (design time) defines the key aspects of designing an application or system. Many of these attributes are interdependent.

Let us consider in more detail each of these groups.

Runtime group

This group includes the following quality attributes:


Design time group

This group includes the following quality attributes:


About how, where, when and where you need to take specific values ​​for all these parameters, I will explain in the continuation of this article.

Source: https://habr.com/ru/post/231961/


All Articles