Dagger: A Tool to Generate Program Graphs
Yih-Farn Chen
AT&T Bell Laboratories
600 Mountain Avenue
Murray Hill, NJ 07974
chen@research.att.com
Abstract
Dagger is a tool that generates program graphs to selectively
visualize a software structure. The design of dagger achieves a
strong degree of language independence by exploiting the duality
between a class of entity-relationship databases and attributed
directed graphs. This paper describes the C and C++ versions of
dagger, which map a selected subset of relationships stored in a
program database to a graph specification, decorate the graph with
display attributes, and then pass it to layout tools or interactive
graph browsers. Dagger takes output from database queries to generate
a large variety of interesting program graphs, including header file
hierarchy, module binding, and type inheritance graphs. This paper
describes the graph generation process surrounding dagger and a sample
of tools involved in the process. In particular, we describe how a
closure operator works in tandem with dagger to control graph
complexity by generating reachability graphs where sub-structures are
selectively ignored or expanded. Our experience in applying dagger to
several software projects has demonstrated its capability in
abstracting and visualizing complex software structures without much
overhead. All program graphs presented in this paper are tagged with
timing statistics.
Download the full text of this paper in
ASCII (33,032 bytes) and
POSTSCRIPT (905,621 bytes) form.
To Become a USENIX Member, please see our
Membership Information.