📝

Качество требований

Как понять, что требование написано хорошо

📋 Содержание

Когда начинающий аналитик только приступает к написанию требований, часто кажется, что главное – просто зафиксировать, «что хочет бизнес».

Пример
«Нужно сделать удобный поиск документов»

На первый взгляд всё понятно. Но если отдать такую формулировку разработчику, тестировщику и дизайнеру, каждый может понять её по-своему.

💻 Разработчик
«По каким критериям искать? По названию?»
🧪 Тестировщик
«Как понять, что поиск действительно удобный?»
📊 Бизнес
«Почему пользователь не может найти документ по автору?»

Требование вроде есть, но работать с ним сложно. Хорошее требование – это не просто текст. Это договорённость между бизнесом, аналитиком, разработкой и тестированием о том, что именно должна делать система.

В BABOK – своде знаний по бизнес-анализу от IIBA – проверка требований описывается как отдельная задача. Её цель – убедиться, что требования достаточно качественные для проектирования, разработки, тестирования и согласования. Похожий подход есть и в IEEE 830 – стандарте IEEE по спецификации требований к программному обеспечению. BABOK IEEE 830

до ×100
дороже
оценочный ориентир: стоимость исправления дефекта может расти от этапа к этапу (не абсолютное правило) Boehm & Basili
47%
неуспешных проектов
не достигают целей из-за неточного управления требованиями PMI
61%
дефектов
связаны с некорректностью или неполнотой (588 дефектов, проект Bosch за 4,5 года) Исследование

1Что такое качество требований

Качество требований – это то, насколько требование понятно, полно и удобно для дальнейшей работы. Хорошее требование должно помогать при ответе на шесть простых вопросов:

Что должно произойти?
Какое действие выполняет система или пользователь
Кто это делает?
Какая роль участвует в действии
Когда это происходит?
При каком условии запускается действие
Какие данные нужны?
Какие поля, форматы и источники используются
Что получится в итоге?
Какой результат ожидается
Как это проверить?
Как понять, что требование выполнено правильно

Пример: «быстро» – это сколько?

Для обычного бытового разговора фраза «система должна быстро загружать список документов» нормальная. Но для разработки – нет. Слово «быстро» каждый понимает по-своему.

«Система должна быстро загружать список документов»
  • «Быстро» – субъективно: 1 с, 5 с или «лишь бы не зависало»?
  • Нет измеримого критерия – нельзя написать тест-кейс
  • Разработчик и тестировщик будут понимать по-разному
✅ Хорошо
«Система должна отображать первые 50 документов не более чем за 2 секунды при общем количестве документов до 100 000»
  • Загрузилось за 1,5 с → требование выполнено
  • Загрузилось за 6 с → требование не выполнено
  • Тест-кейс можно написать с первого прочтения
📖 Классические характеристики из BABOK и IEEE 830 : полнота · согласованность · корректность · реализуемость · однозначность · проверяемость · изменяемость · трассируемость. 📖 В академическом обзоре исследований по качеству требований среди наиболее часто изучаемых выделяются неоднозначность, полнота, согласованность и корректность.

2Хорошее и плохое требование

Хорошее требование

Хорошее требование помогает всем участникам проекта одинаково понять задачу. Оно обычно отвечает всем этим критериям:

Понятно написано
Не допускает разных трактовок
Описывает одну мысль, а не всё сразу
Связано с бизнес-задачей
Содержит важные условия
Не противоречит другим требованиям
Его можно реализовать
Его можно проверить
Пример хорошего требования
«Пользователь с ролью "Автор документа" может отправить документ на согласование, если заполнены обязательные поля: название документа, тип документа, владелец документа, срок действия и файл документа.»

Здесь понятно: кто выполняет действие · какое действие · когда доступно · какие условия должны быть выполнены.

Плохое требование

Плохое требование может выглядеть безобидно. Но как только команда начинает с ним работать, появляются вопросы. Donald Firesmith в своём анализе типичных проблем с требованиями показывает: размытые, противоречивые или неполные требования закономерно приводят к переделкам на поздних этапах, срыву сроков, росту стоимости и снижению качества конечного продукта. Поэтому важно не просто замечать проблему, но и понимать, что именно из-за неё пойдёт не так. Firesmith

