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