Unfortunately, this page is not translated in English yet.
Реинжиниринг – это процесс создания нового или преобразования существующего ПО с целью улучшения характеристик качества, поддерживаемой им функциональности, понижения стоимости сопровождения, уменьшения вероятности возникновения значимых для заказчика рисков. Реинжиниринг подразумевает использование уже имеющегося в эксплуатации у заказчика программного обеспечения в качестве базиса, основы для работы.
Реинжиниринг включает в себя следующие виды работ
- анализ исходного ПО;
- изучение и анализ исходного кода (если применимо);
- анализ слабых мест исходного ПО;
- исследование возможностей исходного ПО и подробное их документирование
- восстановление архитектуры исходного ПО;
- анализ рисков и выработка шагов к их нейтрализации;
- составление технического задания на новое ПО;
- трансформация восстановленной архитектуры к желаемой новой архитектуре;
- тестирование нового ПО;
- установка и настройка нового ПО;
- конвертация накопленных данных на новое ПО;
- документирование новой системы;
- обучение персонала (если необходимо).
Реинжиниринг программы или новая программа?
Реинжиниринг имеет несомненные достоинства для заказчика, использующего наработанный годами опыт, бизнес-логику, а также функционал автоматизирующий уникальные процессы предприятия.
Для исполнителя же реинжиниринг является довольно сложной задачей, требующей высокой квалификации разработчиков. Это связано со следующими проблемами:
- Необходимость разбора чужого исходного кода. Такую задачу не может сделать программист низкой и средней квалификации. Даже профессионалы часто не могут качественно реализовать его. Поэтому требуется работа специалистов с большим опытом и знанием различных технологий.
- Необходимость расширения границ существующего функционала, но при этом обязательная совместимость с предыдущими версиями.
- Риски изменения функционала «в живую» – на работающем предприятии, в режиме реального времени.
Именно поэтому стоимость реинжиниринга зачастую выше стоимости разработки с нуля. В то же время, если изначально программа обладала строгой и ясной архитектурой, то провести реинжиниринг будет проще. Поэтому при проектировании, как правило, анализируется, что выгоднее - провести реинжиниринг, или разработать программный продукт "с нуля".