«Пользователь может отправить документ, если всё заполнено»
  • Какой пользователь?
  • Куда отправить?
  • Что значит «всё заполнено»?
  • Какие поля обязательные?
  • Что делать, если что-то не заполнено?
«Пользователь с ролью "Автор документа" может отправить документ на согласование, если заполнены обязательные поля: название документа, тип документа, владелец документа, срок действия и файл документа»
  • Роль конкретна: «Автор документа»
  • Действие конкретно: «на согласование»
  • Условие конкретно: перечислены обязательные поля

Требование и готовое решение – не одно и то же

Иногда плохое требование появляется не потому, что оно размытое, а потому что команда сразу описывает решение, не разобравшись с задачей.

«Добавить кнопку "Экспорт"»
  • Не объясняет, какую проблему решает пользователь
  • Исключает другие варианты: отчёт в системе, автоматическая рассылка, общий дашборд
  • Если кнопка не подойдёт – переделка
«Пользователь с ролью "Руководитель отдела" должен иметь возможность получить список опубликованных документов за выбранный период, чтобы контролировать актуальность внутренних регламентов»
  • Понятна роль, цель, период
  • Команда выберет лучшее решение осознанно – кнопку, отчёт или дашборд
  • Не реализуется первая пришедшая в голову идея

3Основные дефекты требований

Ниже – самые частые проблемы, которые встречаются в требованиях. Кликните на карточку, чтобы увидеть подробный разбор с примерами:

⚖️
Неоднозначность
Несколько трактовок
🧩
Неполнота
Не хватает информации
Несогласованность
Требования противоречат
🚫
Некорректность
Не совпадает с реальностью
🔍
Непроверяемость
Нет критерия «выполнено»
🔗
Ссылка без описания
«Сделайте как там»

⚠️ Важно: описывайте не только успешный сценарий

Начинающие аналитики часто описывают только идеальный вариант: пользователь сделал действие, система всё сохранила, все довольны. Но реальная система должна понимать, что делать в нестандартных случаях.

«Пользователь загружает документ, система сохраняет документ»
  • Что делать, если файл слишком большой?
  • Что делать, если формат файла запрещён?
  • Что делать, если документ с таким названием уже есть?
  • Кто увидит ошибку? Можно ли повторить загрузку?
«Пользователь может загрузить файл документа в формате PDF, DOCX или XLSX размером не более 20 МБ. Если формат файла не поддерживается, система отображает сообщение: "Формат файла не поддерживается. Загрузите файл PDF, DOCX или XLSX". Если размер файла превышает 20 МБ, система отображает сообщение: "Размер файла не должен превышать 20 МБ"»
  • Явно указаны допустимые форматы
  • Явно указано ограничение по размеру
  • Прописаны тексты сообщений об ошибках
💡 Если аналитик описал только успешный сценарий, разработчик всё равно будет принимать решения по ошибкам и исключениям. Но это уже будут не бизнес-решения, а догадки. В практическом материале LANIT на Habr отдельно подчёркивается, что при подготовке требований важно описывать особые случаи, ошибки, альтернативные сценарии, роли, значения по умолчанию и поведение связанных элементов. Habr / LANIT

4Почему плохие требования дорого стоят

Может показаться, что плохое требование – это просто «плохая формулировка». Ну написали не очень точно, потом поправим. На самом деле проблема глубже.

Требование – это первый текст, с которого начинается цепочка работы. На его основе делают макеты, проектируют данные, пишут код, готовят тесты, создают инструкции. Если исходная формулировка неясна, эта неясность не исчезает сама по себе: она переходит в макет, затем в код, потом в тесты и в итоговое поведение системы.

Накопительная стоимость дефекта

Этап обнаружения Объём переделки Что нужно менять
Требования
минимум
Требование
Проектирование
×2-3
ТребованиеМакетПравила UI
Разработка
×5-10
ТребованиеМакетДанныеКод
Тестирование
×15-20
ТребованиеМакетКодТесты
После запуска
×100
Всё вышеИнструкцииПоддержка
Добавляется на этом этапе Уже затронуто на предыдущих этапах

