01-03-2013, 11:44 AM
Reverse Engineering
Reverse Engineering.docx (Size: 22.27 KB / Downloads: 27)
Outline:
Reverse engineering is the process of analyzing a subject system to create representations of the system at a higher level of abstraction. It can also be seen as "going backwards through the development cycle. Software reverse engineering is done to retrieve the source code of a program because the source code was lost, to study how the program performs certain operations, to improve the performance of a program, to fix a bug (correct an error in the program when the source code is not available), to identify malicious content in a program such as a virus or to adapt a program written for use with one microprocessor for use with another.
Required Case Tools
Rational Rose
How does it work?
Reverse engineering with Rational Rose comprises the creation of a UML model, based on the analysis of existing libraries and components. Designers can refine and enhance this model at any time during the software development lifecycle, and re-synchronize the model with the implementation code as needed (more on this below). With help from Rational Rose, teams can integrate legacy code into a new system architecture both more quickly and more accurately than is possible by hand. Provided, of course, that the code is supported by Rational Rose. In its simplest form, reverse engineering using Rational Rose involves nothing more than the automatic generation of a class diagram from an object oriented code base. The problem is that such a diagram is typically of little use, unless the code in question is already organized into discrete components or packages. Figure 1 illustrates what I mean. This example is not meant to be readable, but even if it were, the complexity would make it very difficult to interpret.
The Business Case for Visual Modeling
One way Rational Rose helps automate the repackaging of legacy code is by enabling you to produce a visual model from your code, and then automatically generate code from your model. When you change the code generated by the model, you can easily fold the changes back into the model, and vice versa. In the context of iterative development, this process of forward engineering, reverse engineering, and re-synchronization of implementation code with the model is collectively referred to as round-trip engineering.