Почему красивое ТЗ может быть бесполезным

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

4
типа записи: факт, решение, гипотеза, вопрос
1
наблюдаемый результат на критерий приёмки
0
придуманных бизнес-правил в утверждённом ТЗ

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

Роль ИИ: интервьюер, редактор и критик

Интервьюер
Находит пробелы и задаёт вопросы владельцу процесса.
Структуратор
Приводит заметки к единому словарю и шаблону.
Критик
Ищет неоднозначности, конфликты и непроверяемые слова.
Тест-дизайнер
Предлагает позитивные, негативные и граничные сценарии.

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

Паспорт требования: откуда оно появилось

У каждого существенного требования должен быть источник. Это помогает разрешить конфликт и понять, что можно изменить.

ТипПримерКто подтверждает
ФактПлатёжный провайдер присылает webhookДокументация или владелец интеграции
Бизнес-решениеВозврат доступен 14 днейВладелец продукта и юрист
ГипотезаПользователю нужна регистрация по телефонуИсследование или эксперимент
ОграничениеИспользовать существующую CRMАрхитектор или заказчик
ВопросЧто делать при повторном webhookНазначенный владелец и срок

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

Бриф до написания ТЗ

Исходные данные
  1. Какую проблему и для кого решает проект.
  2. Как процесс работает сейчас и где возникает потеря.
  3. Какой измеримый результат нужен бизнесу.
  4. Какие роли взаимодействуют с системой.
  5. Какие данные поступают и откуда.
  6. Какие системы и подрядчики участвуют.
  7. Какие правила уже утверждены.
  8. Какие сроки, бюджет и технологии ограничивают решение.
  9. Что точно не входит в первую версию.
  10. Кто принимает решения и результат.

Промпт-интервью для сбора требований

Ты - бизнес-аналитик. Помоги собрать требования, но не придумывай ответы.
Контекст: [идея и текущий процесс]
Цель: [бизнес-результат]
Участники: [роли]
Ограничения: [известное]

Проведи интервью блоками: пользователи; текущий сценарий; данные; бизнес-правила; исключения; интеграции; безопасность; доступность; метрики; границы первой версии.
Задавай до 5 вопросов за один раунд. После каждого раунда обновляй реестр: - подтверждённые факты; - принятые решения; - гипотезы; - открытые вопросы с владельцем; - противоречия.
Не заполняй пробелы общепринятой практикой без маркировки.

Цель и метрика результата

«Сделать личный кабинет» - описание объекта, а не цель. Цель связывает проблему с измеримым изменением: например, клиент самостоятельно получает документ, а поддержка видит меньше обращений определённого типа.

Разделяйте бизнес-метрику и продуктовую. Снижение обращений зависит не только от интерфейса; доля успешных самостоятельных скачиваний ближе к поведению продукта. Для метрики укажите источник, исходное значение, период, сегмент и допустимые побочные эффекты.

Границы: in scope и out of scope

Большинство конфликтов рождается не в описанном, а в подразумеваемом. Явно запишите, какие роли, платформы, интеграции, языки, типы данных и исключения входят в релиз.

Проведи аудит границ проекта.
Вход: [цель, сценарии и ограничения].
Составь таблицу: объект | входит в релиз | не входит | требует решения | причина | владелец.
Проверь роли, web/mobile, браузеры, языки, страны, платежи, уведомления, админку, аналитику, миграцию, импорт/экспорт, интеграции, поддержку и эксплуатацию.
Не переноси спорные пункты в «не входит» автоматически. Сформулируй вопрос и влияние на оценку.

User story: пользователь, цель и ценность

Atlassian описывает распространённый формат: «Как [пользователь], я хочу [цель], чтобы [ценность]». История удерживает внимание на результате, но не заменяет бизнес-правила, макеты и критерии приёмки.

Слабая историяПочемуУлучшение
Как пользователь, хочу кнопкуНеясны роль и ценностьНазвать роль и результат
Как система, хочу PostgreSQLЭто решение реализацииВынести в ограничение архитектуры
Как админ, хочу управлять всемНет границ полномочийРазделить по операциям и объектам
Как клиент, хочу быстроНепроверяемое словоЗадать действие и порог времени

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

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

  1. Как человек понимает, что функция существует.
  2. Какие права и данные нужны до старта.
  3. Что является первым действием.
  4. Что система проверяет и где сообщает ошибку.
  5. Как пользователь видит успешный результат.
  6. Можно ли отменить, повторить или исправить действие.
  7. Что получают другие роли и внешние системы.
  8. Где остаётся журнал и как работает поддержка.

