5.5 IssuesIn 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
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
Companies providing these types of services focus
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. |
5.6 SummaryUnderstanding the legacy system is one of the major challenges involved in modernizing legacy systems. The level of understanding required, the appropriate techniques to apply, and the appropriate models to create depend largely on how the legacy system will be transformed. The RSS modernization effort, for example, involves a complete architectural transformation requiring both static and dynamic analysis of the legacy system at all levels of abstraction. This required discovering and documenting the relationships between source-level elements in RSS, including call and create- read-update-delete (CRUD) data. The RSS architecture also had to be reconstructed to the degree required to map between program elements in the legacy system and the target architecture. The RSS modernization effort required transforming the existing but largely uncharacterized legacy system architecture to the target architecture we define in Chapter 12. Chapter 6 discusses architectural representation and its application in legacy system modernization. |