In the Proceedings of Graphics Interface?92 in Vancouver, Canada (13-15 May, 1992), Page 53 Mogran Kaufmann: Palo Alto, CA.
A Framework for Describing and Implementing
Software Visualization Systems
Blaine A. Price1
Human Cognition Research Laboratory
The Open University
Milton Keynes, UK, MK7 6AA
Phone: +44 908 65-3800 (Fax: -3169)
Internet e-mail: [email protected]
In recent years many prototype systems have been developed for graphically visualizing program execution in an attempt to create a better interface between software engineers and their programs. Several classificationbased taxonomies have been proposed to describe computer program visualization systems and general frameworks have been suggested for implementation. In this paper we provide a framework for both describing existing systems and implementing new ones. We demonstrate the utility of automatic program visualization by re-implementing a number of classic systems using this framework.
R?cemment on a d?velopp? beaucoup de syst?mes prototype pour visualiser graphiquement l?ex?cution d?un programme afin de cr?er une meilleure interface entre les cr?ateurs de logiciel et leurs programmes. Plusieurs taxonomies bas?es sur une classification ont ?t? propos?es pour d?crire des syst?mes de visualization de programmes et des cadres g?n?raux ont ?t? propos?s pour leur r?alisation. Dans ce papier nous fournissons un cadre dans lequel on peut d?crire des syt?mes actuels et ex?cuter de nouveaux syst?mes. On montre l?utilit? de visualization automatique de programmes en r?-ex?cutant quelques anciens syst?mes dans le cadre de ce prototype.
Keywords: Program Visualization, Algorithm
Animation, CASE, Debugging Aids, Software
Visualization, Software Engineering
1Also affiliated with: The Dynamic Graphics Project, Computer Systems Research Institute, The University of Toronto, Toronto, Canada M5S 1A1
What is Software Visualization?
The tools traditionally used by software engineers to help monitor and analyse program execution have been plain ASCII-text based debugging environments which usually allow the user to trace the currently executing code, stop and start execution at arbitrary points, and examine the contents of data structures. Although they can be understood by experts, these tools have a limited pedagogic value and by the early 1980's the work of Baecker and Sherman (1981) and Brown (1988) showed how algorithms could be animated with cartoon-like displays that show a high level abstraction of a program's code and data (Brown referred to this as ?algorithm animation?).
A concurrent development in the mid-1980's was the appearance of systems which displayed graphical representations that were more tightly coupled with a program's code or data and showed more or less faithful representations of the code as it was executing. Although the displays were not as rich as the custom built algorithm animations, these systems were closer to the tools that software engineers might use. These ?program animators? together with the algorithm animators became known as ?program visualization? systems. We prefer the more descriptive term ?software visualization? (Price, Small, & Baecker, 1992) which encompasses both algorithm and program visualization as well as the visualization of multi-program software systems. In this paper we will use the term software visualization (SV) to describe systems that use visual (and other) media to enhance one programmer's understanding of another's work (or his own).
Classifying SV Systems
One of the first taxonomies of SV was that of Myers (1986) (updated later as (Myers, 1990)), which served to differentiate SV, visual programming, and programmingby-example. In classifying SV systems, Myers used only two dimensions: static vs. dynamic and code vs. data. The first dimension is based on the style of implementation;