Как это происходит на практике

Плохое требование не всегда сразу приводит к заметной проблеме. Обычно всё происходит незаметно.

📌 Конкретный пример: «актуальные документы»

Исходное требование: «Система должна показывать актуальные документы».

Аналитик не уточнил, что значит «актуальные». Команда решила, что это все документы, кроме удалённых. Разработчик сделал фильтр. Тестировщик написал проверки. Пользователи начали работать.

А потом бизнес говорит: «Нет, актуальные – это только опубликованные документы, у которых не закончился срок действия».

Теперь нужно переделывать не только одно предложение в требованиях. Придётся менять всё, что уже было сделано на основе неправильного понимания: фильтр, правила отображения, запросы к данным, тесты, иногда – обучать пользователей заново.

На раннем этапе достаточно было уточнить формулировку: «Актуальные документы – это документы со статусом "Опубликован", у которых дата окончания действия не заполнена или больше текущей даты».

📊 Boehm & Basili: поиск и исправление программной проблемы после поставки может быть в ~100 раз дороже, чем на этапе требований. Это хороший ориентир: чем позже нашли ошибку, тем дороже исправлять.   PMI: 47% неуспешных проектов не достигают целей из-за неточного управления требованиями.   Исследование Bosch: наиболее дорогими для исправления оказались несогласованность и неполнота требований.
Исследование 2022 года · Requirements Quality vs Process and Stakeholders' Well-being
Качество требований vs благополучие команды – Nordic Bank

Авторы изучали не абстрактные «плохие требования», а реальную организацию: подразделение скандинавского банка, которое разрабатывает веб- и мобильные приложения. Исследование построено на 25 интервью с четырьмя группами участников:

📋 Аналитики требований
Фокус: сохранить возможность уточнять и дорабатывать требования в процессе
💻 Разработчики
Фокус: понять, что именно нужно реализовать, какие ограничения и ожидаемый результат
🧪 Тестировщики
Фокус: понять, что именно проверять и по каким критериям считать результат верным

Главный вывод: качество требований влияет не только на код и сроки, но и на состояние команды. Когда требование написано плохо, команда тратит больше времени на уточнения, встречи, переписки, возвраты задачи и переделки. Участники говорили, что плохие требования заставляют людей выполнять работу, которую «кто-то должен был сделать раньше».

Ясность как приоритет
Все участники называли ясность ключевой характеристикой хорошего требования – но понимали её по-разному: для одних это отсутствие двусмысленности, для других – полнота или удобство в работе.
Самый опасный случай
Разработчик и тестировщик одинаково неправильно поняли требование. Тогда система работает «по написанному», но не так, как нужно бизнесу – и дефект не обнаруживается до финального показа заказчику.
Волны дополнительной работы
Время, которое можно было потратить на подготовку требования в начале, всё равно тратится позже – в виде срочных уточнений, хаотичных переделок и повторных проверок у тестировщиков.
Причины проблем
Слишком жёсткие сроки, недостаток технических знаний у аналитиков требований и отсутствие общего понимания, как в организации выглядит «хорошее требование». Подходы могут отличаться от команды к команде.
Источник: Svahnberg et al. «Requirements Quality vs Process and Stakeholders' Well-being: A Case of a Nordic Bank» — REFSQ 2022, Springer LNCS vol. 13216. Springer

Плохие требования – это не только плохие формулировки

Иногда требование изначально написано нормально, но плохо управляется дальше. Например, команда уже согласовала задачу, разработка началась, а потом появляются новые условия: добавить ещё одно поле, изменить правило согласования, добавить новый статус.

Сами по себе изменения – это нормально. Проблема начинается, когда они бесконтрольно добавляются в уже согласованную задачу. Тогда команда теряет границы работ, сроки становятся нереалистичными, а качество решения падает.

