Friday, September 20, 2024
Google search engine
HomeGuest BlogsSoftware Engineering | Reverse Engineering

Software 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 producing 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: 

 

  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 is studied so as to get familiar with the system. 

     

  3. Extracting the structure: 
    This step concerns identifying program structure in the form of a 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 extracted in step-3 and step-4, a set of data flow diagrams is derived to show the flow of data among the processes. 

     

  6. Recording control flow: 
    The high-level control structure of the software is recorded. 

     

  7. Review extracted design: 
    The 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. is recorded for future use. 

     

Reverse Engineering Tools:

Reverse engineering if done manually would consume a lot of time and human labor and hence must be supported by automated tools. Some of the tools are given below:

  • CIAO and CIA:  A graphical navigator for software and web repositories and a collection of Reverse Engineering tools.
  • Rigi: A visual software understanding tool.
  • Bunch: A software clustering/modularization tool.
  • GEN++: An application generator to support the development of analysis tools for the C++ language.
  • PBS: Software Bookshelf tools for extracting and visualizing the architecture of programs.
Whether you’re preparing for your first job interview or aiming to upskill in this ever-evolving tech landscape, neveropen Courses are your key to success. We provide top-quality content at affordable prices, all geared towards accelerating your growth in a time-bound manner. Join the millions we’ve already empowered, and we’re here to do the same for you. Don’t miss out – check it out now!

RELATED ARTICLES

Most Popular

Recent Comments