Зачем нужно техническое задание и что в нём должно быть

 

 

 

 

 

ПРОЕКТИРОВАНИЕ // TECHNICAL_SPECIFICATION_VALUE

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

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

Без этого разработчик и заказчик могут одинаково понимать слова «автоматизировать процесс», «интегрировать с 1С» или «сделать личный кабинет» — и при этом представлять совершенно разные системы.

«автоматизировать процесс»
«интегрировать с 1С»
«сделать личный кабинет»

Отсюда появляются знакомые ситуации:

«Мы думали, это тоже входит в проект».

«Why это не предусмотрено?»

«А разве система не должна была делать это автоматически?»

«Мы хотели другой сценарий».

«Почему изменение оказалось отдельной работой?»

Проблема в таких случаях часто возникает не на этапе программирования.

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

 

 

СТРУКТУРИРОВАНИЕ // SPECIFICATION_BOUNDARY

ТЗ — это граница между идеей и конкретной системой

На старте проекта обычно есть бизнес-задача:

«Нужно автоматизировать обработку заявок»

Но разработать систему по одной этой фразе невозможно.

Что такое заявка?
Откуда она приходит?
Кто её обрабатывает?
Что происходит после получения?
Какие данные обязательны?
Куда они передаются?
Какие статусы существуют?
Кто может изменить заявку?
Что делать при ошибке?
Какие действия должны выполняться автоматически?
А какие остаются сотруднику?

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

БИЗНЕС-ЗАДАЧА
↓
ТРЕБОВАНИЯ
↓
ЛОГИКА
↓
ИНТЕГРАЦИИ
↓
ДАННЫЕ
↓
ИНТЕРФЕЙСЫ
↓
КРИТЕРИИ ПРИЁМКИ
↓
КОНКРЕТНЫЙ РЕЗУЛЬТАТ
// МАСШТАБ_ИНЖЕНЕРИИ //

Чем сложнее система, тем важнее этот переход.

 

 

ДЕКОМПОЗИЦИЯ // FUNCTIONAL_LIMITATION

Почему нельзя описать систему только списком функций

Предположим, в ТЗ написано:

«Система должна отправлять заявку в CRM».
Формально требование есть. Но его недостаточно для разработки.

Нужно определить:

когда заявка считается готовой к отправке;
какие поля передаются;
как определяется клиент;
что делать, если клиент уже существует;
что происходит при отсутствии обязательного поля;
что делать при недоступности CRM;
как повторяется неудачная отправка;
кто получает уведомление об ошибке;
где хранится статус передачи;
что считается успешной отправкой.
// ТРЕБОВАНИЕ_К_КОНТРАКТУ //

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

 

 

АРХИТЕКТУРА_ДОКУМЕНТА // SPECIFICATION_STRUCTURE

Что должно быть в техническом задании

Универсального шаблона ТЗ для любой системы не существует.

Для простой автоматизации один документ может занимать несколько страниц.

Для корпоративной системы с десятками интеграций ТЗ может стать большим комплектом документации с отдельными спецификациями.

Но основные блоки обычно можно представить так:

01 ЦЕЛЬ И ГРАНИЦЫ
02 ПОЛЬЗОВАТЕЛИ И РОЛИ
03 БИЗНЕС-ПРОЦЕССЫ
04 ФУНКЦИОНАЛЬНОСТЬ
05 ДАННЫЕ
06 ИНТЕРФЕЙСЫ
07 ИНТЕГРАЦИИ
08 ОГРАНИЧЕНИЯ
09 НЕШТАТНЫЕ СЦЕНАРИИ
10 НЕФУНКЦИОНАЛЬНЫЕ ТРЕБОВАНИЯ
11 КРИТЕРИИ ПРИЁМКИ

Не каждый проект требует одинаковой глубины по каждому пункту.

// КРИТИЧЕСКИЙ_ПРИНЦИП_ПРОЕКТИРОВАНИЯ //

Но чем больше цена ошибки, количество систем и пользователей, тем подробнее должны быть зафиксированы критичные части.

 

 

ГРАНИЦЫ // SCOPE_AND_BOUNDARIES

1. Цель и границы проекта

Сначала необходимо определить, зачем система создаётся и что именно входит в проект.

Например:

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

