JOIV : Int. Inform. Visualization, 9. - January 2025 46-56 INTERNATIONAL JOURNAL ON INFORMATICS VISUALIZATION INTERNATIONAL JOURNAL ON INFORMATICS VISUALIZATION journal homepage : w. org/index. php/joiv Overview of Software Re-Engineering Concepts. Models, and Approaches Lim Fung Ji a,*. Tan Bee Sian b Department of Software Engineering and Technology. Tunku Abdul Rahman University of Management and Technology. Kuala Lumpur. Malaysia Department of Computer Science and Embedded Systems. Tunku Abdul Rahman University of Management and Technology. Kuala Lumpur. Malaysia Corresponding author: *limfj@tarc. AbstractAi 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 . 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 KeywordsAiLegacy system. software re-engineering models. reverse engineering. software re-engineering approaches. Manuscript received 25 Aug. revised 25 Oct. accepted 12 Nov. Date of publication 31 Jan. International Journal on Informatics Visualization is licensed under a Creative Commons Attribution-Share Alike 4. 0 International License. renovation of the Ferrari 178H1 Load Handling Crane system to reduce the damage to the control unit . The main motivation behind software re-engineering is to address issues such as lack of knowledge of the legacy system when the developer has left the company, the system is built using obsolete programming language, and the system's functionalities not being understood . In addition, legacy systems may not be compatible with new technology. monolithic architecture causes the creation of single-point failure, difficult to integrate with other systems . These issues may arise due to the system's aging, making it challenging to maintain or update. Additionally, the need for re-engineering is also driven by enhancement purposes, such as improving the adaptability of web applications on different networks and devices . This is particularly crucial in today's digital age, where users access web applications on various devices and platforms. Moreover, software re-engineering may entail utilizing novel technologies like cloud technologies to improve the INTRODUCTION Software systems are dynamic and constantly evolving for various reasons, such as new user requirements, technological changes, and operation environments. However, legacy systems may require redesigning and reconstructing part. or the entire system to meet these evolving needs. As technology is developed speedily, for example, when smartphones become common, most application systems are built to be used in smartphone devices . , and the rise of IoT (Internet of Thing. technologies and their adoption in industries . Therefore, software re-engineering comes into play for old systems to adapt to new technology environments. It involves studying the existing system to derive the abstract representation of the system and making the necessary changes to produce a new system that aligns with the evolving Not only does the software require reengineering, but hardware systems also require reengineering to improve their performance, for example, the analyzers to perform static, dynamic, and historical analyses. The challenges are related to the ability requirements of the In addition, the authors studied the challenges of developing software views. There are also challenges in transforming software architecture into modern architecture. The challenges of the re-engineering process are described in Table 1. system's functionality . Modernizing legacy systems also includes migrating system architecture, from monolithic to microservice architecture, to overcome and reduce the tight coupling between modules in monolithic architecture . Modernization aims to prevent the legacy system from becoming obsolete and difficult to maintain . Benefits. Challenges, and Risks in Software Reengineering The problems of legacy systems include using old technology, complex codes, and challenges to modify and These characteristics of legacy systems may lead to higher maintenance costs, hiring of professionals to maintain old codes, and rarely providing the requirements to support the business . Reengineering the existing software has various benefits compared to developing a new system from First, re-engineering reduces the maintenance cost of the legacy system and develops new software . Secondly, re-engineering of databases to obtain the benefits of another type of database, for example, re-engineering conventional relational databases and migrating to NoSQL for storing unstructured data . , and another example is adapting to fruitful computational resources in cloud-based servers . Software re-engineering can also avoid cost and security risks caused by compliances with industry standards and outdated security measures . Re-engineering software is a complicated and intricate process that deals with the intricacies of an existing system. This process can pose several challenges for the reengineering team, for example, lack of knowledge about the legacy system, incomplete documentation, and the impact of system components . One of the team's challenges is that users expect the new system to have functionality and performance similar to the old system, which requires additional effort in testing the software . When upgrading a document information system, ensuring no data loss during the migration process is challenging, as the process is complex and requires careful planning and execution . According to Zabidi et al. , the software community needs to deal with the modification of ten million legacy code statements for improvements, and the improvement depends on the knowledge and experiences of the developers in applying an ad hoc approach. It is also challenging for the development team to analyze the impact and risk of the Re-engineering is a complicated and timeconsuming process that requires the consideration of downtime and data security for some industries, such as banks. this will lead to companies using outdated technology . Embedded software re-engineering faces challenges in understanding its behavior. For instance, it is hard to comprehend a real-world implicit state machine from code. These are frequently accomplished by evaluating and setting static flags throughout the code so that changing a flag in one call alters the way the function behaves in a later call. Embedded control software shows much stateful behavior since discrete steps must be taken for every continuous process . A software analyzer is required to perform software analysis during the reverse engineering stage of software reengineering. Canfora et al. studied reverse engineering challenges using reverse engineering tools such as software TABLE I CHALLENGES FACED IN SOFTWARE RE-ENGINEERING Tasks Static analysis Dynamic Analysis Historical Analysis Challenges Ability to interpret non-compliant code and various language variations. Different characteristics in programming languages make it difficult to interpret the codes completely . Ability to extract information that's helpful for reverse engineering projects. In some cases, there is no need to have a representation of the program. It only requires relevant information for reverse engineering . Ability to retrieve the semantics of a The analyzer must be able to perform a set of analyses, which is absolutely required in reverse engineering . It is crucial to be able to compile and execute a program when analyzing an intermediate version of it. This may not always be possible, especially if the program is incomplete and grabbed from a versioning system. Therefore, it is necessary to ensure that the tools and resources are available to analyze the program . Choosing the right inputs to execute a system is crucial when performing dynamic analysis, as the results heavily depend on the inputs used. Therefore, it is essential to carefully consider the approach taken when reverse engineering . Filtering and extracting relevant information from significant execution traces is a crucial challenge for better understanding . The reverse engineer may not have access to the systemAos code for certain types of systems but can only run the application. This is known as a black-box analysis, and the tool is required to perform it . The tools should be able to integrate heterogeneous software repositories by linking changes and issues. This may face challenges such as the accuracy of information . The tools should be able to analyze and differentiate changes made to software artifacts . TABLE I CHALLENGES FACED IN SOFTWARE RE-ENGINEERING (CONTINUED) Grouping related changes together would enhance historical analysis by providing a development/maintenance activity . Building Software Views Architecture Modelling Architecture Refactoring Planning on Evolutionalization Process Support Evaluation on Usefulness integrating revised modules, and testing them. The existing software system serves as the input for the re-engineering process, while the re-engineered and better-quality software serves as the output of re-engineering. The process of software re-engineering involves three main processes: reverse engineering, alteration, and forward engineering. Therefore, the re-engineering process can be illustrated and represented using a diagram shown in Fig. Powerful query languages are necessary to build different views from the information base populated by analyzers . The ability to rebuild high-level information from low-level artifacts is Correctly information is crucial for software visualization as it significantly affects the effectiveness of program analysis and developers . When the requirements are not compatible with the design, it is timeconsuming. This is due to the developer's insufficient understanding . This activity is time-consuming, and it isn't easy to map the structures between different architectural patterns . Planning is crucial in migrating software architecture, especially in determining the order of the migration process/activities . If the architecture transformation process fails, a more complex recovery process will be met . The consideration of process, tools, and human decision support to transform legacy systems into mobile applications . The evaluation of the effectiveness and usability of mobile applications . fter conversion from legacy syste. Fig. 1 General model of software re-engineering . Reverse engineering is a technological procedure that involves the reverse study of a target product to extract design components like the flow of process, functional specifications, and organizational structure . The system codes are analyzed during reverse engineering to produce a higher-level representation of the current system through a series of analytical works. The abstraction of system representation will be increased throughout the reverse engineering process. Then, forward engineering will continue to produce the new system through the four . levels of process, from conceptual to implementation . During the re-engineering process, necessary alterations are applied to the system according to the requirements, which include recoding, re-specifying, and re-design . There are strategies to implement the changes to improve the system. One of the strategies is software revamping, which includes updating antiquated technological infrastructure to improve functionality, performance, and conformity with modern standards . , for example, to overcome the limitations of monolithic gaming software architecture with cloud-oriented distributed engines . Software restructuring or re-modularization is a regularly used strategy for system changes during software reengineering. Software restructuring is to ameliorate the existing internal quality of the system without affecting the systemAos external behavior . Another strategy is rearchitecting and modifying an application's architecture using more contemporary computer theories. For example, to change the software architecture to work in heterogeneous hardware architecture . Replace strategy substitutes the entire system altogether . These modification strategies enhance the legacy system in terms of codes, data structures, and architecture to meet new user requirements and organizational objectives. Another rehosting strategy is to migrate the legacy system into a new environment with minimal code changes and functionality changes. Refactoring is reorganizing and enhancing already-written code to make it more readable and Transforming software architecture into modern architecture involves possible risks that need to be considered and evaluated before the re-engineering process. The risks are shown in Table 2. TABLE II RISK OF RE-ENGINEERING Risks Costs Time Delay Performance User Satisfaction Bugs Description Monetary-related risks such as high maintenance costs, backup costs, and insignificant profit . The reengineering process is slow due to insufficient knowledge of the existing system, budget run-off, management decisions, and mismatched architecture . Testing consumes time and costs in reengineering . Performance-related risks include inappropriate use of a reengineering approach, unmatched results, and inappropriate data restructuring . Challenging in meeting user requirements in the competitive business environment . Users may suffer from bugs in the reengineered product due to insufficient or inappropriate testing . II. MATERIAL AND METHOD Software Re-Engineering Models Re-engineering involves interpreting and analyzing the existing system code, implementing required changes, efficient without compromising its essential features. Transferring legacy programs to an alternative platform or infrastructure is known as re-platforming. When the legacy system cannot be modernized, a complete system replacement is considered . Forward engineering produces a new system based on the output of reverse engineering. The forward engineering process starts from a high-level system representation and produces the new system's implementation-level codes. the forward engineering process progresses, the system representation's abstraction level decreases as more information is added, moving down to the implementation This process involves creating a new system designed to meet the new requirements and specifications while ensuring that it is efficient, reliable, and maintainable. The generic model shows the software re-engineering process based on the level of system representation. software re-engineering process model indicates six . main processes . , as shown in Fig. existing systemAos representations of different abstract levels through horizontal transformation. These representations act as input for generating new source code in the forward engineering process . The model shows the process of reengineering legacy systems into new ones. This model has been used as a reference for several works in re-engineering software architecture, user interface, and source code. Fig. shows the horseshoe re-engineering process model Fig. 3 Horseshoe model for re-engineering . A phase model for re-engineering embedded automotive software is based on the SEIAos horseshoe model but with additional phases: the preceding identification phase and a succeeding validation phase. The phase model concerns the function and source levels . Fig. shows the phase model for re-engineering. Based on the complexity index, the first stage identifies the functions with the lowest maintainability quality. The identified artifact then needs to be understood for its The bad smell pattern is used to detect structural Design principles and patterns are applied to create new solutions with a comprehensible software The last stage is to verify the new solution against the requirements . Fig. 2 Software re-engineering process model . According to . , the description of each process is as . Inventory Analysis: Identify and analyze the information of the software program items based on a list of the required data to be collected. Document Restructuring: Re-documentation is performed on an existing document. Normally, the existing document for a legacy system is weakly documented. Reverse Engineering: Extract information regarding the existing systemAos architecture, design, and data. Code Restructuring: Restructure the existing codes for maintainability, testability, and ease of understanding. Data Restructuring: The existing data structure and model are analyzed and defined. Identify data attributes are . Forward Engineering: Improve the quality of the existing system by recovering existing design information and performing necessary modifications or organization. This is also known as reclamation or renovation. Another model for software re-engineering is the horseshoe process model. The horseshoe model depicts a software reengineering process where reverse engineering derives the Fig. 4 Phase model for re-engineering . In the hybrid re-engineering model . , reverse and forward engineering are performed in parallel. For example, after the feasibility study, the next stage is requirement specification, where new requirements are gathered and mapped with the existing software requirement specification for requirement re-specification. Then, the new software specification will be used to map with the existing design for software re-design purposes. The process will then proceed to the following phases until the new system is derived. This model performs the whole re-engineering process . everse engineering, modification, forward engineerin. at every The hybrid model is depicted in Fig. The left side of the V model describes the design and coding stages, while the right side shows the necessary validation stages for the products. The idea is based on the traditional V model of software development. The stages involved in the V model for web re-engineering . tarting from top lef. are as follows . Requirements gathering for a new web application: This stage collects the new requirements for the intended new web application through various techniques, such as interviews, discussions, model sites, etc. In addition, the new system objectives are determined through requirement . Analysis of existing legacy system/specification building: Analyze the existing system structure and functions and identify possible new requirements. Identify the possibility of component reuse. Migration planning and architectural transformation Perform planning on the resources and implementation plan for the migration and transformation to the target system. Re-engineering of application migration: This is the stage where re-engineering works, such as architecture restructuring and code changes, are applied to reengineer the old system. Test planning & strategizing: Created a test plan and determined the test strategy to evaluate the system's meeting of the new functional and non-functional requirements. Fig. 5 Hybrid re-engineering model . Test execution: Perform various tests according to the test plan. Nowadays, the website is used for different purposes, such as online learning, shopping, and job seeking . addition, the web application for electronic banking provides more convenience to users in performing bank transactions . Web re-engineering integrates new web applications while partially replacing existing legacy components. Dhiman has proposed a V model for web re-engineering . The V model comprises various re-engineering processes such as web page, transaction, application migration, and graphic design re-engineering. These processes help reconstruct, refactor, and reengineer legacy web systems. In the V model, the product must go through the whole web development life cycle, passing the entire testing cycle. Fig. shows the V model for web re-engineering. Regression testing: Regression tests are performed to check the effects of change on the system. User Acceptance testing: The system is being tested to meet users' expectations. Using the V-model with the re-engineering process improves website maintainability and effectiveness through better validation, verification, and production. The Re-V model . was proposed for re-engineering a legacy system. The proposed model is based on the software development Vmodel, which shows the application of tests at different levels during software development. This model relates different levels of testing during the re-engineering process to test and validate the system. The model consists of two main parts: the deconstruction of the legacy system and the reconstruction of the new system. Deconstruction of legacy system. The developers will try to understand the existing system's features, user stories, and functionalities by deconstructing the legacy system. The process is conducted until the code level of the existing Reconstruction is performed, which includes restructuring of the code. The legacy code will be transformed into new codes. Unit test cases are generated and performed during this stage to ensure the function unit meets the Furthermore, integration and acceptance tests validate the new systemAos functionalities. Fig. depicts the process in Re-V model. Fig. 6 V model for web re-engineering . TABLE IV SCORE/RM FUNCTION LAYERS . Function Layer Encapsulation Transformation Normalization Interpretation Abstraction Fig. 7 Re-V model for legacy system re-engineering . Causation Regeneration Certification Description This procedure is used to capture and manage the source code so that it may consistently serve as the base of reference for the subsequent layers This process alters the source code's control flow to organize and structure it. The stage where data and its structures are The starting process is to derive the first portion of the software. Determine and identify the object hierarchy from the annotated and rationalized source The forming of a hierarchy structure is examined to serve as the foundation for the requirements specification. Implementation of a new system based on the functional specification and Analysis of the new software demonstrates that it is compliant with the source code, meets the requirements, and operates as SCORE/RM systematically rationalizes and rebuilds software by comprehending its functions and requirements according to established software engineering practices. Fig. 8 Source code re-engineering reference model . The Source Code Re-engineering Reference Model (SCORE/RM) in Fig. defines the framework for the process of software re-engineering. The framework defined by SCORE/RM (SCORE/RM framewor. consists of four . elements, as in Table 3. TABLE i SCORE/RM ELEMENTS . Elements Function Metrication Documentation Repository Database Description Represents the process of reengineering. Eight . functions form the eight . layers of SCORE/RM. A set of metrics is applied before and after each function layer is executed. These metrics are used to evaluate software Consists of information regarding the old and new systems, such as specifications, constraints, and implementation Stores items involved in re-engineering process such as source code, metrication, and documentation. Fig. 9 Iterative re-engineering process model . An iterative re-engineering process model is proposed by Bianchi et al. The re-engineering process in this model is predicated on the progressive evolution of a legacy system by the sequential re-engineering of the system's components, ensuring its coexistence through a series of transitional stages. The legacy and new systems can coexist during the reengineering process. The legacy and new systems share metadata, data, and operative environment. Fig. shows the process model of iterative re-engineering. Fig. shows the architecture during the reengineering process. The legacy components still exist and operate while the new components are built. With the coexistence of legacy and new systems as one architecture during reengineering, the iterative process model guarantees the continuity of system operation to satisfy user needs. addition, the freezing time due to the reengineering process will be reduced. The eight . layers of the SCORE/RM function perform the re-engineering tasks to deliver the intended new system. The top six . layers are the reverse engineering process, and the bottom three . are the forward engineering process. The layers of functions are described in Table 4. Fig. 10 System architecture during the re-engineering process . Another software re-engineering model is the dual spiral re-engineering model. The dual spiral model's re-engineering process requires both old and new systems to work together, with the old system's functionalities decreasing. In contrast, the new systemAos functionalities increase throughout the Proxy is applied for integration purposes of both systems during the re-engineering process. The increasing and decreasing functionalities of the old and new systems are depicted in Fig. , and the incremental and decremental spiral process is shown in Fig. The dual spiral re-engineering model consists of three . main steps: the division of functionalities, the start of the spiral procedure, and the termination of the spiral procedure. In the first step, the functionalities of the old system are divided into sets of functionality. Then, these functionalities will be put into the decremental spiral process to remove functionalities in the old system and, simultaneously, the incremental spiral process to add new functionalities. This represents the transition of functionalities from the old to the new system. The transition of functionalities may not be in the way of a one-to-one functionality transition. it could be a one-to-many or one transition. The re-engineering process . piral proces. will stop until all functionalities are transmitted into a new system and users are approved. A cloud migration metamodel is proposed for migrating legacy systems to the cloud. This metamodel is created through a series of processes that gather knowledge from the software development cycle and different re-engineering models from multiple sources through a literature review. Then, the activities and tasks for various phases in the migration life cycle are analyzed, categorized, and validated . The metamodel provides a framework for planning and managing the methodical, situation-specific system migration to the cloud. Fig. 11 Dual spiral re-engineering model . and provides guidelines for performing modernization . The four primary aspects of the conceptual model are the organization, process, product, and human. Every aspect has some components and factors that are pertinent to its The conceptual model has adopted four models, that are: Systems and Software Quality Model (ISO/IEC 25010:2. Data Quality Model (ISO/IEC 25012:2. Renaissance Method, and SERVQUAL Model to ensure the quality of the modernized system. SERQUAL is a research tool designed to assess service quality by gathering respondents' expectations and views along five service quality criteria . The described models in this section have shared a common ground in the overall re-engineering process, which is to derive the representation of the existing system . everse engineerin. , perform a necessary transformation . , and produce a new system . orward engineerin. However, with the fast advancement of technology, such as blockchain and artificial intelligence, these technologies affect how systems are built and maintained. Therefore, the discussed model may need to evolve in conjunction with the evolution of technology. The comparison of re-engineering models is shown in Table 5. TABLE V COMPARISONS OF SOFTWARE RE-ENGINEERING MODELS Fig. 12 Incremental and decremental spiral process . Elements Generic model Description Showing the three . main processes of software reengineering . Phase model The model is derived from the SEIAos horseshoe model but with additional phases: a identification phase and a succeeding validation phase. is for reengineering software . A model where reverse engineering and forward engineering are performed in parallel . V model for web re-engineering starts with gathering for a new system, analyze, and transformation of the legacy system, followed by different types of tests . Hybrid reengineering V-model for re-engineering Fig. 13 The conceptual model of legacy systemsAo modernization for citizencentric digital government . Fig. 13 shows the conceptual model for modernizing the legacy system for citizen-centric digital government. This model is built based on the analysis of the concerned factors Limitations The re-engineering process involves the whole system. therefore, the target system is frozen during the reengineering process . This is different from the horseshoe model, which describes the reengineering at the function, and source The phase model focuses on the source and function levels . No metrics are available to assess the performance and scalability of the new system . The V-model of development has limitations, such as there is no iteration of the re-engineering process, and unsuitable for a system where requirements are rapidly changing . Therefore, both Elements Re-V model for reengineering Description Based on the VModel of development, the re-engineering of the legacy system with a relevant level of test design to validate the new system at different levels of testing . The model reengineers the legacy system from the source code through eight . layers of the process . The re-engineering model allows the coexistence of old and new systems during reengineering . It consists of a twospiral process, which transmits the functions of the old system into the new systemAos functions . SCORE/RM Iterative reengineering process model Dual spiral reengineering Conceptual model for legacy system A conceptual model guiding the legacy towards the citizencentric digital . The iterative approach splits the system into different packages, and re-engineering activities are performed on the parcel to derive the new system package. The process continues until all packages are re-engineered. This approach requires the existence of documentation and code . Partial approach reengineering separates the system into part. to be re-engineered and part. not to be re-engineered. After the reengineering process, the reengineered parts are combined with the non-reengineered parts to become the new system . The approaches discussed by several authors . reengineered the legacy system in a divisionoriented way, which divided it into parts. Wrapping . is another approach that encloses the current code within a contemporary interface. External entities communicate and connect to the system through the interfaces provided in the wrapper. A re-engineering case of Java-based Object-Oriented software is performed by applying the Scrum approach of the Agile framework. This approach performs the re-engineering tasks within different sprints to re-engineer the selected classes in the software For example, reverse engineering, alteration, and forward engineering tasks are performed in Sprint 1. The objectives of this approach are to reduce the complexity and improve the maintainability of the software . A model-driven re-engineering approach, the MLSAC (Migration of Legacy Software Applications to the Clou. framework, is applied in the re-engineering of software in cloud computing. MLSAC pulls together various cohesive, empirically validated cloud-specific approach fragments from research and application. From this collection, a meta-model . r meta-metho. and matching instantiation guidelines are Metamodeling serves as a representational layer for reengineering methodologies and is the foundation of MLSAC. The principles of the design science research approach guide the creation and assessment of MLSAC. In a particular case of re-engineering to cloud platforms, the metamodel can also be used to develop and manage custom re-engineering techniques . Another approach modernized and transformed a legacy system into a mobile-based application through processes based on three crucial aspects: process activities, process view, and process support. These aspects include modernization activities such as planning, modeling, transforming, and evaluating . A previous study proposed a re-engineering framework for open-source software using the decision tree approach as cited in . This approach provides a guideline for identifying reengineering requirements. Re-engineering approaches transform the existing legacy system into an enhanced new In other words, these approaches are considered part of the legacy system modernization approach. Re-engineering approaches can be merged to fulfill the modernization needs but must include consideration of risk, budget, and time . Limitations the V-model and ReV model for reengineering may have similar To incorporate supporting tools used in formal specifications into SOCRE/RM, they need to be improved . Need to build a data locator and manage the residual database during the reengineering process . The model divides the system based on functionality but not module . Therefore, it may take more work to divide the legacy functionality with convoluted codes that deviate from design principles. To give consistent direction, the modernization of legacy systems must consider all pertinent elements and factors from many including citizencentric requirements . RESULTS AND DISCUSSION Software Re-Engineering Approaches The first approach discussed is the Big Bang approach. This approach replaces the existing system with the new one at once. The Big Bang approach is typically required when there is a need for direct problem-solving . However, the strength of applying this approach is that it requires a huge upfront investment and a long time for return . The incremental approach breaks the re-engineering process into different phases, which are executed gradually, and each phase is to re-engineer certain parts of the software. The incremental approach shows a low-risk way of reengineering but needs a well-defined way to ensure it is performed in a stable, less risky, and cost-efficient way . IV. CONCLUSION From the reengineering models and approaches discussed in this paper, software reengineering involves multiple processes and activities to transform the legacy system into a new system. The reengineering process is complex. it requires the developer/engineer to have knowledge and skills in different perspectives of technologies. In addition, software reengineering must consider costs, resources, risks, and organizational goals. REFERENCES