💡 Хорошая практика – фиксировать изменения отдельно: что меняется, почему меняется, влияет ли это на сроки, тестирование, интерфейс, данные и уже согласованные требования. Если новые условия появляются на позднем этапе, аналитик должен не просто принимать всё подряд, а обосновывать варианты – например, вынести изменения в отдельную доработку или пересмотреть сроки текущей. Habr / Ростелеком Habr / Яндекс Практикум

5BA vs SA: как проверяют требования

Бизнес-аналитик и системный аналитик часто работают рядом. Иногда их задачи пересекаются. Но фокус проверки может отличаться.

📋 Бизнес-аналитик
Бизнес-цель – требование решает задачу?
Реальный процесс – описание не расходится с работой бизнеса?
Роли и участники – понятно, кто что делает?
Бизнес-правила – ограничения и условия не потеряны?
Согласованность с заказчиком – команда и бизнес понимают одинаково?
Ценность требования – нет ли лишней функциональности?
🔧 Системный аналитик
Данные – какие поля нужны, типы и форматы?
Статусы и переходы – система правильно меняет состояние объекта?
Ошибки и исключения – описан не только успешный сценарий?
Влияние на API, БД и интеграции – технические изменения учтены?
Реализуемость – требование можно выполнить в текущей архитектуре?
Проверяемость – тестировщик может подготовить проверки?
Типичный вопрос BA
«Зачем пользователю нужна эта функция и какую проблему она решает?»
Типичный вопрос SA
«Откуда система берёт это значение, где оно хранится и что делать, если значение не пришло?»
BABOK рассматривает проверку требований как задачу, которая должна подтвердить, что требования достаточно качественные для дальнейшей работы. BABOK

Как может выглядеть проверка на практике

1
Самопроверка аналитиком. Аналитик перечитывает требование: понятно ли, кто что делает, при каких условиях и как это проверить.
2
Ревью с другим аналитиком. Другой аналитик может заметить то, что автор пропустил: неясные термины, противоречия, лишние допущения.
3
Ревью с разработкой. Разработчики помогают понять, можно ли реализовать требование и хватает ли данных.
4
Ревью с тестированием. Тестировщики смотрят, можно ли написать проверочные сценарии и понять, где результат «пройдено», а где «не пройдено».
5
Согласование с бизнесом. Бизнес подтверждает, что требование действительно описывает нужное поведение.

6Как вручную находить неоднозначность

Неоднозначность часто появляется не потому, что аналитик плохо старался. Просто привычный нам человеческий язык сам по себе неточный. Слова вроде «актуальный», «удобный», «быстрый» нормально звучат в разговоре, но плохо работают в требованиях.

6.1 Размытые слова – красные флаги в тексте

Слова, которые стоит искать в своих требованиях и каждый раз останавливаться, чтобы уточнить смысл:

быстроудобнопросто гибкоэффективноактуально корректносвоевременнооптимально

6.2 Стоп-слова в требованиях

Некоторые слова и формулировки должны сразу привлекать внимание аналитика. Они не всегда запрещены, но почти всегда требуют уточнения. Стоп-слова показывают место, где нужно остановиться и уточнить смысл – иначе команда начнёт додумывать правило сама.

Неясная формулировка Почему опасна Как уточнить
«актуальные документы» Непонятно: действующие, последние, опубликованные, неархивные? Документы со статусом "Опубликован", у которых дата окончания действия не заполнена или больше текущей даты
«при необходимости» Непонятно, кто и по какому правилу определяет необходимость Если документ относится к типу "Договор"
«в разумный срок» Нет измеримого критерия Не позднее 2 рабочих дней
«и т.д.» Список открыт – каждый поймёт его по-своему Перечислить полный список допустимых значений
«популярные форматы» Нет критерия популярности PDF, DOCX, XLSX
«система должна быть быстрой» Нельзя проверить Ответ системы – не более 2 секунд при 100 одновременных пользователях

6.3 Неясные роли

Слово «пользователь» без уточнения роли – один из самых распространённых источников путаницы. В системе одновременно могут работать авторы документов, согласующие, руководители отделов, администраторы. Разные роли имеют разные права, и требование должно это отражать.

