Реинжиниринг программного обеспечения
— процесс создания новой функциональности или устранения ошибок, путём революционного изменения, но используя уже имеющееся в эксплуатации
программное обеспечение
. Процесс реинжиниринга описан Чиковски и Кроссом в их труде 1990 года,
как «The examination and alteration of a system to reconstitute it in a new form». Выражаясь менее формально, реинжиниринг является изменением системы программного обеспечения после проведения
обратного инжиниринга
.
Содержание
Сложность реинжиниринга
Как правило, утверждается, что «легче разработать новый программный продукт». Это связано со следующими проблемами:
реинжиниринг не может сделать программист низкой и средней квалификации — даже профессионалы часто не могут качественно реализовать его, поэтому требуется работа программистов с большим опытом переделки программ и знанием различных
технологий
[
уточнить
]
;
разработчику бывает сложно разбираться в чужом
исходном коде
— это вынуждает адаптироваться к восприятию незнакомого
стиля программирования
, расходует время на всесторонний анализ и освоение реализованных в проекте концепций, используемых в нём сторонних
библиотек
, требует скрупулёзно исследовать принцип действия всех плохо документированных участков кода — и всё это лишь осложняет процесс перехода продукта на новые
архитектурные решения
;
кроме того, сам характер деятельности требует дополнительной
мотивации
: по сравнению с созданием новых продуктов, переработка уже имеющихся не всегда приносит столь же наглядные и впечатляющие результаты, зачастую отягощает грузом
технического долга
и оставляет мало места для профессионального самовыражения.
В то же время, если изначально программа обладала строгой и ясной архитектурой, то провести реинжиниринг будет на порядок проще. Поэтому при проектировании, как правило, анализируется, что будет выгоднее — заняться переработкой материалов прежнего проекта или же разработать аналогичный программный продукт «с нуля».