Program Understanding as Constraint Satisfaction:
Representation and Reasoning Techniques
Steven Woods and
Qiang Yang.
Abstract
The process of understanding a source code in a high-level programming
language involves complex computation. Given a piece of legacy code and a
library of program plan templates, understanding the code corresponds to
building mappings from parts of the source code to particular program plans.
These mappings could be used to assist an expert in reverse engineering,
legacy code, to facilitate software reuse, or to assist in the
translation of the source into another programming language.
In this paper we present a model of program understanding using constraint
satisfaction. Within this model we intelligently compose a partial global
picture of the source program code by transforming knowledge about the problem
domain and the program itself into sets of constraints. We then systematically
study different search algorithms and empirically evaluate their performance.
One advantage of the constraint satisfaction model is its generality; many
previous attempts in program understanding could now be cast under the same
spectrum of heuristics, and thus be readily compared. Another advantage is
the improvement in search efficiency using various heuristic techniques in
constraint satisfaction.
Copyright Notice
Copyright 1996 Kluwer Academic Publishers. Published in the Journal
of Automated Software Engineering.
Personal use of this material is permitted. However, permission to
reprint/republish this material for advertising or promotional purposes or for
creating new collective works for resale or redistribution to servers or lists,
or to reuse any copyrighted component of this work in other works, must be
obtained from Kluwer.
Comments
- This work was completed in 1995, unfortunate delays pushed publication back until late 1997. Consequently, this work predates many publications which
have appeared previously.
The Paper (28 pages)