Static and Dynamic C++ Code Analysis for the Recovery of the
Object Diagram
Abstract
When a software system enters the maintenance phase, the availability of
accurate and consistent information about its organization can help
alleviate the difficulties of program understanding. Reverse engineering
methods aim at extracting such kind of information directly from the
code. While several tools support the recovery of the class diagram
from object oriented code, no work has insofar attacked the problem of
statically characterizing the behavior of an object oriented system by
means of diagrams which represent the class instances (objects) and their
mutual relationships.
In this paper a novel static analysis algorithm is proposed for the
extraction of the object diagram from the code, based on a program
representation called the object flow graph. Partial object diagrams can be
associated dynamically to the system by executing and tracing the program
on a set of test cases. The complementary nature of these two views will be
discussed, and a novel approach to object oriented testing will be derived
from such a comparison. The usefulness of the proposed technique is
illustrated on a real world, public domain C++ system.
Postscript version of the paper.