Критерии приёмки: условия, а не инструкция реализации

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

Хороший критерий
  1. Связан с одной историей или бизнес-правилом.
  2. Описывает наблюдаемое поведение.
  3. Имеет конкретные входные условия.
  4. Содержит ожидаемый результат.
  5. Не использует «удобно», «быстро», «корректно» без метрики.
  6. Покрывает права доступа.
  7. Учитывает ошибку и восстановление.
  8. Может быть проверен до сдачи.

Given - When - Then на практическом примере

В Gherkin Given задаёт известное начальное состояние, When - событие, Then - наблюдаемый результат. Cucumber рекомендует держать пример выразительным и не перегружать его деталями интерфейса.

История: Как клиент, я хочу скачать оплаченный счёт, чтобы передать его бухгалтерии.

Сценарий: доступ к своему счёту
Дано клиент вошёл в аккаунт
И счёт принадлежит этому клиенту
Когда клиент запрашивает PDF
Тогда система отдаёт файл с номером и суммой счёта
И событие скачивания появляется в журнале

Сценарий: попытка доступа к чужому счёту
Дано клиент вошёл в аккаунт
И счёт принадлежит другой организации
Когда клиент запрашивает PDF
Тогда система не раскрывает файл и его реквизиты
И возвращает согласованный безопасный ответ
И фиксирует отказ в журнале безопасности

Промпт для генерации критериев и негативных сценариев

На основе подтверждённой user story и бизнес-правил предложи критерии приёмки.
История: [текст]
Правила: [список]
Роли и права: [матрица]

Сначала перечисли отсутствующие данные. Затем создай сценарии Given - When - Then: основной, пустое состояние, неверный ввод, отсутствие прав, повторная операция, конкурентное изменение, недоступная интеграция и восстановление.
Каждый Then должен быть наблюдаемым и проверяемым. Не придумывай текст ошибок, сроки и бизнес-правила - помечай «требует решения». Отдельно предложи нефункциональные проверки, не смешивая их с поведением.

Нефункциональные требования с метрикой

«Сайт должен быть быстрым и безопасным» невозможно принять. Требование задаёт объект измерения, условия, инструмент или метод и порог.

ОбластьЧто определитьНеопределённая формулировка
ПроизводительностьОперация, нагрузка, перцентиль, среда, порогСтраница открывается быстро
НадёжностьSLO, окно, исключения, восстановлениеВсегда доступно
БезопасностьУровень контроля и проверяемые требованияЗащищено от хакеров
ДоступностьВерсия WCAG, уровень и областьДоступно всем
СовместимостьБраузеры, версии, устройстваРаботает везде
ХранениеСрок, регион, удаление, резервные копииДанные хранятся безопасно

Безопасность и доступность в ТЗ

OWASP ASVS предоставляет открытый набор проверяемых требований безопасности веб-приложений и может использоваться при разработке и закупке. Выбирайте применимые требования и версию, а не вставляйте название стандарта без области и проверки.

Для web-интерфейсов W3C WCAG 2.2 задаёт рекомендации доступности. В ТЗ укажите целевой уровень, страницы и компоненты, исключения, способ тестирования и ответственность. Соответствие стандарту не отменяет тесты с реальными пользователями и локальные правовые требования.

Данные и интеграции

Контур данных
  1. Источник истины для каждой сущности.
  2. Поля, форматы, обязательность и справочники.
  3. Кто создаёт, читает, меняет и удаляет данные.
  4. Основание, согласие и срок хранения персональных данных.
  5. Идентификаторы и правила дедупликации.
  6. API, авторизация, лимиты и версии интеграций.
  7. Повторные запросы, идемпотентность и порядок событий.
  8. Таймауты, retry, очередь ошибок и ручное восстановление.
  9. Миграция, сверка полноты и план отката.
  10. Журналы без лишних секретов и персональных данных.

Макеты и состояния интерфейса

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

ТЗ не обязано дублировать каждый пиксель макета. Свяжите требование, story, экран и критерии устойчивыми идентификаторами. Укажите, что является источником истины при конфликте текста и дизайна.

Definition of Done и приёмка проекта

Acceptance criteria относятся к конкретной истории. Definition of Done - общий стандарт качества для всех работ команды: код проверен, тесты пройдены, документация обновлена, мониторинг настроен, миграция проверена. Не смешивайте эти уровни.