💡 Пример
❌ Плохо
«Пользователь может согласовать документ»
Какой пользователь? Автор? Руководитель? Согласующий? Администратор?
✅ Хорошо
«Пользователь с ролью "Согласующий" может согласовать документ, если документ находится в статусе "На согласовании" и назначен этому пользователю»

6.4 Неясные местоимения

Местоимения «он», «она», «они», «это» делают требование неоднозначным, если из контекста не очевидно, к кому или к чему они относятся. Особенно опасно, когда в одном предложении упоминаются несколько участников – пользователь, система, согласующий. Читающий должен угадать, кто именно совершает действие.

💡 Пример
❌ Плохо
«Если документ содержит ошибку, он должен исправить её»
Кто «он»? Автор документа? Согласующий? Администратор? Система?
✅ Хорошо
«Если согласующий обнаружил ошибку, он нажимает кнопку "Вернуть на доработку". После этого система переводит документ в статус "На доработке" и назначает задачу автору документа»

6.5 Неопределённые термины

Терминологическая неоднозначность возникает, когда один термин используется в разных значениях или разные термины обозначают одну и ту же сущность.

💡 Пример
❌ Плохо
«Система показывает рабочие документы»
Что такое «рабочие документы»? Черновики? На согласовании? Все документы, доступные пользователю?
✅ Хорошо
«В разделе "Рабочие документы" система показывает документы, созданные текущим пользователем, в статусах "Черновик", "На доработке" и "На согласовании"»

6.6 Фразы «как в другой системе» без уточнений

Такие формулировки не всегда плохие сами по себе. Плохо, когда они используются вместо описания требования. Ссылка на другую систему может быть полезной как пример, но она не заменяет требование.

Опасные формулировки: «сделать как в Кадровом портале», «повторить как на старом экране», «сделать аналогично текущей системе», «как сейчас, только лучше».

💡 Пример
❌ Плохо
«Сделать карточку документа как карточку сотрудника в Кадровом портале»
Непонятно: порядок блоков? Состав полей? Кнопки? Права доступа? История изменений? Цвета статусов?
✅ Хорошо
«Использовать такой же порядок блоков: "Основная информация" → "Файл документа" → "История изменений" → "Согласование" → "Права доступа". Состав полей, права доступа, статусы и действия – по текущему документу требований, не копировать из Кадрового портала»
⚠️ Если ссылка на другую систему изменится (портал обновят или закроют), непонятно, должна ли автоматически измениться и карточка документа. Конкретное описание всегда устойчивее ссылки. Подробнее о стоп-словах: Systems Education   О критериях качества с примерами: Habr   IAMPM

7Чек-лист ревью качества требований

Используйте перед тем, как отдавать требования в разработку, тестирование или на согласование. Чек-лист основан на классических характеристиках качества требований из BABOK и IEEE 830. Отмечайте выполненные пункты.

Прогресс0 / 17
Бизнес-ценность
Понятно ли, зачем нужно требование? «Сделать возможность…» без объяснения цели – признак проблемы
Процесс
Корректность
Соответствует ли реальному процессу и правилам? Логика не противоречит реальной работе бизнеса
Логика
Полнота
Есть условия, исключения, роли, данные, ошибки? Не только успешный сценарий
Логика
Согласованность
Нет противоречий с другими требованиями? В разных разделах – одинаковые правила?
Логика
Однозначность
Можно понять только одним способом? Нет слов «быстро», «удобно», «при необходимости»
Язык
Проверяемость
Можно написать тест? Есть измеримый критерий «выполнено / не выполнено»?
Логика
Реализуемость
Можно реализовать в текущих ограничениях? Есть нужные данные, права, API?
Логика
Атомарность
Одно требование – одна мысль? Нет создания + изменения + удаления + уведомления в одном пункте?
Язык
Трассируемость
Понятно, откуда требование и куда влияет? Есть связь с процессом, экраном, БД или проверкой?
Процесс
Терминология
Одинаково ли используются термины? «Сотрудник», «пользователь», «автор» – не смешиваются без определения?
Язык
Данные
Описаны тип, формат, обязательность и источник? Есть поле – есть правило заполнения?
Данные
Ошибки и исключения
Описаны ошибки и поведение системы при них? Не просто «показать ошибку» – а текст сообщения и условие
Логика
Роли и доступы
Понятно, кто может выполнять действие? Не «пользователь может…» – а конкретная роль
Процесс
Статусы и переходы
Описаны статусы и когда они устанавливаются? Статус есть – правило перехода тоже есть?
Процесс
Нефункциональные требования
Есть измеримые критерии скорости, безопасности, доступности? Не «быть быстрой», а конкретная цифра
Данные
Ссылки на другие системы
Если есть ссылка – написано, что именно взять? «Сделать как там» + конкретный перечень элементов
Язык
Управление изменениями
Понятно, что изменилось и как влияет на сроки, тесты и уже согласованные решения? Новые условия зафиксированы отдельно?
Процесс

