SoftwareDataVisualization Reportv2AjishManoharan
SoftwareDataVisualization Reportv2AjishManoharan
net/publication/339688919
CITATIONS READS
0 4,345
2 authors, including:
Ajish Manoharan
Technische Universität Ilmenau
3 PUBLICATIONS 0 CITATIONS
SEE PROFILE
All content following this page was uploaded by Ajish Manoharan on 04 March 2020.
(A Written Report)
Prepared By,
Ajish Manoharan
(Matrikel Nr. 56613)
Faculty of IA,
Technische Universitat of Ilmenau, Germany
Supervised
By
Dr.-Ing. Detlef Streitferdt
Software Architecture & Product Lines
Table of Contents
Abstract 2
I. Introduction 2
1 Definition 2
2 Need & Objective of Visualization 2
3 Difference between Modelling & Visualization 3
V. Visualization Attributes 7
References 15
Abstract
In recent years with the rise in amount of applications deployed in many enterprises,
the interest and need of Software Visualization has only increased. Software Visualization is
a field that focuses on visualization of the structure, behavior and evolution of software. It
helps developers to understand, analyze and compare large scale software development data.
This report will give an insight to the Software Data Visualization and the analysis of some
tools used for the visualization of data and also some sample visualizations are explained.
I. Introduction
Why visualization? Because it provides insights, answers questions, supports way
finding, tells stories and communicates knowledge and awareness.
1. Definition
Author Definition
Price et "Software visualisation is the use of the crafts of typography, graphic
al.[1993] design, animation and cinematography with modern human- computer
interaction technology to facilitate both the human understanding and
effective use of computer software."
Knight and "Software visualization is a discipline that makes use of various forms
Munro[1999] of imagery to provide insight and understanding and to reduce
complexity of the existing software system under consideration."
Reiss[2005] "The development and evaluation of methods for graphically
representing different aspects of software, including its structure, its
abstract and concrete execution, and its evolution."
Diehl[2007] "The visualization of artifacts related to software and its development
process..Visualizing the structure, behavior, and evolution of software."
What to Visualize?
Software Architecture
Software metrics of runtime behavior
The major objective is to provide role and task specific views of the artifacts
related to software and its development process for stakeholders. The visualized aspects of
a software system may be structural, behavioral, and evolutionary. While source code,
data structures, or static call graphs are sources of information regarding the structure of a
software system, execution traces provide behavioral information about it. Additionally,
information regarding the evolution can be obtained from version control systems, such as
Concurrent Versions System (CVS), Git, e.t.c.
For example, a developer can use a structural view of the system to detect design
flaws during software quality assessment, a tester is provided with a behavioral view to
detect bottlenecks during execution, and a manager is supported in planning and decision
making by an aggregated evolutionary view.
In general, software
visualization tools support
stakeholders in software
comprehension, finding errors,
improving the quality of the
software, and managing
complexity.
3. Difference between
Modelling and Visualization
Some of the most important software related data required for visualization are listed
below:
\\
Fig 2.1 Tree visualization
Above image is a visualization that depicts a family tree which is also a layered
graph in a color coded formation (same color nodes represents same generation according
to the person’s birth date). Newer generation is at top and older at the bottom. This view
provides a clear visualization but it is not very compact and requires a bigger space and
also has a complex connectivity structure.
Here, the red nodes are the crucial packages which needs the most care, yellow
ones are the branch packages which are stable but still needs some care and the blue ones
are the standard release code which can actually be trusted.
2. Geometric projections
Fig 2.4 depicts the amount of disk space utilized by different group of files on
the system. There are many disk usage tools that can show a similar type of visualization
for the same purpose.
It helps to understand the gist of the source and for grouping classification. It is
also used to compare patterns in text to those in other data. Fig 2.5 is an example of
visualization based on text from Wordcloud. It depicts the set of words more widely and
commonly used in the social media. Larger the font size, more is the usage based on the
data set provided to analyze.
Fig. 2.6 Infographic Visualization Fig. 2.7 Timeline Visualization of EMC system files
V. Visualization Attributes
There are some major attributes that are considered while using any of these above
mentioned visualization techniques which are as follows:
Color
Spatial position
Size
Shape
Animation
1. CodeCity
A software project is more efficient if all members of the development team can
understand all parts of the code base which also leads to more consistency in the code
written. This leads to increase in collective code ownership.
Collective code ownership also leads to reuse of existing code because developers
are aware of how to leverage each other’s work.
This distribution map visualization helps to understand who owns the code base
which ultimately leads to collective code ownership analysis.
It also helps to determine which parts of codebase are owned by a team or by a
single committer.
This visualization helps to determine how isolated and modular the code is. Any
professional programmer will tell you that the software code you develop for a project
should have a high cohesion (methods in class similar and can stand alone) and low
coupling (inter-dependencies between software modules). If the code follows these
principles, it becomes easier to understand the code and also to extend if needed.
Dependence structure matrix visualization shows if the code is high in cohesion
and low in coupling. It also shows if there is recursion in code. The focus is more on
spotting the patterns like cohesion inside components and coupling outside.
3.3 [10] is a
< < Figure
DSM matrix with
two axes. The
columns,
components across
the x-axis represents
outgoing
dependencies, while
the rows,
components across
the y-axis shows
incoming
dependencies.
Squares in
orange depict
cohesive
components/package
and areas with high
cohesion are
highlighted in pink.
When you see a
small number of
dependencies outside of that package (i.e. outside the orange zone), it suggests a low
coupling. A row filled with dots (in blue) signifies a component that many other
components depend on. This can be acceptable but often it is a sign of a lack of cohesion.
While a column filled with dots (in green) represents a component that depends on many
other components, which is usually a sign of bad coupling.
As the systems get larger with more and more classes and modules to visualize it’s
useful to highlight such patterns, such as coupling within a component, or rows and
columns of dependencies outside a component, become easier to spot.
1. R Programming
2. Plotly
Both Tableau and Qlikview are commercial and more popular softwares for data
visualizations.
Suppose the
organization that makes the
application decides to give
quick and dirty solutions.
Fig. 5.1 Feature request during software
production
After a few months of development, the software application version will have more bugs,
more inconsistencies and more redundancies in code which will lead to slower development,
more testing and late release and deployment.
1. Code Coverage
2. Nested Code
3. Code Complexity
4. Code Duplication
5. Code Leftovers
Tools
Following are the two most widely used tooling platforms for Software quality
inspection and visualization with their features.
1. SonarQube
2. Seerene
- It is a code with people management platform that lets top management and
executives of an IT organization to see across all of their software initiatives.
- Visualizes aspects like effort, costs, and risks which makes it easy to understand.
- Does not require change in behavior and no code leaves the firewall.
- Compares software performance to industry benchmarks (i.e. data aggregated
from competitors) and predicts how it well it will perform in the future.
Interpret the various software metrics and prioritize them with respect to its impact and
influence on the project.
Few of the researched and common visualizations that helps in analysis of different
aspects of the software for various stakeholders are integrated in the table below:
restructuring
recommendations.
Code ownership Distribution Memory Map Commonalities and
Map Visualization differences in program code
ownership
Dependency Structure Matrix Visualization Isolation and modularity of
Matrix program code
Graphical View Graph visualization Project completion status,
code dependecies
Algorithm Animations Interactive visualization Easy algorithm
understanding leading to
exploratory learning
State Chart Information visualization Diagrammatic description
of requirements using
statechart notations
Post Deployment View End-user Software Finding bugs, testing,
Engineering visualization maintenance and
requirements specifications
support
Even though Visualization development has already progressed in above mentioned view
areas and also in 3D & Virtual Reality (VR) space at present, there is a very good future scope of
Software Data Visualization in Augmented Reality (AR) where the interactivity also increases
and is more user friendly.
Following image shows the step-wise execution of visualization in AR which will help in
visualization of software product evolution:
References
1. Julia Paredes, Craig Anslow, and Frank Maurer. "Information Visualization for Agile
Software Development." 2014 Second IEEE Working Conference on Software
Visualization (2014)
2. Florian Fittkau, Alexander Krause, and Wilhelm Hasselbring. "Exploring Software Cities
in Virtual Reality." 2015 IEEE 3rd Working Conference on Software Visualization
(VISSOFT) (2015)