Составь протокол приёмки релиза на основе ТЗ.
Для каждого требования укажи: ID | сценарий проверки | тестовые данные | ожидаемый результат | доказательство | ответственный | статус.
Отдельные разделы: функциональные истории; безопасность; доступность; производительность; интеграции; миграция; аналитика; мониторинг; резервное копирование; откат; документация и обучение.
Не отмечай пункт выполненным по факту наличия функции. Требуй воспроизводимое доказательство или явно согласованное исключение.

Как оценивать проект по ТЗ

Точная стоимость при открытых интеграциях и правилах - иллюзия. До оценки разделите подтверждённый объём, опции, неизвестное и рисковые исследования. Команда должна указать предположения, а заказчик - подтвердить их.

  1. Декомпозировать по пользовательским сценариям, а не экранам.
  2. Выделить внешние зависимости и ожидание доступов.
  3. Провести spike для технически неизвестного.
  4. Отдельно оценить данные, миграцию, безопасность и эксплуатацию.
  5. Зафиксировать, что меняет стоимость и срок.
  6. Определить процесс change request после утверждения границ.

Структура полного технического задания

# Техническое задание
1. Паспорт документа: версия, дата, владельцы, статус.
2. Контекст, проблема, цель и метрики.
3. Термины и источники требований.
4. Пользователи, роли и права.
5. Текущий и целевой процессы.
6. Границы: входит / не входит.
7. Пользовательские сценарии и user stories.
8. Бизнес-правила и таблицы решений.
9. Критерии приёмки и негативные сценарии.
10. Данные, модель, хранение и удаление.
11. Интеграции, ошибки и восстановление.
12. Нефункциональные требования.
13. Безопасность и приватность.
14. Доступность и совместимость.
15. Аналитика, логи и мониторинг.
16. Миграция, запуск и откат.
17. Документация и эксплуатация.
18. Зависимости, риски и открытые вопросы.
19. Протокол приёмки и Definition of Done.
20. История решений и изменений.

Финальный чек-лист перед передачей разработчику

Готовность ТЗ
  1. Цель связана с измеримым результатом.
  2. Роли и права определены.
  3. Термины используются однозначно.
  4. Границы первой версии явны.
  5. Факты отделены от гипотез ИИ.
  6. Основные и негативные сценарии описаны.
  7. Критерии приёмки наблюдаемы.
  8. Нефункциональные требования имеют метрику и порог.
  9. Данные, интеграции и восстановление разобраны.
  10. Безопасность и доступность имеют проверяемую область.
  11. Миграция, мониторинг и откат включены.
  12. У открытых вопросов есть владельцы и сроки.
  13. История изменений сохраняется.
  14. Разработчик, тестировщик и заказчик провели совместный разбор.

ТЗ готово не тогда, когда нейросеть дописала последний раздел, а когда команда одинаково понимает результат и умеет доказать его готовность.

Можно ли написать техническое задание с помощью ChatGPT или Claude?
Можно использовать ИИ для интервью, структуры, поиска пробелов и черновиков критериев. Бизнес-правила, приоритеты, данные и ограничения должны подтверждать владельцы и первичные источники.
Что обязательно должно быть в ТЗ?
Цель и метрики, пользователи и права, границы, сценарии, бизнес-правила, критерии приёмки, данные, интеграции, нефункциональные требования, безопасность, эксплуатация, риски и открытые вопросы.
Чем user story отличается от требования?
User story кратко описывает роль, цель и ценность с точки зрения пользователя. Для реализации ей нужны правила, критерии приёмки, данные, дизайн и нефункциональные ограничения.
Как писать критерии приёмки?
Опишите начальные условия, событие и наблюдаемый результат. Избегайте слов «быстро» и «удобно» без метрик. Добавьте отсутствие прав, неверные данные, повторы, сбои интеграций и восстановление.
Что такое Given - When - Then?
Это структура сценария: Given задаёт известное исходное состояние, When - действие или событие, Then - проверяемый наблюдаемый результат.
Нужно ли указывать технологии в ТЗ?
Только если технология является реальным ограничением или архитектурным решением. Пользовательские требования лучше не связывать с деталями реализации без причины.
Как оценить стоимость проекта по ТЗ?
Сначала закройте критичные вопросы, выделите подтверждённый объём, опции и исследования неизвестного. Оценка должна содержать предположения, внешние зависимости и факторы изменения срока и цены.
Как проверить ТЗ, созданное нейросетью?
Потребуйте маркировку фактов, решений, гипотез и вопросов; найдите непроверяемые слова; свяжите критерии с источниками; проведите разбор с заказчиком, разработчиком и тестировщиком.
← Все статьи блога