Договор на разработку ПО: что закрепить до начала проекта

«Разработать личный кабинет по согласованному ТЗ» — этого недостаточно, чтобы понять, что исполнитель передаст заказчику: работающий сервис, исходный код, документацию или доступ к репозиторию. Если состав результата останется только в переписке, при сдаче проекта стороны могут оценить одну и ту же работу по-разному. В договоре нужно связать четыре вопроса: что создаётся, как меняется задача, чем подтверждается сдача и какие права получает заказчик.

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

Сначала определите состав результата

Название договора само по себе не определяет обязанности сторон. Разработка может включать создание новой программы, настройку существующей системы, внедрение, консультации и поддержку. Разграничьте эти работы в приложении: иначе требование «устранить ошибку» может касаться как недостатка созданного кода, так и новой функции, которую не заказывали.

Перед подписанием подготовьте:

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

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

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

«Удобный интерфейс» — ожидание, а не критерий приёмки. Опишите пользовательские роли, основные сценарии и условия проверки. Например: администратор создаёт учётную запись, пользователь получает уведомление, операция отражается в журнале. Для интеграции назовите систему и способ обмена данными; укажите, кто предоставляет доступы и документацию API.

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

команда сверяет требования к разработке программы

Разделите обязанности заказчика и исполнителя

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

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

Предусмотрите изменение требований до начала работы

Даже подробное ТЗ редко остаётся неизменным. Согласуйте порядок добавления функций: заказчик описывает запрос, исполнитель оценивает влияние на цену и срок, стороны утверждают изменение — только после этого задача входит в план. Запись в трекере сама по себе не должна менять договор, если уполномоченные представители не согласовали стоимость и последствия для графика.

Для небольших корректировок можно выделить лимит часов или бюджет. Укажите, как он расходуется и кто видит остаток. Иначе «маленькие правки» постепенно превратятся в отдельный проект, который одна сторона считает оплаченным, а другая — нет.

Свяжите оплату с понятными событиями

Разделите в договоре аванс, оплату этапов и расходы сверх цены. Уточните, входят ли в стоимость тестирование, исправление выявленных недостатков, документация, передача кода и развёртывание. При открытом объёме работ согласуйте ставку, правила учёта времени, предел бюджета и периодичность отчётов. Условие «оплата по фактически затраченному времени» без этих деталей оставляет слишком много поводов для спора.

Если платёж привязан к акту, укажите, какой результат подтверждает этот акт. Аванс возможен до передачи результата, но его не следует смешивать с приёмкой: оплата сама по себе не всегда означает, что заказчик проверил программу и получил все материалы. Опишите и досрочное прекращение работы: как определить выполненный объём, какие промежуточные результаты передать и как рассчитать платежи с учётом договора и применимого закона.

Опишите приёмку как процедуру, а не одну подпись

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

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

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

Согласуйте права на код и материалы

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

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

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

проверка состава кода перед передачей заказчику

Установите правила доступа, данных и безопасности

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

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

Не путайте исправление дефектов с поддержкой

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

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

Что проверить непосредственно перед подписанием

  1. Совпадают ли наименования сторон, реквизиты и полномочия подписантов во всех документах.
  2. Можно ли по спецификации определить завершение каждого этапа без устных договорённостей.
  3. Указаны ли цена, сроки и порядок согласования изменений, в том числе через рабочие системы.
  4. Понятно ли, какие файлы, доступы и инструкции передаются вместе с актом.
  5. Разграничены ли права на новый результат, ранее созданные модули и компоненты третьих лиц.
  6. Согласованы ли порядок исправления недостатков и условия прекращения проекта.

Перед первой оплатой сохраните подписанные ТЗ и план этапов в одном согласованном месте. Если спецификации ещё нет, не оставляйте всю разработку на условии «ТЗ будет согласовано позднее». Сначала оформите оплачиваемый этап обследования и подготовки ТЗ — со своим результатом и процедурой приёмки.