| A current challenge facing software system development is the effective and efficient use of existing designs. This use of existing legacy products, which represents significant corporate investments, focuses on integration into new developments. Reverse engineering is a process that analyzes existing systems, looking at the individual components and interrelationships to provide dissection of legacy systems through the identification of existing complexities and extraction of the specific “business rules” contained therein is used to define the information necessary to describe the structural design.;To accomplish this, the classical architectural analysis that produces this information utilizes three steps: (1) data extraction, (2) data packages that attempt to automate this analysis by categorizing the information and identifying “common threads” to support extraction of underlying architecture that can be reused. The categories can be described as: (1) textual, (2) lexical, (3) semantic, (4) data flow, and (5) control flow.;Statistical analysis is performed to collect empirical data regarding the five categories to develop performance equations for each technique. Comparisons focusing on improved performance based on technique combinations are accomplished using the same collected data. Further analysis with respect to levels of comprehension associated is then performed looking at both techniques employed and effects of previous knowledge.;This effort is designed to produce quantitative data to be used as initial guidance for the reverse engineer. This information assists in the initial and follow-on development efforts of reverse engineering tools to improve performance and comprehension. |