Перейти к основному содержимому

Нефункциональные требования и зачем они нужны

Нефункциональные требования (НФТ) — это требования, которые определяют качество системы, а не ее функциональность. НФТ описывают, как система должна работать, а не что она должна делать. НФТ влияют на удовлетворенность пользователей и эффективность системы.

НФТ отличаются от функциональных требований (ФТ) тем, что ФТ описывают конкретные возможности или действия, которые система должна предоставлять или выполнять. ФТ отвечают на вопрос что, а НФТ — на вопросы как, когда, где, сколько и т.д.

Примеры функциональных требований

Для онлайн-магазина функциональные требования могут быть такими:

  • Система должна позволять пользователям регистрироваться и входить в свои аккаунты.
  • Система должна показывать список товаров с их ценами и описаниями.
  • Система должна позволять пользователям добавлять товары в корзину и оформлять заказы.

Примеры нефункциональных требований

Для той же системы нефункциональные требования могут быть такими:

  • Система должна быть доступна 99,999% времени.
  • Время отклика системы не должно превышать 1 сек (для 90% запросов).
  • Система должна защищать личные данные и платежную информацию пользователей от несанкционированного доступа.

Виды нефункциональных требований

Существует множество видов НФТ, и разные источники классифицируют их по-разному, например, Карл Вигерс, BABOK, ISO/IEC 25000. Для примера рассмотрим классификацию по FURPS+.

FURPS+ модель

  • Functionality (Функциональность) — это классические функциональные требования. Пример: Система должна иметь возможность выбора способа доставки на этапе оформления заказа.
  • Usability (Удобство использования) — это характеристики, которые определяют удобство и привлекательность системы для пользователей, такие как эргономика, эстетика, интуитивность, обучаемость и т.д. Пример: Система должна иметь адаптивный дизайн, который подстраивается под разные размеры экранов и устройств.
  • Reliability (Надежность) — это характеристики, которые определяют способность системы работать без ошибок и сбоев, а также восстанавливаться после них, такие как доступность, непрерывность, отказоустойчивость и т.д. Пример: Система должна иметь резервное копирование данных и автоматическое восстановление в случае сбоя.
  • Performance (Производительность) — это характеристики, которые определяют скорость и эффективность работы системы, такие как время отклика, пропускная способность, масштабируемость и т.д. Пример: Система должна обрабатывать не менее 1000 запросов в секунду при нагрузке до 10 000 одновременных пользователей.
  • Supportability (Поддерживаемость) — это характеристики, которые определяют легкость сопровождения и модификации системы, такие как тестируемость, документированность, совместимость и т.д. Пример: Система должна быть написана на языке программирования Python с использованием фреймворка Django.
  • "+" в названии модели означает, что к ней можно добавить другие категории НФТ в зависимости от специфики проекта, такие как экологичность, экономичность, правовые аспекты, ограничения и т.д. Пример: Система должна соответствовать требованиям GDPR по обработке персональных данных.

Статьи по теме

  1. Нефункциональные требования к программному обеспечению — Хабр
  2. О нефункциональных требованиях — Школа системного аналитика
  3. Высокая доступность и удобный интерфейс: разрабатываем нефункциональные требования — BABOK School
  4. Нефункциональные требования: как не пустить систему ко дну — Хабр, больше о практике
  5. Нефункциональные требования? Нет, модели обеспечения качества — Хабр, предложен интересный подход к проработке НФТ

Вебинары

  1. Немного о требованиях, которые все меняют — доклад с Analyst Days 2020
  2. Нефункциональные требования · При чем тут заказчик? Александра Галамага