Но важно зафиксировать и обратную сторону:

Система не отвечает за обработку заявки менеджером после её создания в CRM.

Это уже граница ответственности.

Она кажется очевидной до начала проекта.

После запуска именно такие вещи часто становятся причиной разногласий.

Поэтому полезно фиксировать:

[ + // ВХОДИТ ]
› приём заявки;
› проверка данных;
› создание записи в CRM;
› уведомление.
[ - // НЕ ВХОДИТ ]
› изменение логики самой CRM;
› автоматическое принятие решения менеджером;
› обработка заявок, созданных вручную вне системы.
// ЗАЩИТА_ПЕРИМЕТРА //

Граница проекта защищает обе стороны.

 

 

МАТРИЦА_ДОСТУПА // USER_ROLES_AND_RIGHTS

2. Пользователи и роли

Одна и та же система может выглядеть совершенно по-разному для разных пользователей.

Например:

АДМИНИСТРАТОР
      │
      ├── пользователи
      ├── настройки
      └── журнал операций
МЕНЕДЖЕР
      │
      ├── заявки
      ├── карточка клиента
      └── статусы
РУКОВОДИТЕЛЬ
      │
      ├── отчёты
      └── показатели

Важно определить не только список ролей, но и их права.

Менеджер может изменить статус.

Руководитель может видеть все заявки.

Администратор может менять настройки.

// АНАЛИЗ_РИСКОВ_БЕЗОПАСНОСТИ //

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

 

 

РАНТАЙМ_ПОТОКИ // BUSINESS_PROCESS_LOGIC

3. Бизнес-процесс

Функции сами по себе не объясняют, как система должна вести себя во времени.

Например:

Новая заявка
↓
Проверка данных
↓
Создание клиента
↓
Создание сделки
↓
Назначение менеджера
↓
Уведомление
↓
Работа менеджера
↓
Закрытие

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

Особенно если в процессе есть исключения:

НОВАЯ ЗАЯВКАДанные полные?ДАНЕТCRM / ERPНа уточнениеУспешно?ДАНЕТГотовоПовтор / ошибка
// АРХИТЕКТУРА_ЛОГИКИ //

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

 

 

ФУНКЦИОНАЛ // FUNCTIONAL_REQUIREMENTS_SPECS

4. Функциональные требования

Здесь описывается, что система должна уметь.

Например:

[fn]создавать заявку;

[fn]изменять статус;

[fn]искать клиента;

[fn]прикреплять документы;

[fn]отправлять уведомления;

[fn]формировать отчёт;

[fn]передавать данные в ERP.

Но хорошее требование должно быть проверяемым.

[ КРИТЕРИЙ // СЛАБО ]

Система должна быстро создавать заявку.

[ КРИТЕРИЙ // ЛУЧШЕ ]

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

Первое утверждение субъективно.
Второе можно проверить.

 

 

СТРУКТУРА // DATA_SCHEMAS_SPECS

5. Данные

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

В ТЗ нужно определить:

[d] какие сущности существуют;
[d] какие поля обязательны;
[d] какие типы данных используются;
[d] какие значения допустимы;
[d] какие связи существуют;
[d] что является уникальным идентификатором;
[d] где хранится источник истины;
[d] какие данные передаются между системами.

Например:

КЛИЕНТ
 ├── ID
 ├── Название
 ├── ИНН
 ├── Телефон
 └── Email
ИНН
→ обязательный
→ уникальный
→ строковый формат
→ используется для поиска существующего клиента
// ОПРЕДЕЛЕННОСТЬ_ДАННЫХ //

Чем точнее определены данные, тем меньше двусмысленности появляется при интеграции.

 

 

ПРОТОТИПИРОВАНИЕ // INTERFACE_SPECIFICATION

6. Интерфейс

Техническое задание не обязательно должно содержать готовый дизайн всех экранов.

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

Например:

СПИСОК ЗАЯВОК
│
├── поиск
├── фильтр
├── сортировка
└── открыть заявку
        ↓
     КАРТОЧКА
        ├── данные
        ├── история
        ├── документы
        └── действия

Для сложных систем могут дополнительно использоваться прототипы интерфейсов.

Главное — не рисовать интерфейс ради рисунка.

Нужно определить поведение системы:

пользователь нажал действие → система проверила условия → выполнила операцию → показала результат.

 

 

СВЯЗИ // INTEGRATION_MATRIX_SPECS

7. Интеграции

Если система взаимодействует с другими системами, интеграции нужно описывать отдельно.

Например:

САЙТНОВАЯ СИСТЕМАCRM1ССЕРВИС УВЕДОМЛЕНИЙ

Для каждой интеграции желательно определить:

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

Фраза «интеграция с 1С» сама по себе почти ничего не говорит разработчику.

// КОНТРАКТНЫЙ_ПРОТОКОЛ //

Нужно понимать что именно происходит между системами.

 

 

РАНТАЙМ_ОШИБКИ // EXCEPTIONS_AND_EDGE_CASES

8. Ошибки и нестандартные сценарии

Хорошее ТЗ описывает не только идеальный путь.

Потому что именно идеальный путь обычно работает первым.

Проблемы начинаются здесь:

Что если CRM недоступна?
Что если пользователь отправил форму дважды?
Что если клиент уже существует?
Что если обязательное поле пустое?
Что если внешний API вернул ошибку?
Что если файл повреждён?
Что если оператор повторил действие?
Что если пользователь потерял соединение?

Для каждого критичного сценария желательно понимать:

что произошло → что делает система → что видит пользователь → что фиксируется в журнале → что происходит дальше.

 

 

КАЧЕСТВО_СИСТЕМЫ // NON_FUNCTIONAL_METRICS

9. Нефункциональные требования

Это требования, которые не описывают отдельную кнопку или функцию, но определяют качество системы.

Например:

[q]производительность;

[q]доступность;

[q]безопасность;

[q]резервное копирование;

[q]журналирование;

[q]масштабирование;

[q]ограничения по нагрузке;

[q]время обработки операций;

[q]требования к инфраструктуре.

Система может выполнять все заявленные функции и всё равно оказаться непригодной.

[ ПРИМЕР // НАГРУЗКА ]

Например, отчёт формируется корректно, но занимает 40 минут.

Функционально всё работает.
Для бизнеса нет.
// ТРЕБОВАНИЯ_К_ОКРУЖЕНИЮ //

Поэтому в серьёзных проектах важно фиксировать не только что система делает, но и в каких условиях она должна это делать.

 

 

ВАЛИДАЦИЯ_РЕЗУЛЬТАТА // ACCEPTANCE_CRITERIA_METRICS

10. Критерии приёмки

Один из самых важных разделов ТЗ.

Именно здесь появляется ответ на вопрос:

Как понять, что система действительно готова?

ТРЕБОВАНИЕСЦЕНАРИЙОЖИДАЕМЫЙ РЕЗУЛЬТАТПРОВЕРКА

Вместо:

«Система корректно обрабатывает заявки».

Лучше:

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

Теперь это можно проверить.

// СТАТУС_ВЕРИФИКАЦИИ //

И если проверка пройдена — требование выполнено.

 

 

ГРАНИЦЫ_ДЕТАЛИЗАЦИИ // OVERENGINEERING_SPECS

ТЗ не должно пытаться предсказать абсолютно всё

Есть и обратная крайность.

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

Это тоже не всегда правильно.

ТЗ должно фиксировать существенные требования и ожидаемый результат, а не лишать команду разработки возможности принимать инженерные решения.

Например, заказчику может быть важно:

[ БИЗНЕС-ЦЕЛЬ ]

Система должна обрабатывать до 1 000 операций в час.

[ РЕАЛИЗАЦИЯ (ИЗБЫТОЧНО) ]

Но необязательно заранее определять:

Для этого использовать именно конкретную библиотеку X версии Y.

Первое — требование к результату.
Второе — уже конкретное техническое решение.
// ИНЖЕНЕРНЫЙ_БАЛАНС //

Граница между ними должна быть осознанной.

 

 

ВАЛИДАЦИЯ // FINAL_SPECIFICATION_CHECKLIST

Хорошее ТЗ отвечает на пять главных вопросов

Если отбросить всю документацию, остаётся простая проверка:

1. ЧТО должна делать система?
2. ДЛЯ КОГО она это делает?
3. С КАКИМИ ДАННЫМИ работает?
4. ЧТО происходит при ошибках?
5. КАК принимается результат?
// АНАЛИЗ_РИСКОВ //

Если на эти вопросы невозможно ответить по документации, проект всё ещё содержит существенную неопределённость.

 

 

ТРАНСФОРМАЦИЯ // SCOPE_TRANSFORMATION

Что меняется после появления ТЗ

До фиксации требований разговор часто выглядит так:

«Нужно автоматизировать работу отдела».

После проработки:

ПроцессРолиСценарииДанныеИнтеграцииОграниченияОшибкиКритерии приёмки

После этого можно гораздо точнее оценить архитектуру, сроки и состав работ.

И здесь появляется ещё один важный эффект: изменения становятся видимыми.

Если после утверждения ТЗ появляется новая функция, можно понять, является ли она частью первоначального объёма или новым требованием.

Это не бюрократия.
Это управление границами проекта.

 

 

АНАЛИЗ_ЦЕЛИ // SPECIFICATION_REALITY_CHECK

ТЗ — не гарантия идеального проекта

Даже очень подробный документ не спасёт проект, если сама задача неправильно поставлена.

Можно идеально описать систему, которая компании вообще не нужна.

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

[ РОЛЬ ДОКУМЕНТА ]

Техническое задание фиксирует согласованное решение.

Оно не заменяет анализ.

 

 

ФАКТОРЫ_РИСКА // CRITICAL_SPECIFICATION_TRIGGERS

Когда ТЗ особенно важно

Чем сложнее проект, тем выше цена недоговорённости.

Особенно важно подробно фиксировать требования, когда есть:

несколько информационных систем;
1С, ERP или CRM;
внешние API;
производственное оборудование;
большое количество пользователей;
сложные бизнес-процессы;
корпоративные данные;
ИИ-компоненты;
несколько подразделений;
высокие требования к непрерывности работы;
значительная стоимость дальнейших изменений.

В простом внутреннем инструменте часть требований может быть зафиксирована компактно.

// СИСТЕМНЫЙ_ЭЛЕМЕНТ //

В корпоративной системе ТЗ становится одним из основных элементов управления проектом.

 

 

ЖИЗНЕННЫЙ_ЦИКЛ // SPECIFICATION_LIFECYCLE_END

Хорошее ТЗ должно помогать не только начать разработку, но и закончить её

Это, пожалуй, главный критерий.

Документ полезен не тогда, когда он выглядит объёмным.

Он полезен, если по нему можно пройти весь путь:

ЗАДАЧАТРЕБОВАНИЯПРОЕКТИРОВАНИЕРАЗРАБОТКАТЕСТИРОВАНИЕПРИЁМКАЭКСПЛУАТАЦИЯ

На каждом этапе должно быть понятно, что именно проверяется и откуда это требование появилось.

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

Именно поэтому хороший документ отвечает не на вопрос «что мы хотим примерно сделать?», а на гораздо более практичный:

// ОБЩИЙ_КРИТЕРИЙ_ЗАВЕРШЕНИЯ //

«Как мы поймём, что система сделана именно так, как было согласовано?»

 

 

НАВИГАЦИЯ // SUGGESTED_READING
 
[ Модуль // ИНТЕГРАЦИИ ]

API, Webhook или очередь сообщений?

 
[ Модуль // ИНТЕГРАЦИИ ]

Когда API есть, а интеграция всё равно не работает

 
[ Модуль // АВТОМАТИЗАЦИЯ ]

Как соединить производство и корпоративные системы

 
[ EXPERTISE JOURNAL ]

Все инженерные материалы и экспертные статьи

 
[ CORE GLOSSARY ]

Полный алфавитный справочник ИТ-терминов

 

[ DIRECT EMAIL LINE ]
info@log-ai.ru

 

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

Сайт носит исключительно информационный характер и не является публичной офертой в соответствии со статьёй 437 Гражданского кодекса РФ. Цены, состав и условия предоставления услуг уточняются при проектировании решения и фиксируются в договоре. Условия технического сопровождения и уровень сервиса могут дополнительно определяться отдельным соглашением (SLA).

© 2026 Log-AI Москва
Автоматизация бизнеса и ИИ-решения под ключ
Самозанятый Скопец Антон Викторович ИНН 741709260870
Политика конфиденциальности Пользовательское соглашение
AI Ассистент
×