Navigating Software Architectures with Constant Visual Complexity Wanchun Li, Peter Eades, Seok-Hee Hong School of Information Technologies University of Sydney Sydney, Australia Email: {lpaul, peter, shhong@it.usyd.edu.au} Abstract— Visualizing software architecture faces the chal- lenges of both data complexity and visual complexity. This paper presents an approach for visualizing software architecture, which reduces data complexity using the clustered graph model and navigates pictures of clustered graphs with constant visual complexity. A graph drawing algorithm is introduced to generate visualizations of clustered graphs. A semantic fisheye view of a clustered graph is proposed for conserving constant visual complexity. Animation is used to present smooth transition of visualizations. A case study is investigated to navigate the architecture of the Compiler c488. I. I NTRODUCTION Software architecture refers to the structure of a program or a computer system, which comprises software elements, the properties of those elements, and the relationships among those elements [1]. It is the “blue-print” for building a successful software system. Visualization can help software architects to design, analyze, and evaluate software architectures quickly and effectively. Visualization of software architecture has been studied by researchers from diverse areas such as vi- sual languages, software engineering, and graph visualiza- tion [12] [19] [8] [5] [4] [18]. Software architectures are typically relational and are usu- ally modeled by graphs. Many research efforts have been dedicated to visualizing and navigating graphs, especially hierarchies [3]. The visualization and navigation of software architectures faces the challenge of complexity in two ways: (a) Data complexity arises from the sizes of graphs that model software architectures. Such graphs usually have hundreds or thousands of nodes and edges. (b) Visual complexity measures the complexity of a screen presented to the user. Issues of visual complexity arise from limitations on human processing capacity. The ca- pacity of short-term memory is limited to a small amount of information [17]. When navigating an information space, humans retain only a small amount of information as one screen is replaced by another. Visual complexity is a significant issue in a dynamic environment, when a software architect browses, analyzes and edits a design. Many visualization techniques have been proposed to ad- dress the problem of data complexity. Software architectures can be modelled using “clustered graphs” [6]: this is a hierar- chy in which the bottom level is a graph whose nodes represent single files or classes, and higher levels represent packages and subpackages. This paper proposes a new algorithm for generating visualizations of software architectures that are modeled by clustered graphs. The two challenges are related: by reducing data complexity, visual complexity is reduced as well. However, the problem of visual complexity is subtle. One can clearly reduce visual complexity by reducing the number of nodes displayed on any one screen; in fact, one can reduce it to just one node. However, this does not solve the problem, because the less information on the screen the longer it takes for a human to browse the architecture. Pulo [15] and Li [9] propose the notion of “constant visual visual complexity”: that the visual should be constant as a navigation proceeds. A visualization system that conserves constant visual complexity avoids vi- sual overload caused by increasing visual complexity, while users can receive visual information with reasonable cognitive load. This paper addresses the issue of navigating software architectures in a similar way. In the next section we review notions of clustered graphs, graph drawing, fisheye views, and visual complexity. Next we give a reference model for navigating clustered graphs, and introduce a semantic fisheye view of a clustered graph; the aim is to give a strategy for conserving constant visual complexity. We also give an animation method for smoothing the transition between screens. II. PRELIMINARIES A. Graphs and Clustered Graphs Graph theoretic notions are from [2]. A clustered graph C = (G, T ) consists of a graph G, and a rooted tree T (called the cluster tree) whose leaves are exactly the nodes of G. The leaves of T are leaf-clusters of C and non-leaf nodes of T are super-clusters of C; both leaf-clusters and super-clusters are referred to as clusters. The root of T is also referred to as the root-cluster. An abridgement is a logic abstraction of a clustered graph, in which each super-cluster can have one of two states, opened and closed, and every descendent of a closed super-cluster is closed. Figure 1 shows a clustered graph and one of its abridgements, in which child-clusters of cluster 2 and 4 are closed.