The rapid expansion of technology and dwindling hardware costs have resulted in an explosion in the computing power to price ratio. Computer systems are increasing both in processing power and storage capacity at an incredible rate. There is a phenomenon in computing in which the demand for hardware resources required by software always exceeds the supply. This means that as hardware advances in performance, new software adapts similarly to utilise these additional resources. Software systems are thus growing in size and complexity at an equally incredible rate. The complexity of such systems exceeds the capability of a single person to completely comprehend their operation. Software visualisation addresses this problem by presenting the information which comprises such systems in a more abstract and concise representation. This allows users to efficiently access individual components or obtain a global view of the software structure, thus aiding the process of understanding the software.
The term cyberspace, as defined in this document, describes the use of 3D graphics and virtual reality techniques in creating abstract visualisations of semantic information. The goal of this research is to investigate how useful software visualisations can be created within cyberspace. Visualisation allows us to endow software with a physical (visual) form, or rather map it to an artefact which can be mentally reasoned and manipulated in a similar manner to which humans perceive the real world. Such a representation would allow software engineers to make use of all their natural, intuitive reasoning and perceptual skills to aid in the software maintenance process. It may also be the case that if software is given such a form, then patterns or visual design rules may emerge. Much in the same way that the properties of a chemical molecule or compound can be derived from structural information, software quality or structural properties may become apparent from the use of software visualisation.
It is a widely accepted fact that software maintenance consumes the majority of resources within the software life cycle [Standish84, Sommerville92]. The high cost in time, money and manpower incurred by maintenance is usually attributed to shortcomings in the design and implementation cycle. A number of factors such as project deadlines, cost overruns and inexperience often result in hurried, badly written and badly documented software systems. Such systems pose significant problems during maintenance.
Regardless of the maintenance task being performed, it is highly likely that the maintainer will require at least some understanding of the code. This understanding often comes from a hard fought battle in which the maintainer must attempt to rediscover the intentions and design issues behind the code, typically from scarce resources and, in the worst case, from the source code alone. For this reason program comprehension is generally accepted as being the central task within software maintenance.
Visualisation, and more specifically computer generated visualisation, is used to a great extent in almost all areas of human endeavour with often immeasurable gains. One example is the field of scientific and data oriented visualisation which makes extensive use of computer generated images to view complex data sets and visualise phenomena which are otherwise invisible. Applying visualisation in this manner often reveals trends and irregularities which can be missed when looking at the raw data. One area which does not benefit from visualisation to any large degree is the role of the software engineer or maintainer. It is strange that the technology which makes possible1 such a powerful and widely used tool as visualisation, should benefit so little. The main reason for this lack of useful visualisation in software engineering is the abstract nature of the information to represent. Software systems are inherently abstract structures, they are information artefacts and have no physical form or intuitive appearance. For this reason, software systems are very difficult to visualise.
The various theories of program comprehension put emphasis on the construction of a mental model of the software within the mind of the maintainer [Brooks83, Young96a]2. These same theories hypothesise a number of techniques employed by the maintainer in the construction of this mental model. Software visualisation [Young96b] attempts to provide tool support for generating, supplementing and verifying this mental model or understanding.
The mental models proposed by various researchers in the field of program comprehension have a commonality in that they all are composed from semantic constructs. These constructs are typically abstractions, at various levels, of program features. The network formed from these constructs constitutes the maintainer's understanding and representation of the program. Software visualisation attempts to provide a mapping from the program code to a visual (and other media) representation which matches the maintainer's mental model as closely as possible. Highlighting and automatically creating these semantic constructs would remove a great deal of effort from the maintainer, specifically they would require less time spent scanning the source code. The field of software visualisation is thus considered an important area of research within the general field of program comprehension.
Software visualisation is concerned with all areas of generating and manipulating these graphical models. In particular, some of the main research interests which must be addressed are:
The majority of software visualisation systems to date have concentrated on producing two dimensional representations and animations of various aspects of a software system. In addition, a growing area of research is investigating the application of 3D graphics and VR technology to software visualisation. This research into 3D software visualisation attempts to address the problem both in terms of the data to represent and the user's ability to navigate this data. The former aspect stems from a growing need for more expressive powers to represent the inherently multidimensional data, facts and relationships which constitute a software system. The latter plays upon the naturally developed capabilities which humans possess for navigating and interacting within three dimensional environments.
Information visualisation (IV) is concerned with the visualisation and representation of semantic information. Often confused with the field of data visualisation which represents numeric and scientific data, IV concentrates on more abstract components which have no inherent visual representations, for example the structure of a knowledge base or document collection. A significant amount of research has investigated the application of 3D graphics and VR technology to information visualisation [Card96, Young96c]. We can consider software systems as simply another collection of abstract data, facts and relations; as information. With this in mind, it should be possible for techniques and ideas generated from research into 3D IV to be applied to visualising software systems.
Virtual Reality (VR) has received an enormous amount of public attention recently. Along with this attention have come exaggerated claims, unrealistic expectations, conflicting and imprecise terminology, and a large degree of uninformed commentary [Gigante93]. Research into VR techniques and systems has also grown progressively over the years, with a great many systems being produced [Gigante93, Young96d]. There are a large number of definitions of the term VR, many of which place emphasis on different aspects of the reality illusion such as the display, interface, and level of immersion. Purists argue that the goal is to provide a ‘suspension of disbelief’, an environment in which the user is not distracted by flaws or inadequacies which point to its artificial nature. A flexible though possibly under defined view of VR is given by Adam:
“A combination of various interface technologies that enables a user to intuitively interact with an immersive and dynamic computer-generated environment.” [Adam93]
This definition dilutes the preconception that VR must involve certain technologies such as head-mounted displays (HMDs), data gloves and tactile feedback systems, allowing a more open interpretation. The definition also removes one implicit assumption often made from the term VR; that the goal is to simulate reality. This allows for more creative applications such as the visualisation of abstract data and the creation of environments which do not adhere to the restrictions of reality.
The term cyberspace was originally coined by William Gibson in his science fiction short story, Burning Chrome [Gibson93]. A number of researchers have since proposed ideas and suggestions on how cyberspace could be implemented and on the characteristics of it’s environment [Benedikt91]. Gibson depicts cyberspace as a populated, global, information abstraction and interaction mechanism in which all data transactions and operations take place. While Gibson’s view is very much fictional and far beyond the scope of current technologies, the term cyberspace and the notion of abstract data spaces suit well to a marriage between the fields of VR and information (including software) visualisation. VR deals predominantly with creating an illusion of immersion within a realistic, although computer generated, environment. Conversely, the term cyberspace will be taken here as the use of 3D and VR technologies for representing abstract information, for creating an information environment. The illusion of reality is not a necessary feature here. The data being represented has no physical form or appearance, merely the abstraction and representation given to it by the designer of the cyberspace.
Software systems, and in particular the large, highly inter-related information bases that they constitute, are inherently multidimensional and thus difficult to visualise [Brooks87]. Current software visualisation systems typically isolate one aspect or view of this information for display, effectively hiding all remaining information. This isolated view generally consists of a large and complex directed graph, which is displayed on a two dimensional canvas using one of the many layout algorithms available. Regardless of the quality of the layout algorithm or viewing technique used, the user is often presented with an incomprehensible birds-nest graph. Alternatively, they are forced to reduce the amount of information displayed, thus removing potentially important information from view [Fairchild88]. While the use of 3D or VR technology cannot immediately solve this problem, it does offer a number of advantages such as: greater working volume for information presentation; focus, context and point of interest managed dynamically by the user’s viewpoint on the information; and greater flexibility with representation, organisation and presentation of the information.
Although the full potential of using three dimensional views and interaction techniques has not yet been realised, a number of software systems have been developed to investigate its worth. In general, these systems do not make full use of the 3D graphics or advance software visualisation to any great extent. The majority simply extend and adapt already established two dimensional visualisation techniques into 3D. These techniques consist mainly of displaying a graph or network structure showing the relationships between components in a software system. The visualisations rarely extend beyond the simple node-link representations evident in almost all software visualisation systems to date. This is not necessarily a bad thing, graph representations are extremely useful for displaying such relationships and dependencies. However, the field of software visualisation should not be restricted to solely one view upon a software system, other possibilities must be investigated.
The intention of this research is to investigate the application of 3D graphics and VR technology to the visualisation of software systems. Graph structures are useful for small collections of information, however, solutions must still be found to enable the effective management of the large collections of information which are common to modern software systems. This research will investigate other representations, visual abstractions and appropriate metaphors (for example: galaxy, point cloud, landscape or rooms) which make full use of the 3D virtual environment afforded by cyberspace. The use of graph representations will not be abandoned or ignored, as these are still integral parts of the software structure. Investigation will be made into how these structures or visualisations can be improved, augmented or superseded using more intuitive, truly three dimensional representations.
There are a number of facets to this problem:
The most important point of note is that we must not forget the actual role of software visualisation within this research. The aim is to provide useful and meaningful visualisations to aid program comprehension or software maintenance, not simply to produce pretty pictures.
Some initial work has already been performed, visualising component dependencies in 3D using the more familiar node-link graph representation. A prototype system, Zebedee [Young96b], has been developed which produces a 3D layout of a component dependency graph within the Superscape VR package. Although Zebedee does not present any new information or introduce new techniques, it has provided insight and stimulated a great deal of discussion. Further, it has identified a need to go beyond the simple node-link representation and explore new possibilities.
Other research has investigated various graph layout and graph simplification techniques [Burd96], with a view to improving the presentation of software component relationships. Also investigated was the integration of software visualisation tools using the World Wide Web. A simple prototype has been developed which uses Netscape Navigator to provide an interface to the visualisation. This allows the creation of a number of interacting views on the software. The prototype displays the syntax highlighted source code, a 2D call graph, and a 3D visualisation produced by Zebedee. Interaction is possible between the three views.
The first phase in this research must undoubtedly be to discover the requirements of the potential users, i.e. software engineers. The creation of useful visualisations would be a difficult, if not impossible task without first knowing what program information is required or how it is used. Identifying the requirements of the user will be obtained both from researching the literature and also from interviews with practising software engineers within an industrial environment (in this instance BT, the CASE award sponsors).
This requirements capture phase will be tackled in two stages. The first stage will concentrate on the literature to identify important components for visualisation. A number of example visualisations covering several styles or metaphors will then be created on the basis of this information. The second stage will involve interviews with professional software engineers, using these example visualisations to stimulate discussion and to identify any underlying problems, for example, navigation within the virtual environment. It is expected that this approach will be more profitable than the 'clean sheet' method of simply asking what they would like to see.
The second phase will investigate the applicability and effectiveness of various spatial metaphors and representations for displaying the program information. These techniques will then be compared with one another, with good and bad features noted and analysed. This will result in a refinement of the visualisations, eventually to one or two disparate styles. These refined visualisations will then be evaluated further, again by interview with professional software engineers.
The evaluation method which will be used throughout this research, and also to evaluate the final outcome, will be based on consultation with professional software engineers and a number of case studies. This evaluation will consider the adequacy, efficiency and effectiveness of the visualisations produced, within the context of program comprehension. To judge improvements afforded by the 3D visualisations, comparisons will be made with existing 2D software maintenance tools which provide visualisations. An important point which must be considered when evaluating systems in this manner is the familiarity of the user to navigating within the 3D environment. Unfamiliar users will undoubtedly suffer confusion and disorientation with first use. This problem will pass with practice and give way to an intuitive and effective interface. This is the point at which evaluation and comparison with other systems should be made.
The intention of this research is to investigate the application of 3D graphics and VR technology to the visualisation of software systems. This will include research into new representations, visual abstractions and appropriate metaphors within the 3D environment. The aim of the research is not to produce a fully functional software visualisation tool, it is to demonstrate the feasibility and potential for such a tool. The results should therefore be identification and evaluation of new visualisations and a concept demonstrator which can be used both for evaluation and discussion of these visualisations.
The success of this research will not simply be determined by the acceptance of the visualisations produced, it will be deemed a success if it isolates a number of new metaphors or representations for 3D software visualisation. Whether these visualisations are better than conventional 2D or 3D representations is not the issue, providing their relative worth is clearly documented.
For these new visualisations to be deemed successful, they must exhibit the following properties:
|July - August ‘96||Research literature : identify components for visualisation.|
|September - October ‘96||Construct evaluation visualisations and confer with professional software maintainers.|
|November ‘96 - June ‘97||Refine and enhance visualisation, investigate other representations, visualisations and metaphors.|
|July - December ‘97||Produce concept demonstrator using refined visualisations. Perform further refinement and enhancement if necessary.|
|January - March ‘98||Perform case study and evaluation of visualisations using concept demonstrator.|
|April ‘98||Evaluation of case study.|
|May - August ‘98||Write thesis.|
|September 1998||Submit thesis.|
This research has been, and is to be, funded by an EPSRC (Engineering and Physical Sciences Research Council) CASE industrial sponsorship award. This award is in collaboration with British Telecommunications Plc.
Acknowledgements also go to Malcolm Munro for the conception and supervision of this project.
1. Computers only make the use of visualisation practical; the technique is not dependent on the technology.
2. The documents referenced as [Young96a, b, c and d] constitute the components of the literature survey. Where used, they imply that the prior statement is disscussed or highlighted within that document. If possible a key reference will also be given to support the statement.
This page is maintained by Peter Young, please send any comments, jokes, insults or general abuse to (firstname.lastname@example.org).
Last updated: Wednesday 3 July, 1996.