Software Reverse Engineering is a process of recovering the design, requirement specifications and functions of a product from an analysis of its code. It builds a program database and generates information from this.
The purpose of reverse engineering is to facilitate the maintenance work by improving the understandability of a system and to produce the necessary documents for a legacy system.
Reverse Engineering Goals:
- Cope with Complexity.
- Recover lost information.
- Detect side effects.
- Synthesise higher abstraction.
- Facilitate Reuse.
Steps of Software Reverse Engineering:
- Collection Information:
This step focuses on collecting all possible information (i.e., source design documents etc.) about the software.
- Examining the information:
The information collected in step-1 as studied so as to get familiar with the system.
- Extracting the structure:
This step concerns with identification of program structure in the form of structure chart where each node corresponds to some routine.
- Recording the functionality:
During this step processing details of each module of the structure, charts are recorded using structured language like decision table, etc.
- Recording data flow:
From the information extracted in step-3 and step-4, set of data flow diagrams are derived to show the flow of data among the processes.
- Recording control flow:
High level control structure of the software is recorded.
- Review extracted design:
Design document extracted is reviewed several times to ensure consistency and correctness. It also ensures that the design represents the program.
- Generate documentation:
Finally, in this step, the complete documentation including SRS, design document, history, overview, etc. are recorded for future use.
- Software Engineering | Project size estimation techniques
- Types of Software Testing
- Software Testing | Basics
- Software Engineering | Architectural Design
- Software Engineering | Halstead’s Software Metrics
- Beta Testing | Software Testing
- Software Engineering | Debugging Approaches
- Pairwise Software Testing
- Software Engineering | COCOMO Model
- Software Engineering | Classification of Software Requirements
- Software Engineering | Classical Waterfall Model
- Software Engineering | Iterative Waterfall Model
- Software Engineering | Spiral Model
- Software Engineering | Requirements Engineering Process
- Software Engineering | Requirements Elicitation
If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to firstname.lastname@example.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.
Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.