Software visualization or software visualisation refers to the visualization of information of and related to software systems—either the
architecture
Architecture is the art and technique of designing and building, as distinguished from the skills associated with construction. It is both the process and the product of sketching, conceiving, planning, designing, and constructing buildings ...
of its
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the ...
or metrics of their
runtime behavior—and their development process by means of static, interactive or animated 2-D or 3-D visual representations of their structure, execution, behavior, and evolution.
Software system information
Software visualization uses a variety of information available about software systems. Key information categories include:
*
implementation
Implementation is the realization of an application, or execution of a plan, idea, model, design, specification, standard, algorithm, or policy.
Industry-specific definitions
Computer science
In computer science, an implementation is a real ...
artifacts such as
source code
In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the ...
s,
*
software metric
In software engineering and development, a software metric is a standard of measure of a degree to which a software system or process possesses some property. Even if a metric is not a measurement (metrics are functions, while measurements are ...
data from measurements or from
reverse engineering
Reverse engineering (also known as backwards engineering or back engineering) is a process or method through which one attempts to understand through deductive reasoning how a previously made device, process, system, or piece of software accompli ...
,
*
traces
Traces may refer to:
Literature
* ''Traces'' (book), a 1998 short-story collection by Stephen Baxter
* ''Traces'' series, a series of novels by Malcolm Rose
Music Albums
* ''Traces'' (Classics IV album) or the title song (see below), 1969
* ''Tra ...
that record execution behavior,
*
software testing
Software testing is the act of examining the artifacts and the behavior of the software under test by validation and verification. Software testing can also provide an objective, independent view of the software to allow the business to apprecia ...
data (e.g., test coverage)
*
software repository
A software repository, or repo for short, is a storage location for software packages. Often a table of contents is also stored, along with metadata. A software repository is typically managed by source control or repository managers. Package ...
data that tracks changes.
Objectives
The objectives of software visualization are to support the
understanding of software systems (i.e., its structure) and algorithms (e.g., by animating the behavior of sorting algorithms) as well as the analysis and exploration of software systems and their anomalies (e.g., by showing classes with high
coupling
A coupling is a device used to connect two shafts together at their ends for the purpose of transmitting power. The primary purpose of couplings is to join two pieces of rotating equipment while permitting some degree of misalignment or end mov ...
) and their development and evolution. One of the strengths of software visualization is to combine and relate information of software systems that are not inherently linked, for example by projecting code changes onto software execution traces.
Software visualization can be used as tool and technique to explore and analyze software system information, e.g., to discover anomalies similar to the process of
visual data mining. For example, software visualization is used to monitoring activities such as for code quality or team activity. Visualization is not inherently a method for
software quality assurance
Software quality assurance (SQA) is a means and practice of monitoring all software engineering processes, methods, and work products to ensure compliance against defined standards. It may include ensuring conformance to standards or models, suc ...
. Software visualization participates to
Software Intelligence Software Intelligence is insight into the structural condition of software assets produced by software designed to analyze database structure, software framework and source code to better understand and control complex software systems in Informatio ...
in allowing to discover and take advantage of mastering inner components of software systems.
Types
Tools for software visualization might be used to visualize source code and
quality defects during software development and maintenance activities. There are different approaches to map source code to a visual representation such as by
software map A software map represents static, dynamic, and evolutionary information of software systems and their software development processes by means of 2D or 3D map-oriented information visualization. It constitutes a fundamental concept and tool in soft ...
s Their objective includes, for example, the automatic discovery and visualization of quality defects in object-oriented software systems and services. Commonly, they visualize the direct relationship of a class and its methods with other classes in the software system and mark potential quality defects. A further benefit is the support for visual navigation through the software system.
More or less specialized
graph drawing software
Graph drawing is an area of mathematics and computer science combining methods from geometric graph theory and information visualization to derive two-dimensional depictions of graphs arising from applications such as social network analysis, ca ...
is used for software visualization. A small-scale 2003 survey of researchers active in the
reverse engineering
Reverse engineering (also known as backwards engineering or back engineering) is a process or method through which one attempts to understand through deductive reasoning how a previously made device, process, system, or piece of software accompli ...
and
software maintenance
Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes.
A common perception of maintenance is that it merely involves fixing defects. H ...
fields found that a wide variety of visualization tools were used, including general purpose graph drawing packages like
GraphViz
Graphviz (short for ''Graph Visualization Software'') is a package of open-source tools initiated by AT&T Labs Research for drawing graphs specified in DOT language scripts having the file name extension "gv". It also provides libraries for ...
and GraphEd, UML tools like
Rational Rose
Rational Rose XDE, an "eXtended Development Environment" for software developers, integrates with Microsoft Visual Studio .NET and Rational Application Developer. The Rational Software division of IBM, which previously produced Rational Rose, ...
and
Borland Together
Together is a product from Micro Focus, formerly from Borland (acquired by Micro Focus in 2009), formerly from TogetherSoft (acquired by Borland in 2003), that currently integrates a Java IDE, which originally had its roots in JBuilder, with ...
, and more specialized tools like Visualization of Compiler Graphs (VCG) and
Rigi
The Rigi (or ''Mount Rigi''; also known as ''Queen of the Mountains'') is a mountain massif of the Alps, located in Central Switzerland. The whole massif is almost entirely surrounded by the water of three different bodies of water: Lake Lucerne ...
.
The range of UML tools that can act as a visualizer by reverse engineering source is by no means short; a 2007 book noted that besides the two aforementioned tools, ESS-Model,
BlueJ, and Fujaba also have this capability, and that Fujaba can also identify
design pattern
A design pattern is the re-usable form of a solution to a design problem. The idea was introduced by the architect Christopher Alexander and has been adapted for various other disciplines, particularly software engineering. The " Gang of Four" b ...
s.
See also
;;Programs:
*
Imagix 4D
Imagix 4D is a source code analysis tool from Imagix Corporation, used primarily for understanding, documenting, and evolving existing C, C++ and Java software.
Applied technologies include full semantic source analysis. Software visualization su ...
*
NDepend
NDepend is a static analysis tool for .NET managed code. The tool proposes a large number features, from dependency visualization to Quality Gates and Smart Technical Debt Estimation. For that reasons the community refers to it as the "Swiss Army ...
*
Sourcetrail
Sourcetrail was a FOSS source code explorer that provided interactive dependency graphs and support for multiple programming languages including C, C++, Java and Python.
History
The project was started by Eberhard Gräther after an internship a ...
*
Sotoarc
Sotoarc is a commercial static code analysis tool for software architects. It graphically visualizes the static structure of software systems written in Java, C# or in C++ code. The code structure is displayed as hierarchies (trees) of modules, ...
;;Related concepts:
*
Application discovery and understanding
*
Software maintenance
Software maintenance in software engineering is the modification of a software product after delivery to correct faults, to improve performance or other attributes.
A common perception of maintenance is that it merely involves fixing defects. H ...
*
Software map A software map represents static, dynamic, and evolutionary information of software systems and their software development processes by means of 2D or 3D map-oriented information visualization. It constitutes a fundamental concept and tool in soft ...
s
*
Software diagnosis
*
Cognitive dimensions of notations
Cognitive dimensions or cognitive dimensions of notations are design principles for notations, user interfaces and programming languages, described by researcher Thomas R.G. Green and further researched with Marian Petre. The dimensions can be ...
*
Software archaeology Software archaeology or source code archeology is the study of poorly documented or undocumented legacy software implementations, as part of software maintenance. Software archaeology, named by analogy with archaeology, includes the reverse enginee ...
References
Further reading
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
*
External links
SoftVisthe ACM Symposium on Software Visualization
VISSOFT2nd IEEE Working Conference on Software Visualization
EPDVEclipse Project Dependencies Viewer
{{Visualization
Infographics
Software maintenance
Software metrics
Software development
Software quality
Source code
Software
Visualization software