Требования: виды и качество
Уровни требований
Классическая схема по Вигерсу — от «зачем» к «как именно»:
| Уровень | Отвечает на вопрос | Пример |
|---|---|---|
| Бизнес-требования | Зачем бизнесу это нужно | Сократить время обработки заявки с 2 дней до 4 часов |
| Пользовательские требования | Что пользователь хочет сделать | Менеджер хочет видеть все новые заявки в одном списке |
| Функциональные требования | Что должна делать система | Система должна отображать список заявок со статусом «Новая», отсортированный по дате создания |
Рядом с ними живут:
- Нефункциональные требования — атрибуты качества: скорость, надёжность, безопасность и т.д.
- Бизнес-правила — правила предметной области, не зависящие от системы. Например: «скидка не может превышать 30%».
- Ограничения — то, что сужает выбор решения. Например: «только PostgreSQL», «хранение данных в РФ», «срок — до 1 марта».
Схема Вигерса: где фиксируются и откуда берутся требования
Каждый уровень требований описывается в своём документе, и у каждого свои источники:
| Тип требования | Где фиксируется | Источники |
|---|---|---|
| Бизнес-требования | Документ концепции и границ (Vision & Scope) | Спонсор и заказчик проекта, руководство, владелец продукта, маркетинг, бизнес-кейс и стратегия компании, анализ рынка и конкурентов |
| Пользовательские требования | Документ пользовательских требований: варианты использования, user story, сценарии | Представители классов пользователей и «защитники продукта» (product champions), интервью и воркшопы, наблюдение за работой, анализ задач пользователей |
| Функциональные требования | Спецификация требований к ПО (SRS) | Выводятся аналитиком из пользовательских требований, бизнес-правил и атрибутов качества; уточняются с разработчиками и архитектором |
| Бизнес-правила | Каталог бизнес-правил | Корпоративные политики и регламенты, законы и постановления, отраслевые стандарты, вычислительные правила (формулы, тарифы) |
| Атрибуты качества | SRS, раздел нефункциональных требований | Пользователи, эксплуатация и служба поддержки, безопасность, архитектор, SLA похожих систем, ожидаемая нагрузка от бизнеса |
| Внешние интерфейсы | SRS, раздел интерфейсов; спецификации API | Владельцы смежных систем, документация внешних API, оборудование, протоколы обмена |
| Ограничения | SRS, раздел ограничений | Корпоративные ИТ-стандарты, архитектурная служба, бюджет и сроки, требования к платформе, регуляторы |
| Системные требования | Спецификация системных требований | Для систем из нескольких подсистем, в том числе с оборудованием: распределяются по подсистемам (ПО, железо, люди) |
Типичные источники требований по Вигерсу
- Интервью и обсуждения с пользователями — основной источник; важно охватить все классы пользователей.
- Описания текущих бизнес-процессов и того, что в них не устраивает.
- Документация существующей системы: руководства пользователя, старые ТЗ, отчёты, экранные формы. Помогает понять, что нужно сохранить, а что изменить.
- Анализ рынка и конкурентов: какие функции есть у похожих продуктов.
- Обращения в поддержку и отчёты о проблемах: реальные боли пользователей текущей системы.
- Маркетинговые опросы и анкеты: когда пользователей много и нужно понять предпочтения большинства.
- Наблюдение за работой пользователей: выявляет то, что люди делают по привычке и не упоминают на интервью.
- Анализ сценариев задач пользователей: от задач пользователя к функциям системы.
- События и реакции системы: какие внешние события (сигналы, сообщения, время) должна обрабатывать система и как на них реагировать.
- Законы, регламенты и стандарты: обязательные требования, о которых стейкхолдеры могут не упомянуть (152-ФЗ, PCI DSS, ГОСТ).
ФТ и НФТ
ФТ описывают, что делает система: функции, реакции на действия, обработку данных.
НФТ описывают, насколько хорошо и при каких условиях она это делает.
| ФТ | НФТ к той же функции |
|---|---|
| Система позволяет найти товар по названию | Поиск возвращает результат не дольше 1 с для 95% запросов при 500 одновременных пользователях |
| Пользователь может оплатить заказ картой | Платёжные данные передаются только по TLS 1.2+, номер карты не хранится в системе |
| Система формирует отчёт о продажах | Отчёт за год строится не дольше 30 с |
Классификации НФТ
FURPS+
- Functionality — функциональность. Сюда же часто относят безопасность.
- Usability — удобство использования.
- Reliability — надёжность: доступность, восстановление после сбоев.
- Performance — производительность: время отклика, пропускная способность.
- Supportability — сопровождаемость: тестируемость, расширяемость, локализация.
- + — ограничения: проектные, реализационные, интерфейсные, физические, юридические.
ISO/IEC 25010
Подробнее — в подразделах «FURPS+ и ISO/IEC 25010» и «Чек-лист НФТ».
Стандартная модель качества продукта. Характеристики: функциональная пригодность, производительность, совместимость, удобство использования, надёжность, безопасность, сопровождаемость, переносимость. В редакции 2023 года к ним добавили взаимодействие (interaction capability) и защищённость от вреда (safety).
Примеры измеримых НФТ
- Производительность: время отклика API каталога не больше 300 мс для 95-го перцентиля при 200 RPS.
- Доступность: 99,9% в месяц, то есть не больше 43 минут простоя.
- Восстановление: RTO — 1 час, RPO — 15 минут.
- Безопасность: пароли хранятся только в виде хеша (bcrypt/argon2), после 5 неудачных попыток вход блокируется на 15 минут.
- Удобство: новый оператор оформляет заказ без обучения быстрее чем за 3 минуты.
- Масштабируемость: система выдерживает рост числа заказов в 3 раза без изменения архитектуры.
Свойства хорошего требования
- Однозначное — все понимают его одинаково. Слова-маркеры проблемы: «быстро», «удобно», «и т.д.», «при необходимости».
- Проверяемое — можно написать тест и получить «да» или «нет».
- Полное — описаны входы, выходы, ошибки и граничные случаи.
- Согласованное — не противоречит другим требованиям.
- Атомарное — одно требование описывает одну вещь.
- Трассируемое — понятно, откуда оно пришло (цель, стейкхолдер) и где реализовано и проверено.
- Реализуемое — укладывается в технические и бюджетные рамки.
Вопросы для самопроверки
Чем ФТ отличаются от НФТ? Приведите пример к одной функции.
ФТ говорит, что система делает; НФТ — насколько хорошо или при каких условиях. Пример: «система отправляет SMS с кодом подтверждения» — это ФТ. «SMS доставляется не позже 30 с в 99% случаев» — это НФТ.
Откуда брать НФТ, если заказчик о них не говорит?
Из чек-листа категорий (FURPS+ / ISO 25010), законодательства (152-ФЗ, PCI DSS), требований эксплуатации и безопасности, текущих метрик и SLA похожих систем, ожидаемой нагрузки от бизнеса. Удобный формат — воркшоп с архитектором и эксплуатацией по сценариям атрибутов качества.
Что такое бизнес-правило и чем оно отличается от требования?
Бизнес-правило существует независимо от системы, это политика или закон предметной области. Требование описывает, как система будет это правило поддерживать. Правило: «возврат товара — в течение 14 дней». Требование: «система блокирует кнопку возврата, если с даты доставки прошло больше 14 дней».
Как сделать требование «система должна быть надёжной» проверяемым?
Разложить его на метрики: доступность (99,9%), время восстановления (RTO), допустимая потеря данных (RPO), поведение при отказе внешней системы. Для каждой метрики указать способ измерения.
Конспекты статей по теме
Подробные конспекты полезных статей. В конце каждого есть ссылка на оригинал и автора.
- Зачем нужны нефункциональные требования и откуда их взять — nortuldra (Наталья, МТС)
- Как правильно формулировать нефункциональные требования — Ольга Пономарева (System_Analyst)
- Нефункциональные требования: список, который вспоминают перед релизом. Часть 1 — Анастасия Нечепоренко (SiYa_renko, OTUS)
- Как мы создали шаблон функциональных требований — Татьяна Цикунова и Елизавета Маркова (МТС)
- Нефункциональные требования к программному обеспечению. Часть 1 — Наталья Желнова (enotinka)
- Non-functional requirements: что это и зачем они нужны — Егор Валинуров, Марина Лужецкая (Kaiten)
- Agile nonfunctional Requirements — Иван Загребельный (база знаний emacsway)
- Нефункциональные требования в качестве пользовательских историй — Майк Кон (перевод OTUS, MaxRokatansky)