5.5 Issues


In this section, we describe several issues you may face in reverse engineering and architectural reconstruction.

Tool Support Versus Manual Effort

Architecture reconstruction and reverse engineering can be completely manual or tool supported but are not yet a completely automated activity. For example, manual code reading is an essential part of architectural reconstruction. Performing these tasks manually has the advantage of being a hands-on activity. Developers spend time directly evaluating legacy system artifacts instead of relying on tools to do this job. However, given the large amount of code in some systems and the amount of data to be extracted and analyzed , tool support is often a practical necessity. Tools are more exhaustive in their evaluation, but manual evaluation may discover information, such as source code comments, that might not be evaluated in an automated approach. As a result, most reengineering efforts will use some combination of manual and tool-supported activities.

Decompilation/Disassembly

In some circumstances, legacy source code may not be available. If the system is being reengineered through code transformation, the source code ”or at least a higher-level language representation ”must be recovered from the available executable or object code. Recovering source code can be accomplished through disassembly and decompilation. Disassembly translates an executable program into its equivalent assembly representation. Decompilation translates an executable file into a higher-level language.

Companies providing these types of services focus mainly on mainframe applications written in COBOL and RPG. For example, these services were used extensively to fix Y2K bugs in older applications. More recent applications of disassembly and decompilation include the javap program included with the Sun JDK for disassembling Java bytecodes and various decompilers , including Deja Vu, Jad, and Mocha.

Decompilation is not a straightforward process, and there are difficulties in trying to do it. The main problems are separating data and code ”that is, obtaining a complete disassembly of the program ”reconstructing control structures, and recovering high-level data types. To achieve a greater percentage of the decompilation/disassembly automatically, you can use decompilers that apply knowledge about the specific compilers and libraries used in the original compilation.



Modernizing Legacy Systems
Modernizing Legacy Systems: Software Technologies, Engineering Processes, and Business Practices
ISBN: 0321118847
EAN: 2147483647
Year: 2003
Pages: 142

flylib.com © 2008-2017.
If you may any questions please contact us: flylib@qtcs.net