3

WebTech

Личный кабинет

Проекты, коммерческие предложения, документы и отчёты — в одном месте.

Войти Зарегистрироваться Забыли пароль?
Модернизация legacy-систем

Систему нельзя переписать заново, но можно понять и перенести по частям

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

Или сразу: +7 (962) 368-39-51 Telegram

код
разбор и документация
правила
извлечение бизнес-логики
данные
сопоставление моделей
тесты
фиксация поведения
Задачи

Почему модернизация затягивается на годы

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

Никто не знает, как система работает

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

Бизнес-правила закодированы неявно

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

Данные не соответствуют новой модели

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

Нет тестов, поведение не зафиксировано

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

Попытка переписать всё сразу

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

Работа с унаследованным стеком никому не интересна

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

Решения

Как AI помогает в модернизации

Четыре направления, где языковые модели и анализ данных экономят месяцы работы инженеров.

Разбор и документирование кода

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

  • Автоматическое описание модулей и процедур на естественном языке
  • Карта зависимостей между компонентами, включая скрытые вызовы
  • Поиск мёртвого кода и логики, которая фактически не выполняется
  • Ассистент по кодовой базе: вопрос на русском — ответ со ссылкой на код

Извлечение бизнес-правил

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

  • Выявление условий, порогов и исключений в унаследованном коде
  • Сверка восстановленных правил с экспертами и фиксация расхождений
  • Формулировка правил в читаемом виде для постановки задач на новую систему
  • Поиск правил, которые противоречат друг другу или устарели

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

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

  • Профилирование данных: распределения, дубли, пустые и аномальные значения
  • Автоматическое сопоставление сущностей и справочников с ручной проверкой спорных
  • Дедупликация клиентов, контрагентов и номенклатуры с правилами слияния
  • Контроль полноты и сверка итогов миграции по контрольным суммам

Фиксация поведения тестами

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

  • Генерация тестов на основе реальных сценариев использования
  • Запись эталонных ответов старой системы на исторических данных
  • Параллельный прогон: старая и новая система обрабатывают один поток
  • Отчёт о расхождениях с разбором каждого расхождения по существу
Процесс

Этапы модернизации

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

  1. 01 3–5 недель

    Обследование и карта системы

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

  2. 02 3–4 недели

    Восстановление правил

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

  3. 03 6–10 недель

    Перенос первого модуля

    Реализуем модуль в новой системе, запускаем параллельно со старой и сверяем результаты, устраняя расхождения по одному.

  4. 04 поэтапно

    Тиражирование по модулям

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

С чего начинать модернизацию унаследованной системы

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

Второй шаг — определить, что вообще переносить. Часть функциональности в старой системе может быть мёртвой: отчёты, которыми никто не пользуется, интеграции с отключёнными сервисами, режимы, оставшиеся от прежних процессов. Вывод из эксплуатации лишнего сокращает объём проекта иногда на 20–30% и снижает риск, потому что меньше логики нужно воспроизводить.

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

Как AI помогает разбирать недокументированный код

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

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

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

Постепенная миграция вместо большого взрыва

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

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

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

Частые вопросы

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

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

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

Иногда это оправдано, но чаще попытка «написать заново» недооценивает объём неявных правил, накопленных за годы эксплуатации. В унаследованной системе закодирован опыт десятков людей и множество исключений, которые нигде не документированы. Мы предлагаем сначала оценить объём этих правил, а затем решать: если их немного и они понятны — возможна разработка с нуля; если система содержит годы наслоений, поэтапный перенос безопаснее.

Внедрение AI: другие направления

Смежные задачи, которые обычно решаются в одном проекте с этой.

Есть система, которую страшно трогать, но нельзя оставить?

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