Неполные и противоречивые требования
Плохое требование редко выглядит плохим: оно читается гладко, пока не начнёшь его реализовывать. Здесь разберём, где в тексте прячутся пробелы и противоречия и как добиться ответа, который можно записать.
Если в требованиях есть пробел, разработчик заполнит его по-своему, и второй разработчик заполнит его по-другому. Если есть противоречие, кто-то из них обязательно будет не прав. Дешевле всего исправлять это до начала разработки.
Кейс: два срока возврата
В «Узелке» готовят функцию возврата товара. В требованиях заказчика написано, что возврат возможен в течение 14 дней, а в инструкции поддержки до 30 дней (числа условные). Разработчик взял первое число, поддержка обещает покупателям второе, и на шестнадцатый день покупатель получает отказ в приложении после обещания от поддержки.
В тексте было и ещё кое-что: слово «быстро» без срока и «менеджер одобряет» без слов о том, что делать, если менеджера нет. Такое встречается часто, и его можно найти до разработки, если знать, что искать.
Что такое пробел и противоречие
- Пробел - в требованиях не хватает данных, без которых нельзя реализовать функцию: роли, условия, исключения, число.
- Противоречие - два утверждения не могут быть верны одновременно, например два разных срока для одного и того же действия.
- Неоднозначность - утверждение можно прочитать по-разному, и каждый читатель выберет своё прочтение.
Пробел и неоднозначность часто идут рядом: «быстро» похоже на требование, но числа в нём нет. Полный чек-лист критериев качества есть в статье 02-19, здесь мы учимся искать проблемы в тексте и задавать вопросы.
Где прячутся пробелы
Пробелы чаще всего встречаются в четырёх местах:
- Роли. Кто участвует в процессе: кто одобряет возврат, кто получает письмо, кто заменяет отсутствующего.
- Исключения. Обычный случай описан, а необычный нет: товар сделан на заказ, покупатель просит частичный возврат.
- Состояния и ошибки. Описан успех, а что будет, если сервер не ответил, неизвестно (статья 02-17).
- Слова без значения. «Быстро», «скоро», «удобно» без измеримого смысла.
Для поиска таких слов есть перечень «запахов требований». Запах требования - это признак нарушения качества, который может привести к дефекту. В перечень входят, например, субъективные формулировки («удобно для пользователя»), расплывчатые наречия и прилагательные, лазейки («по мере возможности»), неясные местоимения и отрицательные утверждения, которые не описывают реакцию системы.
Как найти противоречия
Противоречия часто не видны внутри одного документа: каждый источник читается гладко. Срок возврата в кейсе найдётся, только если сопоставить два источника. Поэтому идут от сущности:
- Выделяем одно понятие, число или правило, например «срок возврата».
- Собираем все места, где оно упоминается: требования, инструкции, макеты, письма.
- Сопоставляем их в одной таблице с источником и точной формулировкой.
- Отмечаем строки, где значения расходятся.
Такая таблица заодно показывает и пробелы: строки, где не хватает данных, видны сразу.
Как сформулировать вопрос
Вопрос «что там со сроком?» заставляет адресата разбираться самому. Удобнее вести вопрос по четырём шагам: нашли место, цитируем слова из требований, предлагаем два или три варианта ответа, записываем решение.
Для кейса вопрос может звучать так: «В требованиях сказано «14 дней», в инструкции поддержки «30 дней». Какой срок считать верным: 14, 30 или другой? От ответа зависит проверка в приложении». В вопросе есть цитата, варианты и последствие, поэтому на него можно ответить одной фразой.
Если ответы дают разные люди, вопрос адресуют тому, кто владеет правилом, а не тому, кто ответит быстрее. Для срока возврата это владелец продукта или заказчик, а не сотрудник поддержки.
Как согласовать и записать ответ
Ответ в переписке или на встрече быстро теряется. Поэтому решение записывают в самом тексте требований и в журнале решений: ответ, автор, дата. Так через месяц видно, почему выбран именно этот срок, а другой источник обновлён вслед за ним.
Где это встречается в работе
- Чтение новой спецификации до начала разработки.
- Сверка требований с макетом (статья 02-15).
- Разбор вопросов от разработчиков и тестировщиков: большинство из них указывают на пробелы.
- Связь между документами заказчика и инструкциями поддержки.
- Подготовка к изменениям требований (статья 02-20).
Итог
Пробел означает нехватку данных, противоречие означает конфликт двух утверждений, неоднозначность означает разные прочтения. Пробелы ищут в ролях, исключениях, состояниях и словах без значения, противоречия сопоставлением источников об одном и том же. Вопрос строят из цитаты и вариантов, ответ записывают.
Что дальше
Дальше разберём чек-лист качества требований (статья 02-19) и изменения требований (статья 02-20).
5 вопросов