Manipulating and Documenting Sofkware Structures Using SHriMP Views? Margaret-Anne D. Storey School of Computing Science Simon Fraser University Burnaby BC Canada V5A lS6 mstorey@csr.uvic.ca Abstract An effective approach to program understanding in- volves browsing, exploring, and creating views that document software structures at different levels of ab- straction. While exploring the myriad of relationships in a multi-million line legacy system, one can easily loose context. One approach to alleviate this problem is to visualize these structures using jsheye techniques. This paper introduces Simple Hierarchical Multi- Perspective views (SHriMPs). The SHriMP visualiza- tion technique has been incorporated into the Rigi re- verse engineering system. This greatly enhances Rigi’s capabilities for documenting design patterns and archi- tectural diagrams that span multiple levels of abstrac- tion. The applicability and usefulness of SHriMPs is illustrated with selected program understanding tasks. Keywords: program understanding, reverse engi- neering, re-engineering, software visualization, fisheye views. 1 Introduction K’lutter and confusion are failures of design, not attributes of information.” Edward R. Tufte, Envisioning Information. ‘This work was supported in part by the British Columbia Advanced Systems Institute, the IBM Software Solutions Toronto Laboratory Centre for Advanced Stud- ies, the IRIS Federal Centres of Excellence, the Natural Sciences and Engineering Research Council of Canada, the Science Council of British Columbia, the University of Vic- toria and Simon Fraser University. Hausi A. Miiller Department of Computer Science University of Victoria, Victoria, BC Canada V8W 3P6 liausi@csr.uvic.ca Effectively presenting large amounts of information in any form is challenging. Althougjh the computer screen is relatively small, it is easy to fill it with so much information and detail that it completely over- whelms the user. It is not the amount of informa- tion that is relevant, but rather how it is displayed[l4]. Careful consideration must therefore be given on how to present information so that it can be used effec- tively. A crucial step in this process, is determining the purpose of t,he visualization. This problem is par- ticularly acute in the process of understanding soft- ware systems using reverse engineering tools. The visualization and user interface communities have suggested many approaches for visualizing large information spaces. Approaches based on the fisheye lens paradigm seem well suited to the task of visual- izing software. These techniques allow users to create views that span. different levels of abstractions. For example, a high-level architectural diagram might in- clude detailed information at strategic points to high- light pertinent .information or to illustrate a bottle- neck. Architectural styles[6], or design patterns[5] of- ten include entities at various levels of detail. How- ever, usually information spaces of this kind are mod- eled as graphs a.nd displayed using a set of tiled win- dows. It is easy to loose context because the relation- ships among windows are typically implicit. This paper describes techniques for visualizing soft- ware structures modeled as nested gra:phs, using fish- eye views. Nested graphs are used for visualizing the structure and organization of the software. Nodes rep- resent artifacts in the software, such ;as functions or data variables. Arcs represent dependencies among these artifacts, :such as call dependencies. Compos- ite nodes correslpond to subsystems in the software. 275 1063-6773/95 $04.00 0 1995 IEEE Proceedings of the International Conference on Software Maintenance (ICSM '95) 1063-6773 /95 $10.00 © 1995 IEEE