Multi-Dimensional Coupling Analysis

The Multi-Dimensional Structure of Software Systems

A software system can be regarded as a complex web of code artifacts. Couplings between the code artifacts represent the references, calls, dependencies, imports, and similarities of the system. Together, these different coupling concepts form a multi-dimensional model of the software system.

 

The goal of this research project is to analyze and exploit the multi-dimensional structure of software systems. In contrast to related research, the focus of this project is on the various concepts of code coupling rather than on investigating a single coupling concept for a particular application.

Visualizing Code Couplings in Multiple Dimensions

Software artifacts connected by code couplings form a graph where the artifacts build the set of nodes and the couplings represent the edges between the artifacts. A first step towards understanding and exploiting multi-dimensional code couplings is making them visible. The main challenges visualizing these data sets are

  • the large amount of data,
  • the multi dimensions of the couplings, and
  • different decompositions of the software systems.

Publications

  • Visually Exploring Multi-Dimensional Code Couplings
    Fabian Beck, Radoslav Petkov, and Stephan Diehl.
    In Proceedings of the 6th IEEE International Workshop on Visualizing Software for Understanding and Analysis (VISSOFT 2011), Williamsburg, Virginia, USA, September 2011
    Abstract: Dependencies and coupling relationships between code entities can be manifold. They form a graph structure with several different types of edges. Visualizing these graphs presents two challenges: the often large size of the graphs and the readable representation of the different edge types. In this paper we present a new node-link graph visualization technique addressing these challenges. Different types of edges are represented in multiple, small diagrams. These diagrams are placed side-by-side like the pictures of a comic strip. Among other things, edge bundling is applied to improve the scalability of the visualization. Elaborate interaction techniques with respect to focusing and merging data aim at providing help for comparing different edge types. A case study demonstrates how the visualization can be used to analyze a mid-size software project in practice. 
    [pdf (preprint)]

  • Visual Comparison of Software Architectures
    Fabian Beck and Stephan Diehl.
    In Proceedings of the 5th ACM Symposium on Software Visualization (SoftVis 2010), Salt Lake City, Utah, USA, October 2010.
    Abstract: Reverse engineering methods produce different descriptions of software architectures. In this work we analyze and define the task of exploring and comparing these descriptions. We present a novel visualization technique to compare architectures based on the decomposition of the software system and on the dependencies among the code entities. A case study related to software clustering shows how we can apply this technique in practice.
    © ACM, 2010. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in Proceedings SoftVis 2010 http://doi.acm.org/10.1145/1879211.1879238 {October 2010}
    [pdf]  [publisher]  [bibtex]

Analyzing and Comparing Coupling Concepts

The center of the project is the analysis of multi-dimensional code coupling concepts on real-world software projects. We want to find similarities and differences among these concepts and focus on the relationships between coupling concepts and the modularity of the system. The basic underlying question is, "which principles are used in practice to modularize software systems?" We analyze the coupling concepts based on data retrieved from software repositories supplemented by other sources, but we also plan to directly ask developers about their design decisions concerning modularity.

Publications

  • On the Congruence of Modularity and Code Coupling
    Fabian Beck and Stephan Diehl.
    In Proceedings of the 19th ACM SIGSOFT symposium and the 13th European conference on Foundations of software engineering (SIGSOFT/FSE '11), Szeged, Hungary, September 2011.
    Abstract: Software systems are modularized to make their inherent complexity manageable. While there exists a set of well-known principles that may guide software engineers to design the modules of a software system, we do not know which principles are followed in practice. In a study based on 16 open source projects, we look at different kinds of coupling concepts between source code entities, including structural dependencies, fan-out similarity, evolutionary coupling, code ownership, code clones, and semantic similarity. The congruence between these coupling concepts and the modularization of the system hints at the modularity principles used in practice. Furthermore, the results provide insights on how to support developers to modularize software systems.
    © ACM, 2010. This is the author's version of the work. It is posted here by permission of ACM for your personal use. Not for redistribution. The definitive version was published in Proceedings ESEC/FSE’11 http://doi.acm.org/10.1145/2025113.2025162 {September 2011}
    [pdf] [publisher] [bibtex]

  • Evaluating the Impact of Software Evolution on Software Clustering
    Fabian Beck and Stephan Diehl.
    In Proceedings of the 17th Working Conference on Reverse Engineering (WCRE 2010), Beverly, Massachusetts, USA, October 2010.
    Abstract: The evolution of a software project is a rich data source for analyzing and improving the software development process. Recently, several research groups have tried to cluster source code artifacts based on information about how the code of a software system evolves. The results of these evolutionary approaches seem promising, but a direct comparison to traditional software clustering approaches based on structural code dependencies is still missing. To fill this gap, we conducted several clustering experiments with an approved software clustering tool comparing and combining the evolutionary and the structural approach. These experiments show that the evolutionary approach could produce meaningful clustering results. But still the traditional approach provides better results because of a more reliable data density of the structural data. Finally, the combination of both approaches is able to improve the overall clustering quality.
    [pdf] [publisher] [bibtex]

Exploiting Multi-Dimensional Code Couplings in Applications

Code coupling concepts play a leading part in many software engineering applications, especially in reverse engineering and program comprehension. The results from visualizing and analyzing code coupling can now be exploited in those applications. One research question is how to combine the different coupling concepts most profitably. Applications related to the modularity of the systems are, for instance, architecture recovery, software remodularization, or component extraction.

Publications

  • Computer-Aided Extraction of Software Components
    Andreas Marx, Fabian Beck and Stephan Diehl. Computer-Aided Extraction of Software Components. In Proceedings of the 17th Working Conference on Reverse Engineering (WCRE 2010), Beverly, Massachusetts, USA, October 2010.
    Abstract: In a software project, outsourcing the development of a particular functionality, reusing a part in another software, or handing-over a part of the code to a new team member requires the extraction of an independent subset of the software-a component. This paper describes and analyzes the process of extracting such a component. We introduce an automated approach based on optimizing the cut between the new component and the remaining system. A visual development tool implements our approach and interactively supports the extraction. Finally, we look at the results of a thinking aloud user study and discuss the lessons learned about the extraction tool as well as the extraction process.
    ​​[pdf] [publisher] [bibtex]

 

DISCLAIMER: This directory contains postscript and PDF files of articles that may be covered by copyright. You may browse the articles at your convenience (in the same spirit as you may read a journal or a proceeding article in a public library). Retrieving, copying, distributing these files may violate the copyright protection law. This material is presented to ensure timely dissemination of scholarly and technical work. Copyright and all rights therein are retained by authors or by other copyright holders. All persons copying this information are expected to adhere to the terms and constraints invoked by each author's copyright. In most cases, these works may not be reposted without the explicit permission of the copyright holder.