Итоговая самопроверка

Перед тем как отдать требование дальше, спросите себя:
  • 1Можно ли это требование понять только одним способом?
  • 2Хватает ли информации для разработки без уточнений?
  • 3Можно ли написать проверочный сценарий?
  • 4Нет ли здесь размытых слов?
  • 5Понятно ли, кто, что и при каких условиях делает?
  • 6Если есть ссылка на другую систему – написано, что именно взять?
  • 7Требование описывает потребность, а не готовое решение?
  • 8Понятно ли, как управлять изменениями по этому требованию?

8Тест по материалу

Проверьте, как усвоили материал. Три блока: одиночный выбор, множественный выбор и группировка. После каждого вопроса нажмите «Проверить».

Блок 1 — Один правильный ответ
1. Какой вариант лучше всего описывает качественное требование?
2. Почему требование «Система должна быстро загружать список документов» считается плохим?
3. Что означает проверяемость требования?
4. Какой пример лучше всего показывает неоднозначное требование?
5. Почему формулировка «Сделайте карточку документа как в Кадровом портале» плохая?
6. Что лучше всего сделать, если в требовании есть фраза «при необходимости»?
7. Почему плохие требования дорого стоят?
Блок 2 — Несколько правильных ответов
8. Какие признаки могут указывать на плохое требование? Выберите все правильные
9. Какие характеристики относятся к качественным требованиям? Выберите все правильные
10. Что нужно уточнить в требовании «После публикации документа система отправляет уведомление»? Выберите все правильные
11. Что может произойти, если ошибку в требовании заметили только после запуска? Выберите все правильные
12. Какие формулировки являются стоп-словами или опасными маркерами в требованиях? Выберите все правильные
Блок 3 — Задания на группировку
13. Соотнесите пример с типом дефекта требования
ПримерТип дефекта
«Поиск должен быть удобным»
«В карточке отображаются название, автор и другие данные»
«Система должна показывать актуальные документы»
«Пользователь может удалить документ»
14. Нажимайте на карточку, чтобы отметить её как «плохую» или «хорошую» формулировку
А – плохаяБ – хорошаянажмите на карточку, чтобы переключить
?
«Система позволяет выбрать тип документа: "Инструкция", "Регламент", "Шаблон", "Акт", "Служебная записка"»
?
«Система должна поддерживать разные типы документов»
?
«Система должна показывать пользователю важные уведомления»
?
«Если файл не загрузился из-за превышения 20 МБ, система отображает сообщение: "Размер файла не должен превышать 20 МБ"»
?
«Система отображает уведомления со статусом "Новое" в верхней части страницы до тех пор, пока пользователь не нажмёт "Прочитано"»
?
«Если что-то пошло не так, система должна показать ошибку»
?
«Администратор может менять настройки документа»
?
«Пользователь с ролью "Администратор документов" может изменить срок действия только в статусах "Черновик" и "На доработке"»
15. Соотнесите неясную формулировку со способом уточнения
Неясная формулировкаКак уточнить
«как можно скорее»
«важные уведомления»
«доступные пользователи»
«часть документов»
«при ошибке показать сообщение»
«стандартные поля»
«последние документы»