Реверс-инжиниринг и поддержка системы управления и интеграции производства для табачного производителя
Предпосылки проекта
Заказчик проекта – одна из крупнейших международных табачных компаний с производством в России. В условиях геополитических изменений иностранный вендор прекратил техническую поддержку критичной системы управления производством нашего заказчика. Уход вендора не только лишил компанию обновлений, но и сделал невозможной замену вышедших из строя аппаратных модулей.
Любой сбой грозил полной остановкой конвейера и многомиллионными убытками – и для предотвращения производственного коллапса была оперативно привлечена команда инженеров ICL Services.
Задачи проекта
- Обследовать производственную систему
- Восстановить и описать архитектуру системы
- Получить исходный код, восстановить исходный код из сборок, для которых нет исходного кода
- Настроить сборку и развёртывание системы в тестовом контуре
- Отладить обновление системы в продуктовом контуре
- Подготовить команду поддержки для дальнейшего исправления ошибок и реализации улучшений и запросов на изменения
Ход проекта
Этап 1. Реверс‑инжиниринг и восстановление структуры решения
Команда состояла из двух опытных разработчиков и проектного менеджера, задачи были распределены по частям системы, то есть кто-то работал с базой данных, а кто-то над восстановлением самого приложения системы, а также обменом данных. Специалисты провели реверс‑анализ поставки/развёрнутых компонентов для восстановления:
- модульной структуры решения
- связей между компонентами клиент‑серверной архитектуры
- конфигурации обмена данными/интеграций
На выходе первого этапа команда получила восстановленную архитектурную схему, реестр модулей и зависимостей, а также перечень мест для исправлений.
Этап 2. Получение исходного кода / восстановление сборки и пересборка проекта
Восстановили сборку и зависимости (библиотеки, конфигурации, версии), чтобы проект стабильно собирался.
Подготовили основу для дальнейших изменений: структура репозитория, правила сборки, инструкции.
Одним из сложных моментов было то, что система использует проприетарное зарубежное ПО для некоторых интерфейсов и для первого этапа команда смогла выключить эти элементы, а также настроить сборку, чтобы система все равно собиралась с этими элементами в интерфейсе.
Этап 3. Стабилизация: исправление ошибок и управляемые релизы
После того, как появилась пересборка, команда смогла перейти к самому ценному для заказчика – эксперты смогли вносить изменения в исходный код и развёртывать новые версии на продуктивной среде.
На текущем этапе, для пробации подхода, была взята в работу доработка по приложению. Данное изменение было успешно разработано и внедрено в продуктовую версию системы.
Этап 4. Передача в поддержку и первый год поддержки
На финальном этапе проекта команда перешла к непосредственной поддержке приложения, создали схему обращений, подготовили инструкции.
За первый год поддержки были исправлены многолетние дефекты, связанные с интерфейсом, которые портили пользовательский опыт и усложняли работу с приложением (например, у чек-боксов в одном из окон была реверсивная логика), а также проведены работы по внесению изменений в систему по запросу заказчика, которые улучшили качество решения.
Продукты и технологии
- .NET 4
- Windows Forms, Syncfusion UI Component Suite
- Windows OS, Microsoft SQL Server
Результаты проекта
- Восстановлен исходный код и структура проекта в управляемом виде.
- Восстановлена возможность сборки проекта с изменениями в исходном коде, а также подготовки релиза.
- Описана документация по архитектуре, модулям и зависимостям для использования в дальнейшей поддержке.
- Зависимость от иностранного вендора сокращена до 0% в вопросах текущей эксплуатации и модернизации.
- Снижены риски простоев производства.
- Cняты все барьеры для исправления ошибок.


