Реверс-инжиниринг ПО – это процесс восстановления структуры, внутреннего устройства программы, так называемый процесс обратного инжиниринга (обратной разработки).
Реинжиниринг ПО – в свою очередь это процесс создания нового программного обеспечения на основе применения существующего ПО, использующегося для той же или похожей задачи. Т.е. это повторная реализация наследуемой системы в целях повышения удобства ее эксплуатации и сопровождения. Часто реинжиниринг проводится с использованием реверс-инжиниринга.
Основной целью проведения данной работы является получение исходного кода в не компилированном формате, при котором возможно внесение изменений. Как правило потенциальными заказчиками здесь выступают компании приобретающие блочно-модульное оборудование в комплекте с локальными системами управления. Данные установки поставляются в основном зарубежными компаниями комплектно со своей ЛСУ, исходные коды от которой отсутствуют, либо закрыты паролем. Обслуживание или модернизация данных систем “своими силами” невозможно, не может быть выполнено в короткие сроки по причине вызова специалистов из-за границы, является дорогостоящим, а в случае наличия цеховой АСУТП, выполненной на базе программно-технических иного поставщика, еще и лишена возможности интеграции.
В таких случаях проведение реинжениринга или же реверс-инжиниринга систем выгодно, т.к. позволяет получить программный продукт, с которым можно работать силами службы эксплуатации, имея в штате обученных, квалифицированных инженеров, что в свою очередь облегчает и удешевляет процесс сопровождения системы, внесения в ее код изменений и проведения модернизации.
Процесс реверс-инжиниринга и реинжениринга очень сложен и трудоемок, данная работа непосильна инженеру-программисту низкой квалификации, так как для выполнения данной работы требуются глубокие познания языков программирования для ПЛК международного стандарта IEC 61131-3, таких как LAD (Ladder Diagram), FBD (Function Block Diagram), CFC (Continuous Function Chart), SFC (Sequential Function Chart), ST (Structured Text) и в особенности IL (Instruction List), а также обладание большим опытом проведения подобных работ и, что немаловажно, знание конкретного технологического процесса. IL – представляет собой ассемблероподобный язык низкого уровня, применяющийся на производстве для программирования автоматизированных систем управления технологическим процессом и систем промышленной автоматизации.
Разработка АСУТП в масштабах цеха на языках низкого уровня крайне сложна и трудозатратна при отладке программы и поиске “багов”, подвержена большому риску совершения ошибок, вызванных человеческим фактором. Но именно в данном виде мы получаем компилированный код программы, выгруженный из ПЛК. Поэтому для нормальной работы с программой в дальнейшем, возможности оперативного реагирования на нештатные ситуации и процессы и последующей эксплуатации и модернизация АСУ ее необходимо привести в понятный удобочитаемый вид. В этих целях при разработке прикладного ПО применяют высокоуровневые языки программирования стандарта IEC 61131-3. Наиболее распространенными из них при разработке ПО “больших” систем являются - Continuous Function Chart и Sequential Function Chart.
Проведение реинжениринга можно разделить на следующие стадии:
Перевод исходного, компилированного кода.
Декомпилирование программы, восстановление исходного, не компилированного кода программы, ее структуры. Конвертирование при необходимости программы со старого языка программирования на современную версию того же либо другого языка.
Анализ программ.
Документирование структуры и функциональных возможностей программы на основе ее анализа.
Модификация структуры программ.
Анализируется и модифицируется управляющая структура программ с целью сделать их более простыми и понятными.
Разбиение на модули.
Взаимосвязанные части программ группируются в модули; там, где возможно, устраняется избыточность. В некоторых случаях изменяется структура системы.
Изменение системных данных.
Данные, с которыми работает программа, изменяются с тем, чтобы соответствовать нововведениям.
Отдельным этапом на заключительной фазе, после проведения реверс-инжиниринга и реинжениринга является проведение комплексного опробования алгоритмов автоматического управления, технологических защит и блокировок, а также проведение виртуальной пусконаладки разработанного программного обеспечения АСУТП. Проведение комплексного опробования и виртуальной пусконаладки проводиться с применением специализированных программно-технических средств. Данные ПТС различаются у различных вендоров, у Siemens представителями данных ПТС являются: SIMIT, COMOS.
С помощью данных ПТС мы имеем возможность:
провести контроль качества сборки шкафов управления, схем подключения цифровых шин передачи данных;
провести отладку ПО ПЛК разрабатываемой АСУ, его алгоритмов автоматического управления, действие технологических защит и отработку блокировок систем РСУ и ПАЗ без выезда на объект;
провести настройку контуров регулирования на этапе проведения заводских FAT-испытаний;
тестирование различных сценариев работы алгоритмов ПО, технологического оборудования. Внести корректировки в технологический процесс проектируемой установки до момента реализации в “железе” на объекте.
Проведение данного комплекса мероприятий позволяет нам провести отладку технологии и разрабатываемой системы АСУ до начала реализации на площадке у заказчика. Существенно ускорить процесс проведения этапа пусконаладочных работ и ввода установки промышленную эксплуатацию.
Нашей организацией выполняется данный комплекс работ по реверс-инжинирингу и реинженирингу систем различных вендоров, таких как Schneider Electric, Siemens, ABB, Honeywell и многих других. Преимущественно реинжиниринг мы выполняем на системы Siemens, в программных комплексах PCS7, Step 7 и TIA Portal, однако по требованию заказчика возможно проведение реинжиниринга и на ПО других вендоров: Schneider Electric, ABB, Honeywell.
Силами ООО «СКТЦ» были успешно реализованы проекты по реверс-инжинирингу и реинженирингу таких систем, как:
Система рекуперации тепла HRS (H2SO4>200C).
ЛСУ установки криогенной очистки на производстве Аммиака
АСУТП турбогенераторами, система регулирования оборотами.
АСУТП ТЭС (котельное, турбинное отделения, общие узлы/вспомогательное производство)
Цех экстракционной фосфорной кислоты.
Цех производства серной кислоты.
Локальная установка АСУ компрессора.
Компрессор воздуха КИП.
Установки очистки Веолия и Альфа-Лаваль.
Отделение хранения аммиака.
Установка осушки воздуха.