Классификация требований и категории нефункциональных требований
Коротко Разделите требования на несколько понятных типов, используйте четыре категории как подсказки для выявления нефункциональных потребностей и проверяйте каждое требование — и весь их набор — по короткому списку характеристик качества.
По материалам: К. Вигерс, Дж. Битти, «Разработка требований к программному обеспечению», 3-е изд., гл. 11; Г. Косцевич, скетчноут «Requirements»; Ю. А. Маглинец, «Анализ требований к информационным системам», лекция 2.
На этой странице
Главные идеи#
Модель Вигерса в общих чертах#
В модели Карла Вигерса бизнес-правила влияют на бизнес-требования (их фиксируют в документе концепции и границ), из бизнес-требований вытекают пользовательские требования, а из них — функциональные требования. Параллельно идут атрибуты качества, требования к внешним интерфейсам и ограничения. Функциональные и нефункциональные требования сходятся в спецификации требований к ПО (SRS). Руководство BABOK® делит требования иначе (бизнес-требования, требования заинтересованных сторон, требования к решению, переходные требования), но две схемы достаточно хорошо соотносятся друг с другом. Уровни подробно разобраны на странице Уровни и типы требований.
Четыре практические категории нефункциональных требований#
Автор скетчноута «Requirements» Г. Косцевич ставит модель Вигерса рядом со схемой BABOK и группирует нефункциональные требования (non-functional requirements, NFR) в четыре корзины. Используйте их как подсказки при выявлении:
| Категория | О чём спросить |
|---|---|
| Ограничения | Физические ограничения, законы и нормативные акты, бизнес-правила, работа на нескольких площадках |
| Производительность | Как часто используются функции, объёмы данных, точность данных, как долго хранятся данные, как быстро система должна реагировать, как быстро должны обновляться данные |
| Пользовательский опыт | Физический доступ, сколько требуется взаимодействия, обучаемость, соответствие культуре, простота использования |
| Изменчивость | Сопровождаемость, переносимость, доступность, масштабируемость, ожидаемая скорость изменений, надёжность |
Семь характеристик отдельного требования#
Вигерс и Битти (гл. 11) перечисляют семь характеристик и указывают, кто лучше всего может оценить каждую:
- Полнота — требование содержит всю информацию, нужную для реализации. Известные пробелы явно помечайте как TBD (подлежит определению).
- Корректность — требование точно описывает нужную возможность и не противоречит родительскому требованию. Оценивают это представители пользователей, а не аналитик.
- Осуществимость — требование можно реализовать в известных технических, бюджетных и временных рамках. Оценивают это разработчики.
- Необходимость — требование прослеживается до источника, обладающего полномочиями, и до бизнес-цели. Вы можете ответить на вопрос «зачем это здесь?».
- Приоритизированность — у требования есть приоритет реализации.
- Однозначность — все читатели понимают требование одинаково. Авторы описывают два вида неоднозначности: автор сам видит больше одного прочтения или, что опаснее, каждый читатель видит своё прочтение, которое кажется ему очевидным.
- Проверяемость — тестировщик может составить тест, который покажет, что требование выполнено. Без этого вопрос «готово ли?» становится делом мнения.
Четыре характеристики набора требований#
- Полнота — ничего не упущено. Абсолютная полнота на практике недостижима, а любая спецификация с TBD формально неполна.
- Согласованность — нет конфликтов с требованиями того же или более высокого уровня. Записывайте автора каждого требования, чтобы при конфликте знать, к кому обратиться.
- Модифицируемость — у каждого требования уникальный ID, и оно записано один раз. Текст, продублированный в нескольких местах, рано или поздно разойдётся.
- Трассируемость — каждое требование можно связать назад с его источником и вперёд с дизайном, кодом и тестами. Записывать каждую связь не обязательно, но формат должен это позволять: короткие формулировки с уникальными номерами, а не длинные повествовательные абзацы.
Другие версии списка#
В скетчноуте «Requirements» дан более короткий список из шести характеристик: ясность, полнота, применимость, приоритизированность, реализуемость (подтверждают разработчики) и тестируемость (подтверждают тестировщики); проверяют их с помощью взаимных проверок (peer review) и сквозных просмотров (walkthrough). Курс лекций Маглинца, опирающийся на работы IEEE и Вигерса, перечисляет двенадцать свойств. Он добавляет числовую метрику для каждого нефункционального требования, упорядочивание и по важности, и по стабильности, разделение на необходимые и просто полезные требования, а также согласованность как между уровнями, так и внутри уровня. Маглинец использует и треугольник компромиссов «ресурсы — время — границы»: если меняется одна сторона, должны подстроиться и другие; это ещё одна причина формулировать каждое требование только один раз.
Откуда берутся требования#
Требования приходят от людей (заинтересованных сторон) и из документов (существующих требований, стандартов). Проверяйте, что информация достоверна и актуальна, при необходимости привлекайте эксперта в предметной области и всегда указывайте заинтересованную сторону как источник требования. Не придумывайте требования сами.
Как применять#
- Прогоняйте каждое новое требование через семь характеристик, прежде чем отдавать его на ревью.
- Закрепите каждую характеристику за подходящим проверяющим: пользователи — корректность, разработчики — осуществимость, тестировщики — проверяемость.
- При каждой фиксации базовой версии проверяйте набор: ищите дубликаты, TBD и требования без источника или автора.
- Используйте четыре категории нефункциональных требований как список подсказок для интервью, чтобы нефункциональные потребности не откладывались на самый конец.
Пример#
Черновое требование в «Мастерской», вымышленной сети веломастерских: «Система должна быстро уведомлять клиентов, когда их велосипед готов».
- Однозначность / проверяемость: не выполнено. У «быстро» нет меры, а «уведомлять» не называет канал.
- Полнота: не выполнено. Что считается состоянием «готов»?
- Необходимость: выполнено. Требование трассируется к цели — меньше звонков на стойку приёма с вопросами о статусе.
- Приоритизированность: отсутствует.
Переписанное требование: «FR-NOT-03. Когда механик переводит ремонтный заказ в статус Готов к выдаче, система должна в течение 5 минут отправить клиенту SMS и письмо по электронной почте. Приоритет: высокий. Источник: совещание управляющих мастерскими по итогам ревью».
Чек-лист#
- У каждого требования есть уникальный ID, автор и источник.
- Нет расплывчатых слов без меры («быстро», «удобный для пользователя»).
- У каждого нефункционального требования есть единица измерения и целевое значение.
- Каждое требование можно протестировать, и вы можете сказать как.
- У каждого требования есть приоритет.
- Ни одно требование не записано в двух местах.
- Открытые вопросы помечены TBD, и у каждого есть ответственный.
- Обсуждены ограничения, производительность, пользовательский опыт и изменчивость.
Источники и что почитать#
- K. Wiegers, J. Beatty. Software Requirements, 3rd ed. Microsoft Press, 2013. Рус. изд.: К. Вигерс, Дж. Битти. Разработка требований к программному обеспечению, 3-е изд. М.: Русская редакция; СПб.: БХВ-Петербург, 2014. Гл. 11.
- Г. Косцевич. Requirements (скетчноут).
- Ю. А. Маглинец. Анализ требований к информационным системам: конспект лекций. Красноярск: Сибирский федеральный университет, 2007. Лекция 2.
- IIBA. A Guide to the Business Analysis Body of Knowledge (BABOK® Guide), version 3. International Institute of Business Analysis, 2015. Рус. изд.: Руководство к своду знаний по бизнес-анализу (Руководство BABOK®), версия 3.0.