Компания заказывает систему для работы с дилерами. ТЗ занимает четыре страницы: «система должна быть удобной», «интеграция с 1С», «разграничение прав». Через полгода выясняется, что под интеграцией заказчик понимал обмен заказами каждые пять минут. А разработчик заложил выгрузку остатков раз в сутки. Каждый по-своему прав, и оба теряют месяцы на переделку.
Бывает и наоборот. ТЗ на двести страниц, аккуратно переписанное из ГОСТа. Его подписали, но целиком не прочитал никто, включая авторов. В итоге спорят так же, только с толстой папкой на столе.
Техническое задание на разработку программного обеспечения — это документ, в котором заказчик и разработчик записывают, что должна делать программа, кто ею пользуется, с какими системами она связана и как проверят результат. Ниже разберём, из чего оно состоит, нужен ли ГОСТ и как писать требования, которые нельзя понять двумя способами.
Зачем нужно ТЗ на разработку ПО и чем оно отличается от ТЗ на сайт
Сайт похож на витрину магазина. Важно, что на ней стоит, как подписаны товары и где касса. Программа для бизнеса больше похожа на склад за витриной. Там есть кладовщики с разными правами, правила приёмки и отгрузки, учёт, связь с бухгалтерией и поставщиками.
Поэтому в ТЗ на систему главное не страницы, а процессы. Кто что делает, в каком порядке, что происходит, если что-то пошло не так. Сайт можно описать картинками и списком разделов. Систему так не описать: самое важное в ней невидимо.
ТЗ решает три задачи:
- фиксирует границы. Что входит в работу, а что нет. Без этого любой спор о сроках превращается в спор о памяти;
- даёт основу для оценки. Разработчик не может честно назвать срок и бюджет, пока не понимает, сколько ролей, процессов и интеграций в системе;
- служит правилами приёмки. Готовую работу проверяют по пунктам ТЗ, а не по ощущениям.
Если вам нужен документ попроще, для обычного сайта, загляните в нашу статью про техническое задание на разработку сайта. Там меньше процессов и больше страниц.
Нужен ли ГОСТ: 34.602-2020, 19.201-78 или свободная форма
Первый вопрос, который задают заказчики: составлять ли ТЗ по ГОСТу. Короткий ответ: не обязательно. Национальные стандарты в России по закону применяются добровольно. На практике ГОСТ становится обязательным, когда его прописали в договоре: тогда это уже условие сделки. Часто его требуют и в государственных закупках.
Чаще всего вспоминают два стандарта. ГОСТ 34.602-2020 описывает техническое задание на создание автоматизированной системы, то есть программы вместе с людьми и процессами вокруг неё. Он действует с 1 января 2022 года и заменил версию 1989 года. ГОСТ 19.201-78 из Единой системы программной документации описывает ТЗ на отдельную программу.
| Вариант | Когда подходит | О чём помнить |
|---|---|---|
| ГОСТ 34.602-2020 | Госзаказ, крупные информационные системы, проекты, где этого требует служба безопасности или аудит | Много обязательных разделов. Без опыта легко получить объёмный, но пустой документ |
| ГОСТ 19.201-78 | Отдельная программа или модуль, учебные и научные проекты, требование заказчика | Стандарт старый, в нём нет привычных сегодня понятий вроде интеграций по API или облачной инфраструктуры |
| Свободная форма | Коммерческие проекты: CRM, ERP, кабинеты, порталы | Нужна дисциплина: разделы выбирают под задачу, но ничего важного не пропускают |
Даже если ГОСТ вам не нужен, одну идею из него стоит взять. В ГОСТ 34.602-2020 сказано, что требования должны быть единичными, непротиворечивыми, актуальными, выполнимыми, проверяемыми и однозначными. По-человечески: одно требование про одну вещь, без противоречий с другими пунктами, реальное и такое, что его можно проверить и понять только одним способом.
Ещё одна полезная мысль оттуда: изменения в ТЗ оформляют дополнением. Не правкой по телефону и не сообщением в мессенджере, а документом, который подписывают обе стороны.
Что должно быть в ТЗ на разработку программного обеспечения
Структура зависит от задачи, но у большинства коммерческих систем набор разделов похожий. Вот рабочий шаблон, который подходит и для CRM, и для кабинета дилеров, и для складской программы.
Разделы технического задания
- 1
Цели и границы
Зачем нужна система и какую проблему она решает. Отдельно: что в этот проект не входит.
- 2
Пользователи и роли
Кто работает в системе: менеджер, дилер, кладовщик, администратор. Что каждый видит и что может менять.
- 3
Процессы и сценарии
Пошаговое описание работы: как создают заказ, как его согласуют, что происходит при отказе.
- 4
Данные и справочники
Какие сущности хранит система: клиенты, товары, договоры, заявки. Какие у них поля и откуда они берутся.
- 5
Интеграции
С какими программами система обменивается данными, в какую сторону, как часто и что делать при сбое.
- 6
Нефункциональные требования
Скорость, нагрузка, безопасность, резервные копии, браузеры и устройства.
- 7
Интерфейс
Ссылки на прототипы экранов или их описание. Требования к версии для телефона, если она нужна.
- 8
Перенос данных
Что переносим из старой системы или таблиц, кто чистит данные, как проверяем результат.
- 9
Приёмка
Как проверяем каждую функцию, на каких данных, кто подписывает акт.
- 10
Документация и обучение
Инструкции для пользователей и администратора, обучение сотрудников.
Самые недооценённые разделы — «границы» и «перенос данных». Первый спасает от бесконечного «а ещё сделайте». Второй от сюрприза в последний месяц, когда выясняется, что двадцать тысяч клиентов в старой таблице записаны в пяти разных форматах.
Как описывать требования, чтобы их нельзя было понять по-разному
Слабое ТЗ почти всегда выдают слова «удобно», «быстро», «гибко», «и т. д.». Каждый читает их по-своему. Хорошее требование можно проверить: открыть систему и сказать «да, работает так» или «нет».
| Плохо | Хорошо |
|---|---|
| Система должна работать быстро | Список заказов до 10 000 строк открывается не дольше чем за 2 секунды, когда в системе работают 50 человек одновременно |
| Разграничение прав доступа | Дилер видит только свои заказы и клиентов. Менеджер видит заказы своих дилеров. Цены закупки видит только администратор |
| Интеграция с 1С | Остатки и цены приходят из 1С каждые 15 минут. Заказ после подтверждения уходит в 1С сразу. При ошибке обмена администратору приходит письмо |
| Удобный поиск | Поиск по номеру заказа, ИНН и названию клиента. Результат появляется после ввода трёх символов |
| Система должна быть защищена | Вход по логину и паролю. После пяти неверных попыток вход блокируется на 15 минут. Все изменения цен пишутся в журнал |
Числа в правой колонке условные. Важно не их значение, а то, что они вообще есть. Когда в ТЗ записано «2 секунды», обе стороны знают, что проверять.
Хороший пример измеримого требования — кабинет дилеров MMB Russia. Лицензия в нём генерируется за секунду. А для защиты там работает контроль IP-адресов с автоматической блокировкой. Такие вещи невозможно сделать «примерно»: их либо описали правилом, либо нет.
Процессы удобно описывать сценариями. Сценарий — это короткая история: кто, что делает, что отвечает система. Если в процессе есть ветки, их описывают отдельно: что будет, если товара нет, если клиент отказался, если связь с 1С пропала.
«Когда я читаю ТЗ, я ищу не то, что написано, а то, что пропущено. Что будет, если пользователь нажмёт кнопку дважды? Если 1С не ответит? Если два менеджера одновременно поменяют одну заявку? Каждый такой вопрос, закрытый на бумаге, экономит день отладки потом.»
Интеграции: раздел, на котором проекты теряют больше всего времени
Почти любая система для бизнеса обменивается данными с другими программами: 1С, CRM, платёжным сервисом, телефонией, сервисами поставщиков. И почти в любом проекте именно интеграции дают самые неприятные сюрпризы.
Причина простая. Свою систему разработчик контролирует, а чужую нет. У другой стороны может не оказаться нужных данных, тестовой копии или человека, который ответит на вопрос. Поэтому про каждую интеграцию в ТЗ стоит ответить на шесть вопросов:
- какие данные передаются и в какую сторону;
- какая система главная для этих данных, то есть где их правят, а где только читают;
- как часто идёт обмен: сразу, по расписанию, по кнопке;
- что делать при сбое: повторять, копить очередь, сообщать администратору;
- есть ли у другой стороны тестовая копия, на которой можно проверять обмен;
- кто со стороны заказчика отвечает за ту программу и её доработку.
Вопрос «какая система главная» кажется формальным, но на нём ломается половина интеграций. Если цены можно поменять и в 1С, и в новой системе, через месяц никто не знает, какая цена правильная.
В том же кабинете дилеров MMB Russia интеграций несколько: обмен с сервисами DriveMods и HUMAX по API и оплата через АТОЛ Pay. API — это способ, которым программы автоматически обмениваются данными без участия человека. Для каждой такой связи в ТЗ нужен свой раздел. Как мы подходим к обмену с учётными системами, можно посмотреть на странице об интеграции с 1С и CRM.
Образец ТЗ: как описать одну функцию
Шаблоны ТЗ на разработку программного обеспечения легко найти. Но пользы от них меньше, чем кажется: в шаблоне есть разделы, а смысл всё равно придётся писать самому. Поэтому покажем не шаблон, а фрагмент: как описать одну функцию так, чтобы её можно было сделать и проверить.
Функция: оформление заказа дилером.
Кто: дилер с активным договором.
Основной сценарий:
- Дилер открывает каталог и видит цены по своему договору и остатки на складе.
- Добавляет товары в корзину и указывает адрес доставки из списка своих адресов.
- Нажимает «Отправить заказ». Система проверяет остатки и кредитный лимит дилера.
- Заказ получает номер и статус «На согласовании», менеджер дилера получает уведомление.
- После подтверждения менеджером заказ уходит в 1С, статус меняется на «В работе».
Исключения: если товара не хватает, система предлагает отгрузить то, что есть, или поставить остаток в резерв. Если превышен кредитный лимит, заказ сохраняется, но не отправляется, а дилер видит причину.
Как проверить: оформить заказ тестовым дилером в трёх вариантах: товар в наличии, нехватка товара, превышен лимит. В каждом случае статус, уведомления и данные в 1С соответствуют описанию.
Такой фрагмент занимает полстраницы. Но по нему разработчик понимает, что делать, тестировщик понимает, что проверять, а заказчик видит, что его поняли правильно.

