SEANets: Software Evolution Analysis with Networks
Theodore Chaikalis, George Melas and Alexander Chatzigeorgiou
Department of Applied Informatics
University of Macedonia
Thessaloniki, Greece
Email: {chaikalis, melas, achat}@uom.gr
Abstract—Evolving software systems can be systematically
studied by treating them as networks and employing ideas and
techniques from the field of Social Network Analysis. SEANets
is an Eclipse plugin that allows the analysis of multiple
software versions and the extraction and visualization of
network properties required to investigate evolutionary trends
of the underlying system.
Keywords-Software evolution; network analysis; object-
oriented design;
I. INTRODUCTION
Social networks have experienced a phenomenal growth
in an extremely short period of time [1] and their expansion
has been followed by countless studies on their structural
properties. However, as it has been recently acknowledged,
social networks are not static and therefore their evolution
has attracted the interest of the relevant community. These
efforts have resulted in elegant models of network growth
shedding light into the mechanisms that underlie network
evolution.
Object-oriented software systems can be effectively
represented as graphs where nodes correspond to elements of
the design (such as classes or methods) and edges to any
kind of relation among them [2]. Given that most software
systems are multi-version projects, their evolution is worth
investigating by observing how fundamental network
properties vary with time.
In this paper we present SEANets, which is an easy-to-
use Eclipse plug-in associated with a public repository, for
the automated analysis of multiple versions of any object-
oriented software written in Java. SEANets allows the
extraction and storage of network properties for all examined
versions as well as the generation of various reports and
charts focusing on the evolution of these properties. The
tool's output is available through a Web page. The use of a
public repository encourages the collection of data for
several software systems which will be available to the
relevant community for further analysis.
The study of network evolution in a social setting might
be useful to understand the nature of the interactions among
people. Software evolution analysis on the other hand, aims
at interpreting macroscopic network phenomena and trends
by analyzing graph properties at the node level [3], [4]. The
ultimate goal is to relate evolutionary trends with qualitative
properties of the examined software.
While both the terms network and graph refer to a
collection of objects in which some pairs are connected by
links [5], we employ the term network to emphasize the fact
that techniques are borrowed from the field of Social
Network Analysis.
II. EXISTING TOOLS
Various noteworthy tools have been developed by
research teams for large (social or other) network analysis,
featuring numerical calculations and visual representation of
the corresponding data. Wikipedia lists over 70 products
under the term social network analysis tools and libraries. A
number of them like UCINet [6], Gephi [7], Pajek [8] and
GUESS [9] are standalone programs for network
visualization and metrics computation while others are
software libraries offering customizable capabilities like
SNAP [10] for C++ and NetworkX [11] for Python. Notable
systems like NetMiner [12], igraph [13] and Cytoscape [14]
have focused in the efficient graphical representation of the
underlying networks while others like SNAP focus in the
analysis of ultra large-scale connected components
employing techniques based on sampling.
However, all of these tools do not focus on software and
they assume that a dataset containing an edge list, a node list
or a full matrix representation is already available.
Consequently, in order to analyze software one has to build
his own parser to extract the software representation and port
the results to the corresponding tool.
On the other hand several tools have been developed to
assist software maintenance by visualizing various aspects of
software evolution; however, to the best of our knowledge
these tools do not treat the software system as a network.
These tools essentially offer a timeline for the visualization
of software artifacts, such as project hierarchies [15] or
metric values [16].
The proposed tool focuses in software evolution analysis
allowing the user to map multiple versions of a Java based
object-oriented system to a set of directed graphs. Several
interesting properties can be calculated and represented
visually following a one-click approach manipulating an
easy to use web interface.
III. AVAILABLE ANALYSES AND REPORTS
In the context of SEANets, object-oriented software
projects are regarded as directed graphs where nodes
correspond to classes and an edge from a class A to a class B
indicates the presence of a method call following the Law of
Demeter [17]. Such a "friendship" between a source and a
target class can be formed by references to the target class
which are either attributes, local variables to which instances
of the target class are assigned, method parameters and
return types of the target class type.
This work has been partially funded by the Research Committee of the
University of Macedonia, Greece
978-1-4673-2312-3/12/$31.00 ©2012 IEEE