Visualisation Research Group
Visualisation Research Group
The Centre for Software Maintenance
Department of Computer Science
University of Durham
E-mail : firstname.lastname@example.org
This presentation describes research performed by the Visualisation Research Group in investigating the application of 3D graphics and virtual reality (VR) technology to software visualisation. This project is funded by an EPSRC CASE award in conjunction with British Telecommunications Plc.
The main goals of this research are:
The purpose of this presentation is both to make people aware of current research into software visualisation and also to gain some insight into the problems faced and methods employed in industrial software maintenance. Most software engineers are generally aware of the field of software visualisation and will have at some point used or experienced some form of software visualisation tool. Less well known is the field of 3D software visualisation and information visualisation, the purpose of this presentation is partially to give a brief introduction to these areas prior to discussing this research. The remainder of the presentation will concentrate on discussing some of the problems faced in software visualisation and presenting some preliminary ideas and simple visualisations in order to generate discussion.
Software visualisation is a very diverse field which encompasses a large number of research threads. Similarly there are many definitions and interpretations of the term "software visualisation", though generally they all mean or imply something to the effect of "enhancing or aiding the understanding of a software system using visual representations and other media".
The area in which this research is concentrating is on providing visualisations of code level abstractions. That is, working from the source code upwards, in the worst case scenario of having nothing but the code itself to work on. In this case, all knowledge of how the program is structured, how it operates and what it’s limitations are must be derived primarily from the source code alone.
In simple programs this task is often time consuming yet perfectly feasible. However, for medium to large scale software systems this task becomes immensely complicated and subsequently very costly in terms of resources and maintenance time. Software maintenance is already a hard task but coupled with the rapidly increasing size and complexity of software systems means it isn’t likely to get any easier.
Large software systems are beyond the capacity of a single person to comprehend and generally require a team of maintainers to tackle any work on them. Each of these maintainers must not only be able to extract information about the system, but must also effectively communicate that knowledge to other maintainers. Visualisation is an excellent medium to communicate information and should prove useful in supplying the program information to the maintainer, but also allowing shared access to this information for a group of maintainers. Visualisation could offer a shared, consistent and persistent view of a software system.
Although software visualisation has many advantages which it could offer, there are also a large number of problems which must first be addressed:
Virtual reality has received a lot of attention recently, particularly in the press, and has led to many misconceptions and exaggerated claims. The goals of Virtual Reality are relatively clear, that of creating the illusion of submersion in a computer generated environment. Although this is generally associated with various novel interface and display techniques, these are not seen as a pre-requisite for virtual reality more as an aid or enhancement. A very high level of involvement or feeling of immersion within a virtual environment can be achieved using standard interfaces and displays (i.e. mice and monitors), the computer games industry being a prime example of this success. The virtual reality in our opinion is not created by the realism of the images or quality of the rendering, it is created by the ability to interact and navigate comfortably through a computer generates environment.
Virtual reality and 3D graphical environments are already becoming commonplace on home computers and are increasingly popular with computer games. Although the methods for interacting with these environments remain relatively simple, they still provide a very immersive experience. Such technology has been exploited greatly in the area of Data Visualisation with excellent results, and it is being used increasingly in information and software visualisation.
The power of virtual reality comes from it’s concept, not the state of current technology. The concept to produce an immersive and fully interactive environment constructed from real world objects or from more abstract information opens up infinite possibilities. Effectively this concept means we can reproduce real world objects and facilities, such as a virtual workstation, desk or work area, but we also have the power to create facilities and tools which are not possible or not feasible in the real world.
The main goal of this research is to investigate the application of 3D graphics and VR technology to software visualisation. This includes investigating the feasibility and worth of such an approach. In this work we are concentrating on visualising software structures and other static information about a software system, such as software metrics or analysis information.
One of the driving ambitions in this research is to move away from the standard views of software systems, which typically consist of directed graphs showing relationships between components. The aim is to investigate other visualisations, representations and appropriate metaphors which make full use of the 3D environment.
The problem of software visualisation in general can be classified into six discrete areas which must be addressed. These areas are representation, abstraction, navigation, correlation, interaction and automation (described in more detail later). This research will also investigate the individual problems posed in these areas.
The application of 3D graphics to software visualisation should not be seen as a cure-all for visualisation problems, it simply provides another presentation medium which allows a greater spatial freedom. It is unlikely that 3D software visualisations will completely replace more traditional 2D methods though they will hopefully provide a useful addition to them. As with 2D software visualisations, 3D visualisations have both advantages and disadvantages.
3D virtual environments offer a number of advantages for visualising information or software systems. Some of these are:
Some of the disadvantages can be easily experienced when first attempting to navigate a 3D visualisation, such as:
A closely related area to 3D software visualisation is that of 3D information visualisation. Both areas are attempting to visualise large, complex and inherently abstract information structures. The field of 3D information visualisation has received significantly more attention and a large amount of research has been performed. A great deal of this research is directly relevant to software visualisation and advances in this field are of great interest.
Software systems are essentially information artefacts and bear similar properties to information structures such as document collections. Such collections also suffer from the problems of size and complexity and much of the research into information visualisation addresses these problems. Also investigated is the subject of collaborative working within virtual environments which is of great relevance when considering that most software maintenance projects are managed by a team of maintainers.
The main areas in 3D software visualisation which we need to address are representation, abstraction, navigation, correlation, integration and automation.
Current work in this research has concentrated on identifying properties of a visualisation which are desirable and also producing simple example visualisations to generate discussion and promote new ideas. To derive properties which we believe are desirable in a visualisation, we found it necessary to divide the concept of a visualisation into two distinct units. These units have been termed Visualisations and Representations. The properties and goals of these two divisions vary sufficiently to warrant a distinction between them.
Effectively, representations are the graphical symbols used in a visualisation to depict each of the sub- components. For example, in a typical graph such as a call-graph or control-flow graph, the graph itself is the visualisation while the nodes are the representations. These terms are however fairly interchangeable and depend greatly on the level of abstraction and amount of detail being presented. A graphical object can be both a representation within one context and a visualisation within another. For example, if a node in the graph provided further information on the structure or qualities of the function it represented then in the context of the software system (i.e. the graph) it is a representation, whereas in the context of the function (i.e. the node) it is a visualisation of further information on that function. In such cases we must consider carefully the structure and properties of the object both as a visualisation and as a representation and also in the transition between them.
The following list highlights some important properties which must be considered when creating a representation. Several of these properties are mutually exclusive, thus a good representation will achieve a suitable compromise between them or show preference to particular attributes for specific purposes.
The size of representations is also a very important issue as irregular or variable sized representations will be harder to position, group and view within the visualisation. For example, if a representation uses it's size to encode some information and the visualisation uses the positional depth (Z co- ordinate) of the representations to encode other information. Confusion will occur when differentiating between a component being near or big and far or small.
The following list highlights some important qualities which must be considered when designing a visualisation. As with the representations, many of these qualities are mutually exclusive and a compromise must be made.
There are many possible directions in which this research could continue, listed below are several ideas which range from being within the scope of this project to long-term fantasy solutions.
At present our research has only suggested a small number of possible ideas and visualisations, the majority of these based around the same core concepts - that of visualising control structure and metric information. We will also be investigating what other information should be provided and also other means of providing it within the visualisations.
Almost all of the visualisations produced so far have been created by hand (Zebedee being the exception). This has allowed maximum flexibility in designing their structure and evaluating new features. The aim now is to automate the generation of these visualisations so they can be applied to other software systems. It should prove interesting to see the various ‘shapes’ and configurations produced by different systems. This could possibly lead to some simple visual characteristics or visual metrics which can be found in well structured and badly structured systems. In any respect, applying the visualisations to a number of different software systems should also highlight problems and limitations with their concept and hopefully also highlight which features are actually useful.
Another factor which must be taken into account is the data manipulations performed within a software system. After all, programs generally just control the manipulation of data. Investigation will be made into visualising the data structures and operations within a program and integrating these with visualisations of the software control structure.
All software visualisations shown here are presenting syntactic information on the system they are modelling. An area which could prove very valuable would be to incorporate some semantic meaning into these representations. This information is extremely difficult to extract automatically, but it would be possible for the maintainer to assign meaning to various parts of the software as their understanding of it grows. This meaning could be incorporated in some form into the visualisation and would then serve as a reminder for the same maintainer, but also as valuable additional information for other maintainers.
It would also prove an interesting concept to be able to visualise dynamic program information, for example execution traces or data manipulation. This information could be presented in the form of animation within the visualisation - effectively allowing the maintainer to watch the operation of the program from the inside.
In order to produce useful visualisation systems using VR technology, it will be necessary to develop a number of virtual tools to allow the user to interact with the visualisations and to gain additional information not immediately available. Such tools could possibly allow the maintainer to change the visualisation and in doing so, change the underlying software system - one such metaphor could allow ‘pruning’ away unused or inaccessible code.
The long term goal would be to develop a fully immersive software maintenance environment which could support collaborative work. This would allow teams of maintainers to work on the same system and be able to interact with other maintainers or be aware of their interests and area of work. This system would enable the actual maintainers to be distributed geographically yet still be involved with all other maintainers on the same project. One of the main points made in the field of information visualisation when concerning multi-user document collections, is that if you need to know something about a particular area or subject then you can approach another user who is operating within the same area. This would also apply to collaborative software visualisations.
Further information and documents can be found at the following URL:
Demonstrations of various visualisations can be found at URL below, though additional software (available via this page) will be required in order to view them:
This page is maintained by Peter Young, please send any comments, jokes, insults or general abuse to (email@example.com).
Last updated: Tuesday 13 May, 1997.