We have described methods for interactive graph visualization in the application domain compiler construction. Most heuristics which we presented are implemented in the VCG tool [Sa94] and are successfully used as debugging aid in a commercial compiler project [AAS94] and in teaching at the university. Since the VCG tool is publicly available, we know also about applications of the tool ranging from the generation of genealogical trees up to circuit design and debugging tools. The tool seems to fit to many more application areas. Some similar visualization tools exist [Hi95, FrWe93, GKN93, Sc95] that focus on different areas.
How useful is a visualization tool, in compiler construction or in general? We believe that the success of such a tool does not only depend on the quality of the graph layout algorithm, but also very much on the facilities of the user interface. Powerful browsing methods simplify the interactive graph exploration and are absolutely necessary for the acceptance of visualization. The implementation of a comfortable user interface means a considerable amount of work, and unfortunately, this is often neglected. Another important factor for the usability of an interactive tool is its speed. This, however, is a never ending story: as visualization tools become faster the graphs get larger that are dealt with.
There are many empirical studies about the usefulness of program visualization (for an overview, see [Hy93]). These take into account psychological effects, such as time pressure during debugging, education and familiarity of the subjects of the tests with visualization techniques. The results vary a lot. Although most experiments found graphical representations better, others made just the contradictory observation [GPB91]. The usability of graphical representations of data and programs can not be assured in the general case. It depends on the knowledge and expectations of the users (in many experiments, the subjects are students), on the aim of the visualization, on the visualization method (static visualization or animation), and on the capabilities of the visualization tool.
We think that in the research community of compiler construction, visualization of compiler data structures is widely accepted. This may be influenced by the fact that advanced compiler construction is usually taught by using graph theoretical terminology: data structures in compilers are graphs. Thus, the compiler construction community is familiar with graphs. Our experience is that visualization allows better understanding of the behavior of compilers, if suitable layout strategies and powerful browsing methods are used.