Реинжиниринг программного обеспечения
Реинжиниринг программного обеспечения — процесс создания новой функциональности или устранения ошибок, путём революционного изменения, но используя уже имеющееся в эксплуатации программное обеспечение. Процесс реинжиниринга описан Чиковски и Кроссом в их труде 1990 года,[1] как «The examination and alteration of a system to reconstitute it in a new form». Выражаясь менее формально, реинжиниринг является изменением системы программного обеспечения после проведения обратного инжиниринга.
Сложность реинжиниринга[править | править код]
Как правило, утверждается, что «легче разработать новый программный продукт». Это связано со следующими проблемами:
- реинжиниринг, чаще всего, дороже разработки нового программного обеспечения, так как требуется убрать ограничения предыдущих версий, при этом сохранив с ними совместимость;
- реинжиниринг не может сделать программист низкой и средней квалификации — даже профессионалы часто не могут качественно реализовать его, поэтому требуется работа программистов с большим опытом переделки программ и знанием различных технологий[уточнить];
- разработчику бывает сложно разбираться в чужом исходном коде — это вынуждает адаптироваться к восприятию незнакомого стиля программирования, расходует время на всесторонний анализ и освоение реализованных в проекте концепций, используемых в нём сторонних библиотек, требует скрупулёзно исследовать принцип действия всех плохо документированных участков кода — и всё это лишь осложняет процесс перехода продукта на новые архитектурные решения;
- кроме того, сам характер деятельности требует дополнительной мотивации: по сравнению с созданием новых продуктов, переработка уже имеющихся не всегда приносит столь же наглядные и впечатляющие результаты, зачастую отягощает грузом технического долга и оставляет мало места для профессионального самовыражения.
В то же время, если изначально программа обладала строгой и ясной архитектурой, то провести реинжиниринг будет на порядок проще. Поэтому при проектировании, как правило, анализируется, что будет выгоднее — заняться переработкой материалов прежнего проекта или же разработать аналогичный программный продукт «с нуля».
См. также[править | править код]
Примечания[править | править код]
- ↑ Chikofsky, E. и Cross, J. 7(1) // = Reverse Engineering and Design Recovery: A Taxonomy. — IEEE Software, 1990. — P. 13-18.
Ссылки[править | править код]
- The Program Transformation Wiki (англ.) (Дата обращения: 26 октября 2009)
- The Architecture-Driven Modernization website at OMG (англ.) (Дата обращения: 26 октября 2009)
Для улучшения этой статьи желательно:
|
Это заготовка статьи о программном обеспечении. Помогите Википедии, дополнив её. |