by Amit Prakash Sawant and Naveen Bali
This article presents an automated technique for visualizing large software architectures using
multiple graphical representations, including multi-dimensional scaling, 2-D grid, and spiral layouts. We describe how our software visualization methods were applied to the Network
Appliance operating system known as Data ONTAP 7G (ONTAP). We show how each method
can be applied to comprehend a specific aspect of ONTAP. This approach can be used by software
engineers, architects, and developers to better understand the architecture of their code.
An accurate and complete software architecture that represents the
entire implementation in code is very difficult, if not impossible, to
obtain in the software industry. ONTAP, Network Appliance’s storage
operating system, is no exception—we found that an accurate and
complete software architectural representation does not exist for
ONTAP. ONTAP is a very large software system, consisting of approximately 10,000 files and nearly 1 million lines of code). A number of
ways to examine and interpret the components of ONTAP exist, but
they all oversimplify the system and leave out critical details [ 1, 5, 6].
In this article we describe multiple graphical methods for visualizing the software architecture of ONTAP. We encapsulate the natural
partitions that exist in the system, enabling us to consider individual
components and the interactions between them. We utilize existing
categorizations of ONTAP as embedded directly in the code and
employ visualization techniques to view the identified components.
Moreover, since we use raw source code to generate the software architecture, the architecture can be updated frequently to capture changes
as they happen. Although our work deals exclusively with ONTAP, the
techniques described here can be applied to other large systems
including operating systems, middleware, and application software.
Knodel et al. [ 10] propose that software architecture visualizations
should be thoroughly assessed by software architects in an industrial
environment. They successfully applied the approach of software
development, visualization, and validation to their software architecture visualization tool. Auer et al. [ 2] applied multi-dimensional scaling techniques to visualize high-dimensional software portfolio
information gathered from different sources. They proposed a simple
method to define raw software metrics data that can be analyzed and
processed using multi-dimensional scaling methods. They also conducted a validation study to demonstrate the usability of their proposed approach for software decision support.
GASE (graphical analyzer for software evolution) [ 7] is another tool
to visualize software structural change. This tool uses color to represent
new, common, and deleted parts of a software system, thereby enabling
the software developer to gain insight about structural changes that
might otherwise be difficult to detect. The RECONSTRUCTOR project
focuses on interactive visualization of software systems and is concerned
with the representation of architecture information in different forms [ 8].
Kazman and Carrière [ 9] describe a workbench called Dali, which can
extract, manipulate, and interpret software architectural information
using raw source code as input. We have borrowed some of Dali’s
methods in our work.
Software architecture is defined as a set of components that interact with one another via a set of connectors [ 6]. The connectors in our
software architecture are direct procedure calls and accesses to global
variables. We chose global variable and global function (collectively
known as symbols) references as connectors because ONTAP is writ-