Неполные и противоречивые требования

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


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

Кейс: два срока возврата

В «Узелке» готовят функцию возврата товара. В требованиях заказчика написано, что возврат возможен в течение 14 дней, а в инструкции поддержки до 30 дней (числа условные). Разработчик взял первое число, поддержка обещает покупателям второе, и на шестнадцатый день покупатель получает отказ в приложении после обещания от поддержки.

В тексте было и ещё кое-что: слово «быстро» без срока и «менеджер одобряет» без слов о том, что делать, если менеджера нет. Такое встречается часто, и его можно найти до разработки, если знать, что искать.

Рисунок 1. Два срока возврата на одной шкале

Что такое пробел и противоречие

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

Пробел и неоднозначность часто идут рядом: «быстро» похоже на требование, но числа в нём нет. Полный чек-лист критериев качества есть в статье 02-19, здесь мы учимся искать проблемы в тексте и задавать вопросы.

Где прячутся пробелы

Пробелы чаще всего встречаются в четырёх местах:

  • Роли. Кто участвует в процессе: кто одобряет возврат, кто получает письмо, кто заменяет отсутствующего.
  • Исключения. Обычный случай описан, а необычный нет: товар сделан на заказ, покупатель просит частичный возврат.
  • Состояния и ошибки. Описан успех, а что будет, если сервер не ответил, неизвестно (статья 02-17).
  • Слова без значения. «Быстро», «скоро», «удобно» без измеримого смысла.
Рисунок 3. Четыре места, где прячутся пробелы: роли, исключения, состояния, термины

Для поиска таких слов есть перечень «запахов требований». Запах требования - это признак нарушения качества, который может привести к дефекту. В перечень входят, например, субъективные формулировки («удобно для пользователя»), расплывчатые наречия и прилагательные, лазейки («по мере возможности»), неясные местоимения и отрицательные утверждения, которые не описывают реакцию системы.

Как найти противоречия

Противоречия часто не видны внутри одного документа: каждый источник читается гладко. Срок возврата в кейсе найдётся, только если сопоставить два источника. Поэтому идут от сущности:

  1. Выделяем одно понятие, число или правило, например «срок возврата».
  2. Собираем все места, где оно упоминается: требования, инструкции, макеты, письма.
  3. Сопоставляем их в одной таблице с источником и точной формулировкой.
  4. Отмечаем строки, где значения расходятся.
Рисунок 4. Четыре утверждения о возврате из разных источников и найденные проблемы

Такая таблица заодно показывает и пробелы: строки, где не хватает данных, видны сразу.

Как сформулировать вопрос

Вопрос «что там со сроком?» заставляет адресата разбираться самому. Удобнее вести вопрос по четырём шагам: нашли место, цитируем слова из требований, предлагаем два или три варианта ответа, записываем решение.

Рисунок 5. Четыре шага вопроса: нашли, процитировали, предложили варианты, записали решение

Для кейса вопрос может звучать так: «В требованиях сказано «14 дней», в инструкции поддержки «30 дней». Какой срок считать верным: 14, 30 или другой? От ответа зависит проверка в приложении». В вопросе есть цитата, варианты и последствие, поэтому на него можно ответить одной фразой.

Если ответы дают разные люди, вопрос адресуют тому, кто владеет правилом, а не тому, кто ответит быстрее. Для срока возврата это владелец продукта или заказчик, а не сотрудник поддержки.

Как согласовать и записать ответ

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

Где это встречается в работе

  • Чтение новой спецификации до начала разработки.
  • Сверка требований с макетом (статья 02-15).
  • Разбор вопросов от разработчиков и тестировщиков: большинство из них указывают на пробелы.
  • Связь между документами заказчика и инструкциями поддержки.
  • Подготовка к изменениям требований (статья 02-20).

Итог

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

Что дальше

Дальше разберём чек-лист качества требований (статья 02-19) и изменения требований (статья 02-20).

Проверка знаний

5 вопросов