Software Reengineering
Software Reengineering
Presented by
Suleman abrar
Danial ahmad
What is Software Reengineering ?
Software re-engineering is the process of revisiting and improving an existing software system, even if it
is already considered well-designed. It involves rethinking and enhancing the software to adapt to new
requirements, maintain competitiveness, and keep up with the fast-paced changes in technology and
industry demands. The goal of re-engineering is to make the software more effective, efficient, and
relevant over time.
• Planning: The first step is to plan the re-engineering process, which involves identifying the reasons for re-
engineering, defining the scope, and establishing the goals and objectives of the process.
• Analysis: The next step is to analyze the existing system, including the code, documentation, and other
artifacts. This involves identifying the system’s strengths and weaknesses, as well as any issues that need to
be addressed.
• Design: Based on the analysis, the next step is to design the new or updated software system. This involves
identifying the changes that need to be made and developing a plan to implement them.
• Implementation: The next step is to implement the changes by modifying the existing code, adding new
features, and updating the documentation and other artifacts.
• Testing: Once the changes have been implemented, the software system needs to be tested to ensure that it
meets the new requirements and specifications.
• Deployment: The final step is to deploy the re-engineered software system and make it available to end-
users.
Steps involved in Re-engineering
• Inventory Analysis
• Document Reconstruction
• Reverse Engineering
• Code Reconstruction
• Data Reconstruction
• Forward Engineering
Inventory Analysis:
•Create an inventory of all software components, modules, and dependencies to understand the scope of
the system.
•Identify outdated or redundant components that need to be re-engineered.
Documentation Update:
•Review and update existing documentation to ensure it accurately
reflects the current system.
•Document missing or outdated parts to provide a complete
overview for the re-engineering process.
Code Analysis:
•Analyze the source code to understand its structure, quality, and complexity.
•Identify areas for improvement, code redundancies, and potential bugs.
Restructuring and Refactoring:
•Modify the code structure without altering its external behavior.
•Simplify complex code, remove redundancies, and improve readability and maintainability.
Data Restructuring:
•Analyze and restructure the existing data to improve data integrity,
organization, and performance.
•This step may involve changes in the database schema or
data models.
Forward Engineering:
Forward Engineering also called renovation or reclamation not
only recovers design information from existing software but uses
this information to alter or reconstitute the existing system to
improve its overall quality.
Restructuring and Refactoring:
•Modify the code structure without altering its external behavior.
•Simplify complex code, remove redundancies, and improve readability and maintainability.
Data Restructuring:
•Analyze and restructure the existing data to improve data integrity,
organization, and performance.
•This step may involve changes in the database schema or
data models.
Forward Engineering:
Forward Engineering also called renovation or reclamation not
only recovers design information from existing software but uses
this information to alter or reconstitute the existing system to
improve its overall quality.
Advantages of software Re-engineering
https://fullscale.io/blog/software-reengineering/
https://www.geeksforgeeks.org/software-engineering-re-engineering/
https://chatgpt.com/c/6703f894-5910-8013-9ff2-c75120241712