Dagger: a tool to generate program graphs

  • Authors:
  • Yih-Farn Chen

  • Affiliations:
  • AT&T Bell Laboratories, Murray Hill, NJ

  • Venue:
  • UNIX'94 Proceedings of the USENIX Applications Development Symposium Proceedings on USENIX Applications Development Symposium Proceedings
  • Year:
  • 1994

Quantified Score

Hi-index 0.00

Visualization

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.