Кто пишет ТЗ и как оно живёт во время проекта
Лучше всего ТЗ получается, когда его пишут вместе. Заказчик знает свои процессы, но не знает, как устроены системы. Разработчик знает системы, но не знает, почему у вас заказы согласует именно коммерческий директор.
Обычно работа строится так. Аналитик проводит интервью с сотрудниками, которые будут пользоваться системой. Изучает документы, таблицы и текущие программы. Описывает процессы, согласует их с заказчиком и только потом пишет требования. Этот этап называют предпроектным обследованием.
Для больших систем не стоит пытаться описать всё сразу. Пока вы пишете ТЗ на два года вперёд, процессы успеют поменяться. Лучше подробно описать первую версию, которая решает главную задачу, а остальное собрать в список следующих этапов. Как выбрать, что войдёт в первую версию, мы рассказывали в статье про MVP в разработке.
Так работают и при разработке ПО на заказ, и при внедрении больших систем вроде ERP. ERP — это программа, которая объединяет закупки, склад, производство и финансы в одном месте. Чем больше процессов, тем важнее делить проект на понятные этапы со своим ТЗ.
Перед подписанием пройдите по короткому списку.
Проверка ТЗ перед подписанием
- Цели и границы проекта записаны, включая то, что в работу не входит
- Для каждой роли понятно, что она видит и что может менять
- У процессов описаны не только обычные сценарии, но и ошибки и отказы
- Для каждой интеграции ясно, какая система главная и что делать при сбое
- Скорость, нагрузка и резервные копии записаны числами, а не словами
- Указано, кто и как переносит данные из старой системы
- Для каждой функции понятно, как её будут проверять на приёмке
- Порядок изменений описан: правки оформляются дополнением и подписываются обеими сторонами
Частые вопросы о ТЗ на разработку программного обеспечения
Цели и границы проекта, роли пользователей, описание процессов, данные, интеграции, требования к скорости и безопасности, перенос данных, порядок приёмки и документация. Главное, чтобы каждое требование можно было проверить.
Нет. По закону национальные стандарты применяются добровольно. ГОСТ становится обязательным, когда его прописали в договоре, и его часто требуют в государственных закупках. В коммерческих проектах чаще пишут ТЗ в свободной форме, но берут из ГОСТа требования к качеству формулировок.
ТЗ на информационную систему описывает не только программу, но и людей, процессы, данные и окружение. Для него есть ГОСТ 34.602-2020. ТЗ на отдельную программу проще, для него существует ГОСТ 19.201-78.
Лучше вместе. Заказчик отвечает за процессы и правила бизнеса, разработчик за то, чтобы требования были полными и выполнимыми. Часто ТЗ пишет аналитик подрядчика после интервью с сотрудниками заказчика, а заказчик его проверяет и утверждает.
Шаблоны есть в самих ГОСТах и в открытом доступе, но они дают только структуру. Полезнее взять за образец описание одной функции: сценарий, исключения и способ проверки. Если так описана каждая функция, ТЗ работает.
Коротко
ТЗ на разработку программного обеспечения нужно не для галочки. Оно фиксирует границы проекта, даёт основу для оценки и служит правилами приёмки. ГОСТ нужен, когда его прописали в договоре или требует заказчик по госзакупке. Но его требование к формулировкам, проверяемым и однозначным, стоит взять в любой проект.
Начните с целей и границ, опишите роли и процессы вместе с ошибками, отдельно разберите каждую интеграцию. И перечитайте документ с вопросом «как мы это проверим?». Если ответа нет, требование надо переписать.
Пришлите черновик или просто опишите задачу. Подскажем, каких разделов не хватает и где формулировки можно понять по-разному.
Поставьте лайк — так мы поймём, о чём писать дальше. А чтобы вернуться к статье позже, сохраните её в закладки личного кабинета.





