Visualization and Evolution of Software Architectures
Visualization and Evolution of Software
Architectures
Taimur Khan1 , Henning Barthel2 , Achim Ebert1 , and
Peter Liggesmeyer2
1
2
Computer Graphics and HCI Group
University of Kaiserslautern, Germany
{tkhan,ebert}@informatik.uni-kl.de
Fraunhofer IESE
Kaiserslautern, Germany
{Henning.Barthel,Peter.Liggesmeyer}@informatik.uni-kl.de
Abstract
Software systems are an integral component of our everyday life as we find them in tools and
embedded in equipment all around us. In order to ensure smooth, predictable, and accurate
operation of these systems, it is crucial to produce and maintain systems that are highly reliable.
A well-designed and well-maintained architecture goes a long way in achieving this goal. However,
due to the intangible and often complex nature of software architecture, this task can be quite
complicated. The field of software architecture visualization aims to ease this task by providing
tools and techniques to examine the hierarchy, relationship, evolution, and quality of architecture
components. In this paper, we present a discourse on the state of the art of software architecture
visualization techniques. Further, we highlight the importance of developing solutions tailored
to meet the needs and requirements of the stakeholders involved in the analysis process.
1998 ACM Subject Classification D.2.11 Software Architectures
Keywords and phrases Sofware architecture visualization, software comprehension, software
maintenance, software evolution, human perception
Digital Object Identifier 10.4230/OASIcs.VLUDS.2011.25
1
Motivation
The field of software visualization is centered on visual representations aimed at making
the software more comprehensible. These representations are a necessity for analysts to
examine software systems due to their “complex, abstract, and difficult to observe” nature
[53]. These difficulties are further compounded in large-scale software systems where it
becomes increasingly difficult for analysts to examine the systems’ behavior and properties,
due to the systems’ scale.
Software visualization focuses on various aspects of software systems, such as source
code, software structure, runtime behavior, component interaction, or software evolution, to
unravel patterns and behaviors through the different software development stages [1]. Due
to the diverse nature of these data sets, different types of visualizations can be found in
literature. However, for the focus of this research we highlight the visualization of software
architecture as well as software architecture evolution.
The visualization of software architecture is an essential component of software visualization. “Not only are architects interested in this visualization but also developers, testers,
project managers, and even customers” [32]. From the perspective of a software analyst,
© Taimur Khan, Henning Barthel, Achim Ebert, and Peter Liggesmeier;
licensed under Creative Commons License ND
Proceedings of IRTG 1131 – Visualization of Large and Unstructured Data Sets Workshop 2011.
Editors: Christoph Garth, Ariane Middel, Hans Hagen; pp. 25–42
OpenAccess Series in Informatics
Schloss Dagstuhl – Leibniz-Zentrum für Informatik, Dagstuhl Publishing, Germany
26
Visualization and Evolution of Software Architectures
(a) General node-link diagram
(b) As found in SAVE [23]
Figure 1 General and tool specific node-link diagram.
software architecture focuses on the structure of a software system – the focal point of
which is to examine composing entities, their metrics, and relationships [11]. Additionally,
recent studies have shown an increased interest in not only the visual exploration of software
modules, their structure, and interrelations, but also in the evolution of these modules [19].
The key feature of software architecture visualization is to uncover visual metaphors that are
both efficient and effective in depicting the software architecture of a system and to encode
software code metrics within these representations. Several questions need to be addressed in
finding such solutions, such as: who is the end-user of the architecture visualization [50], what
needs to be analyzed through the visualization [52], and how can appropriate visualization
metaphors and interaction techniques be chosen [2].
2
Visualizing Software Architectures
One of the core topics in the field of software visualization is a means to effectively visualize,
navigate, and explore the software architecture of a system [31, 32, 34]. Generally, objectoriented software tends to be structured hierarchically – with packages containing subpackages, which in turn contain classes that hold methods and attributes. It is this hierarchy
and relationships between software components that are of interest when it comes to software
architecture visualization [15].
In this section, we explore representations of the global architecture of a system, such as
tree, graph, and diagram model depictions. Further, we also investigate representations that
highlight relationships between components as well as the importance of visualizing software
metrics.
2.1
Architecture Representations
Tree structures are an ideal way of representing the hierarchical structure of software
architecture. However, research in this area has shown the need to move forward from wellknown techniques such as node-link layouts to more sophisticated ones to handle the larger
hierarchies found in software systems nowadays [70]. Fig. 1 shows both a generic node-link
diagram as well as one found in a commercial tool. Inspection of these representations shows
that they quickly become too large and utilize available screen space far too poorly for proper
investigation. Further, the amount of textual information represented in the nodes as well as
the way relationships are depicted should be revisited to avoid visual clutter and information
overload [41].
This section inspects several 2D visual representations [10] that may not be specific to just
software visualization, but have been effectively applied to highlight the hierarchal structure
of a software system [70, 4]. Here, it is important to note that a lot of these representations
T. Khan, H. Barthel, A. Ebert, and P. Liggesmeier
(a) Rectangular TreeMap
27
(b) Circular TreeMap
Figure 2 Rectangular and Circular TreeMaps from [57].
have been extended to 3D visualizations [2, 6, 49]. While 3D approaches have been shown to
display larger hierarchies and minimize clutter [58], they have also suffered from the well
documented drawbacks of 3D visualizations, such as: object occlusion, cumbersome view
adjustments, performance issues, as well as poor readability of 3D texts [48, 17]. Due to
these drawbacks and the requirements of our stakeholders, this survey focuses mostly on 2D
representations.
The Treemap visualization (Fig. 2a), first introduced by Johnson and Schneiderman [39],
is an effective means to visualize an entire software hierarchy. It is essentially a space-filling
t (...truncated)