Reverse Engineering

Reverse Engineering 

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.

·         Synthesis higher abstraction.

·         Facilitate Reuse.


Steps of Software Reverse Engineering: 

 



1.    Collection Information: 
This step focuses on collecting all possible information (i.e., source design documents etc.) about the software. 

 

2.    Examining the information: 
The information collected in step-1 as studied so as to get familiar with the system. 

 

3.    Extracting the structure: 
This step concerns with identification of program structure in the form of structure chart where each node corresponds to some routine. 

 

4.    Recording the functionality: 
During this step processing details of each module of the structure, charts are recorded using structured language like decision table, etc. 

 

5.    Recording data flow: 
From the information exA tracted in step-3 and step-4, set of data flow diagrams are derived to show the flow of data among the processes. 

 

6.    Recording control flow: 
High level control structure of the software is recorded. 

 

7.    Review extracted design: 
Design document extracted is reviewed several times to ensure consistency and correctness. It also ensures that the design represents the program. 

 

8.    Generate documentation: 
Finally, in this step, the complete documentation including SRS, design document, history, overview, etc. are recorded for future use.