A System for Generating Reverse Engineering Tools

  • Authors:
  • G. Canfora;A. de Lucia;G. A. Di Lucca

  • Affiliations:
  • -;-;-

  • Venue:
  • STEP '97 Proceedings of the 8th International Workshop on Software Technology and Engineering Practice (STEP '97) (including CASE '97)
  • Year:
  • 1997

Quantified Score

Hi-index 0.00

Visualization

Abstract

Most current reverse engineering techniques start with an analysis of the system's source code to derive structural information, based on compiler technology. As a consequence of the maturity of the field, several formal program models exist that have allowed the automatic generation of language processing front-end. However, the software engineer has to code the data structures that implement the program model and the algorithms that implement the desired analysis. Thus, while the domain of code analysis is well understood, economic convenience leads very often to rigid code analyzers that perform a fixed set of analyses and produce standard reports that users can only marginally customize.We have implemented a system for developing code analyzers that uses a unique database to store both a no-loss fine-grained intermediate representation and the analyses' results. The analyzers are automatically generated from a very high-level specification of the desired analyses expressed in a domain-oriented language. We use an algebraic representation, called , as the user-visible intermediate representation. Analyzers are specified in a logic-based language, called , which allows the specification of an analysis in the form of a traversal of an algebraic expression, with accesses to, and stores of, the database information the algebraic expression indexes. A foreign language interface allows the analyzers to be embedded into C programs to facilitate interoperation with other tools.