Payload Logo

Работа с неопределенностью и изменчивостью в проектах заказной разработки ПО

20 июля 2026 г.

Системная работа делает неопределенность и изменчивость управляемыми факторами проекта на трех уровнях: требования, техническая реализация и регламенты.

Автор статьи

Александр Владимиров

Рубрика

Проекты, Разработка ПО

Время чтения

15 минут

Работа с неопределенностью и изменчивостью в проектах заказной разработки ПО


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

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

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

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

Неопределенность и изменчивость. Ренью

Требования заказчика


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

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

Работа с требованиями начинается с их сбора. На встречах с заказчиком и заинтересованными сторонами фиксируются исходные позиции, после чего они проверяются на полноту и непротиворечивость. Требования проходят валидацию: сопоставление с известными ограничениями (техническими, нормативными, бюджетными) и с реальными задачами, которые должна решать система. Если требование сформулировано нечетко или ведет к логическому противоречию, инициируется обсуждение. На этом этапе происходит уточнение неопределенности – выясняется, что именно имел в виду заказчик, какие существуют альтернативы, какие компромиссы возможны. Чем больше таких уточнений сделано до начала разработки, тем меньше вероятность последующих переделок.

Одновременно с валидацией снижается изменчивость на старте проекта. Договоренности фиксируются в таком виде, чтобы они были понятны всем участникам и не допускали разночтений. Для этого используются структурированные форматы: описание сценариев, диаграммы потоков, прототипы интерфейсов. В ряде проектов применяются канва ценностного предложения (Value Proposition Canvas) и фреймворк определения ключевых задач (Jobs To Be Done), позволяющие перевести требования на язык задач, потребностей и ожидаемых выгод заказчика. Это дает возможность отделить действительно важное от второстепенного и зафиксировать приоритеты. Чем четче определена базовая функциональность на старте, тем меньше пространства для последующих непредвиденных изменений.

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

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

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

Техническая реализация


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

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

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

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

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

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

В рамках CI/CD-пайплайна управление неопределенностью обеспечивается за счет встроенных этапов статического анализа безопасности, сборки, тестирования и упаковки, а также последовательной доставки через несколько окружений (разработки, тестовое, предпродуктовое, продуктовое). Нагрузочное тестирование проводится на разных стадиях проекта, включая финальные этапы перед вводом в промышленную эксплуатацию, на оборудовании, приближенном к целевому, что позволяет выявить узкие места до запуска. Мониторинг проектируется как встроенная подсистема, собирающая технические и бизнес-метрики (например, наполненность очередей, статусы обменов), которые согласуются с заказчиком. Алертинг с многоуровневыми порогами и уведомлениями по разным каналам, а также выделение первой линии реагирования (специалисты технической поддержки) снижают неопределенность при эксплуатации и ускоряют реакцию на инциденты.

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

Регламенты и процессы


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

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

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

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

Для снижения неопределенности, связанной с разнородностью регламентов, применяется унификация подходов к документированию и согласованию. На старте проекта фиксируется перечень обязательных документов, их структура и шаблоны, которые в дальнейшем используются как основа для всех отчетных и эксплуатационных материалов. Стандартизация эксплуатационной документации также снижает неопределенность. Разрабатываются типовые шаблоны руководств пользователя, администратора, программиста, а также описаний технологических процессов и контрольных примеров. Эти шаблоны учитывают требования различных регуляторов (ГОСТ, приказы ФСТЭК, отраслевые стандарты) и могут быть адаптированы под конкретного заказчика путем замены отдельных разделов или добавления специфических атрибутов. Ведение версионности документов в общем хранилище позволяет отслеживать изменения и синхронизировать их с актуализацией нормативной базы.

Управление изменчивостью регламентов и нормативной базы обеспечивается за счет выстраивания регулярных каналов коммуникации с заказчиком и мониторинга изменений нормативной базы через подписку на официальные источники: порталы, каналы поддержки межведомственных систем (СМЭВ), отраслевые ассоциации. В проектах, где такие изменения происходят регулярно, выделяется ответственный за их отслеживание и анализ.  Проводятся периодические встречи с участием лиц, ответственных за нормативное регулирование, на которых обсуждаются планируемые изменения в требованиях к безопасности, форматам отчетности или процедурам обновления. В ряде проектов практикуется совместный анализ драфтов нормативных актов, что дает возможность оценить влияние изменений на архитектуру и выработать план адаптации заранее. Так мы переводим изменения регламентов из разряда неожиданных событий в список плановых работ.

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

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

Заключение


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

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

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

Читайте также