Нефункциональные требования и зачем они нужны
Нефункциональные требования (НФТ) — это требования, которые определяют качество системы, а не ее функциональность. НФТ описывают, как система должна работать, а не что она должна делать. НФТ влияют на удовлетворенность пользователей и эффективность системы.
НФТ отличаются от функциональных требований (ФТ) тем, что ФТ описывают конкретные возможности или действия, которые система должна предоставлять или выполнять. ФТ отвечают на вопрос что, а НФТ — на вопросы как, когда, где, сколько и т.д.
Примеры функциональных требований
Для онлайн-магазина функциональные требования могут быть такими:
- Система должна позволять пользователям регистрироваться и входить в свои аккаунты.
- Система должна показывать список товаров с их ценами и описаниями.
- С истема должна позволять пользователям добавлять товары в корзину и оформлять заказы.
Примеры нефункциональных требований
Для той же системы нефункциональные требования могут быть такими:
- Система должна быть доступна 99,999% времени.
- Время отклика системы не должно превышать 1 сек (для 90% запросов).
- Система должна защищать личные данные и платежную информацию пользователей от несанкционированного доступа.
Виды нефункциональных требований
Существует множество видов НФТ, и разные источники классифицируют их по-разному, например, Карл Вигерс, BABOK, ISO/IEC 25000. Для примера рассмотрим классификацию по FURPS+.
FURPS+ модель
- Functionality (Функциональность) — это классические функциональные требования. Пример: Система должна иметь возможность выбора способа доставки на этапе оформления заказа.
- Usability (Удобство использования) — это характеристики, которые определяют удобство и привлекательность системы для пользователей, такие как эргономика, эстетика, интуитивность, обучаемость и т.д. Пример: Система должна иметь адаптивный дизайн, который подстраивается под разные размеры экранов и устройств.
- Reliability (Надежность) — это характеристики, которые определяют способность системы работать без ошибок и сбоев, а также восстанавливаться после них, такие как доступность, непрерывность, отказоустойчивость и т.д. Пример: Система должна иметь резервное копирование данных и автоматическое восстановление в случае сбоя.
- Performance (Производительность) — это характеристики, которые определяют скорость и эффективность работы системы, такие как время отклика, пропускная способность, масштабируемость и т.д. Пример: Система должна обрабатывать не менее 1000 запросов в секунду при нагрузке до 10 000 одновременных пользователей.
- Supportability (Поддерживаемость) — это характеристики, которые определяют легкость сопровождения и модификации системы, такие как тестируемость, документированность, совместимость и т.д. Пример: Система должна быть написана на языке программирования Python с использованием фреймворка Django.
- "+" в названии модели означает, что к ней можно добавить другие категории НФТ в зависимости от специфики проекта, такие как экологичность, экономичность, правовые аспекты, ограничения и т.д. Пример: Система должна соответствовать требованиям GDPR по обработке персональных данных.
Статьи по теме
- Нефункциональные требования к программному обеспечению — Хабр
- О нефункциональных требованиях — Школа системного аналитика
- Высокая доступность и удобный интерфейс: разрабатываем нефункциональные требования — BABOK School
- Нефункциональные требования: как не пустить систему ко дну — Хабр, больше о практике
- Нефункциональные требования? Нет, модели обеспечения качества — Хабр, предложен интересный подход к проработке НФТ