What is it? - It is the process of discovering the technological principles of a product, tool, device or system. The abductive reasoning of its structure, function and operation is the means used to make the discovery.
The products that currently undergo this technique are computer programs, but any product can be the object of reverse engineering analysis. Reverse Engineering is so named because it advances in the opposite direction (From the abstract to the concrete) to the usual engineering tasks (From the concrete to the abstract), which consist of using technical data to develop a specific product.
In order to apply Reverse Engineering, it is necessary to delve into the study of its operation, until we can understand, modify and improve this mode of operation.Your application does not change the functionality of the application object, it allows you to obtain products that indicate how it has been built.
There are the following types of reverse engineering:
Data: It is the set of techniques that allows obtaining a database schema from its coding.
Its multiple functions are:
Re-document, rebuild and/or update missing or non-existent database documentation
Serve as a pivot in a data migration process.
Assist in the exploration and extraction of data in poorly documented databases.
The information that can be extracted, depending on the starting point, can be: Entity, relationships, attributes, primary or foreign keys, etc. From these elements, data models are created, such as entity-relationship diagrams.
Logic or process: To understand procedural abstractions, the code is analyzed at different levels of abstraction: system, program, component, configuration, and statement. It is applied on the code of a program to find out its logic or on any design document to obtain analysis or requirements documents, we speak of reverse engineering of processes.
The information extracted is the design specifications: control flow models, design diagrams, design specification documents, are created. And being able to take these specifications as a new starting point to apply reverse engineering and obtain information at a higher level of abstraction.
User interfaces: A reverse engineering activity must take place before you can rebuild a user interface.
To fully understand it, the structure and behavior of the interface must be specified.
The information necessary to create a behavior model can be obtained by observing the external manifestation of the existing interface.