Legacy systems face issues such as integrating new technology, fulfilling new requirements in the ever-changing environment, and meeting new user expectations. Due to the old complex system structure and technology, modification is hardly applied. Therefore, re-engineering is needed to change the system to meet new requirements and adapt to new technology. Software re-engineering generally refers to creating a new system from the existing one. Software re-engineering is divided into three (3) main phases: reverse engineering alteration and forward engineering. Reverse engineering examines, analyzes, and understands the legacy system in deriving the abstract representation of a legacy system; then, through necessary alterations such as restructuring, recording, and a series of forward engineering processes, a new system is built. This paper introduces the concepts of software re-engineering, including the challenges, benefits, and motivation for re-engineering. In addition, beginning with the traditional model of software re-engineering, this paper provides an overview of other models that provide different processes of software re-engineering. Each model has its unique set of processes for performing software re-engineering. Furthermore, re-engineering approaches show various ways of performing software re-engineering. Software re-engineering is a complex process that requires knowledge, tools, and techniques from different areas such as software design, programming, testing, et cetera. Therefore, monitoring the re-engineering process to meet the expectations is necessary.
Copyrights © 2025