Определимся с понятием
Название на русском | Название на английском |
Функциональные требования (ФТ) | Functional Requirements ( FR ) |
Нефункциональные требования (НФТ) | Non-Functional Requirements ( NFR ) |
Функциональные требования — это то, что делает система.
Нефункциональные требования — это то, как это делает система. Как правило, это связано с ограничениями системы (производительность, масштабируемость)
Типы нефункциональных требований
С пониманием функциональных требований — все относительно просто. Поскольку это то, что делает система, в качестве простого примера, это может быть — регистрация пользователя на сайте.
С пониманием нефункциональных требований все немного сложнее. В идеальном мире, где вы никуда не спешите, можно сформировать НФТ для каждого типа:
- Производительность
- Безопасность
- Масштабируемость
- Надежность
- Usability
- Совместимость
- Логирование и мониторинг
- Соответствие стандартам
Но из практики системных аналитиков, у вас будет время на формирование только НФТ в виде производительности, масштабируемости и может быть — безопасности. Назовем это базовыми типами, которые должны присутствовать в вашей документации. Если вы добавите еще больше типов — это зачтётся в карму.
Все, что не описано в доке, обычно трактуется в пользу бизнеса.
Например, если не описать и не завалидировать, что минимальная поддерживаемая версия приложения, где доступен функционал вашего сервиса, условно 10.0, то бизнес обязательно раскатит на версии ниже, где функционал недоступен.
Производительность
Хочу отдельно поговорить о понятии — производительность. У большинства учеников возникает ощущение, что понятие производительности ограничена только скоростью обработки сервиса — т.е. бекендом. При этом игнорируя производительность передачи данных от фронта на бек и получения результата.
Давайте разберем подробнее, предположим у нас есть микросервис — калькулятор, который просто складывает числа (как 2 + 2 ). Но в качестве аргументов, на вход он принимает портянку из 10к+ символов:
Шаг | Операция | Время обработки(ms) |
---|---|---|
1 | Бекенд принимает данные в виде XML на 10к+ строк | 0.1 |
2 | Бекенд делает валидацию данных | 0.1 |
3 | Бекенд должен найти в этой XML значения, соответствующие определенным условиям | 0.5 |
4 | Сделать сложения ( как 2+2 ) | 0.001 |
5 | Отформатировать ответ для фронта | 0.1 |
Итого | не верное значение | 0.001 |
Итого | верное значение | 0.801 |
Многие аналитики, отвечая на этот вопрос, отделяют все шаги от шага #4, опуская все предшествующие и последующие операции. А ведь они будут выполнять в рамках одной операции (трейса).

Несмотря на то, что не все аналитики описывают все типы нефункциональных требований, в совокупности с функциональными требованиями, это описания, отличный вклад в архитектуру будущего ПО. Поскольку формируя НФТ, вы декомпозируете задачу, а НФТ диктует будущую архитектуру.
Вернемся к прошлому примеру — регистрация пользователя.
Мы должны сформировать список требований, которые хорошо будут решать эту задачу. Например, нам необходимо зафиксировать, что форма регистрации должна отдаваться пользователю за 0.01мс. И отклик на кнопку «зарегистрироваться», после ввода всех данных должна быть до 1мс в пиковых значения нагрузки до 10k rps (request per second).
Пример базовых НФТ
ФТ | НФТ |
---|---|
Регистрация пользователя | * Время ответа при пиковой нагрузки на клик «зарегистрироваться» [ Производительность ] * Протокол передачи данных ( HTTP/ HTTPS ) [ Безопасность ] * Формат хранения пароля : hash/открытый вид [ Безопасность ] |
Практика
Проведем с вами тестированием, где вам нужно будет определить, какие атрибуты будут являться НФТ. Подчеркиваю, что в качестве примера ФТ — мы рассматриваем совершенно обычную «жарку на сковороде», не умной устройство или ПО. А просто обычную жарку на сковородке, скажем, яиц =)
Если возникнет сложность, посмотрите подсказки, там будет описание что из атрибутов НЕ является НФТ.
Подсказки
Отлично жарить яйца — это ФТ, отвечает на вопрос — что делать.
Диаметр сковороды — Это техническая спецификация (размер), а не требование к качеству или эксплуатации.
Сковорода должна продаваться с лопаткой — Это коммерческое условие (комплектация), а не свойство самого продукта.
Итак, давайте закрепим, список компромиссов между детально сформированными НФТ и рисками.
