A Taxonomy of Software Visualization
Blaine A. Price*, Ian S. Small, and Ronald M. Baecker
Dynamic Graphics Project, Computer Systems Research Institute
University of Toronto, CANADA M5S 1A1
Phone: +1 416-978-6983, Fax: +1 416-978-5184
Internet: [email protected]
Software visualization is the use of interactive computer graphics, typography, graphic design, animation, and cinematography to enhance the interface between the software engineer or the computer science student and their programs. Although several taxonomies of software visualization have been proposed, they use few dimensions and do not span the space of important distinctions between systems. We attempt to fill this gap in the literature by proposing a novel and systematic taxonomy of six areas making up thirty characteristic features of software visualization technology. The taxonomy is presented and illustrated in terms of its application to seven systems of historic importance and technical interest.
Through scientific visualization, researchers across a range of scientific disciplines can take advantage of new hardware and software technology to display and elucidate vast quantities of otherwise incomprehensible data (McCormick, DeFanti and Brown 1987; Rosenblum and Nielson 1991). Since the data is presented in a pictorial form, scientists are able to use the brain's ability to make analogies and links between the visual image and existing ideas?links that are not likely to be made when data appears as columns of numbers or lines of text. A good scientific visualization system allows the researcher to make discoveries not otherwise possible and provides him with a powerful new interface to his data.
*Author?s current address: Human Cognition Research Laboratory, The Open University, Milton Keynes, UK, MK6 2DQ. Internet: [email protected]
In: Proceedings of the 25th Hawaii
International Conference on System Sciences, New York: IEEE Computer Society Press, Volume II, pp. 597-606. NOTE: an expanded and updated version appears in the Journal of Visual Languages and Computing 4(3), 1993.
Ironically, the field of software engineering has not seen the benefits of the scientific visualization revolution. Software engineers also deal with large amounts of complex data (computer programs), but they still rely on an interface which has remained essentially unchanged for twenty years. Programs are often edited in variably-sized overlapping windows on large screen desktop workstations, but the programs still appear in single-colour, single-font text. While the amount of screen real estate has increased, the fundamental interface is that of the VT-100 style terminal of the 1970's.
Programming language researchers have been trying to design languages that make it easier to express and understand programs, but they have been restricted by the Roman alphabet and the ASCII character set, the elements of which are often difficult to discriminate and take limited advantage of the human visual perception system. The field of computer software visualization (SV) has a similar goal, but is not handicapped by these restrictions: it facilitates the human understanding and effective use of computer programs by relying on the crafts of typography, graphic design, animation, cinematography, and interactive computer graphics.
The importance of visual representations in understanding computer programs is by no means a new concept. Goldstein and von Neumann (1947) demonstrated the usefulness of flowcharts, while Haibt (1959) developed a system that could draw them automatically. But flowcharts have serious limitations and few software engineers would argue that flowcharts significantly enhance their understanding of million line systems. Researchers started to address this problem in the 1980?s, as workstation technology became more common, encouraging the development of a broader range of SV techniques. This work ranged from motion pictures of sorting algorithms (Baecker, 1981) to fully interactive graphical representations of data structures running ?live? on a workstation (Brown and Sedgewick, 1984). Yet this technology remains largely unused by today's software engineer.
A common reason cited for the failure of SV systems as software engineering tools is their lack of scalability.