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



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



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



Например, ФТ для онлайн-магазина могут быть такими:

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

▪️Система должна показывать список товаров с их ценами и описаниями.

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



А НФТ для той же системы могут быть такими:

🔹Система должна быть доступна 99,999% времени.

🔹Время отклика Системы не должно превышать 1 сек (для 90% запросов).

🔹Система должна защищать личные данные и платежную информацию пользователей от несанкционированного доступа.



Какие виды нефункциональных требований существуют



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

Для примера, рассмотрим классификацию по FURPS+.



Functionality (Функциональность) — это классические функциональные требования. Пример: Система должна иметь возможность выбора способа доставки на этапе оформления заказа.



Usability (Удобство использования) — это характеристики, которые определяют удобство и привлекательность системы для пользователей, такие как эргономика, эстетика, интуитивность, обучаемость и т.д. Пример: Система должна иметь адаптивный дизайн, который подстраивается под разные размеры экранов и устройств.



Reliability (Надежность) - это характеристики, которые определяют способность системы работать без ошибок и сбоев, а также восстанавливаться после них, такие как доступность, непрерывность, отказоустойчивость и т.д. Пример: Система должна иметь резервное копирование данных и автоматическое восстановление в случае сбоя.



Performance (Производительность) — это характеристики, которые определяют скорость и эффективность работы системы, такие как время отклика, пропускная способность, масштабируемость и т.д. Пример: Система должна обрабатывать не менее 1000 запросов в секунду при нагрузке до 10 000 одновременных пользователей.



Supportability (Поддерживаемость) — это характеристики, которые определяют легкость сопровождения и модификации системы, такие как тестируемость, документированность, совместимость и т.д. Пример: Система должна быть написана на языке программирования Python с использованием фреймворка Django.



"+" в названии модели означает, что к ней можно добавить другие категории НФТ в зависимости от специфики проекта, такие как экологичность, экономичность, правовые аспекты, ограничения и т.д. Пример: Система должна соответствовать требованиям GDPR по обработке персональных данных.



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

1. Нефункциональные требования к программному обеспечению — Хабр

2. О нефункциональных требованиях — Школа системного аналитика

3. Высокая доступность и удобный интерфейс: разрабатываем нефункциональные требования — BABOK School

4. Нефункциональные требования: как не пустить систему ко дну — Хабр, больше о практике

5. Нефункциональные требования? Нет, модели обеспечения качества — Хабр, предложен интересный подход к проработке НФТ



Вебинары

▶️ Немного о требованиях, которые все меняют — доклад с Analyst Days 2020

▶️ Нефункциональные требования · При чем тут заказчик? Александра Галамага



#требования