Visualizing Code Couplings: Node-Link Diagrams

From an abstract point of view, software systems can be considered as a set of entities connected by dependencies or code couplings such as method calls. We might also consider that entities inherit or aggregate, that they are changed together, that they are covered by the same code clone, etc. Since code couplings can be modeled as a graph consisting of vertices and edges, graph visualization provides the right tools for depicting this kind of information. The visualization of graphs is a very active discipline and provides a broad spectrum of visualization approaches. Usually, graphs of code couplings consist of a large set of vertices. This premise somewhat limits the number of appropriate graph visualization approaches because many approaches run into scalability problems for an increasing number of vertices.

Von Landesberger et al. survey graph visualizations that are particularly applicable to large graphs:

Von Landesberger, Tatiana, et al. “Visual Analysis of Large Graphs: State‐of‐the‐Art and Future Research Challenges.Computer graphics forum. Vol. 30. No. 6. Blackwell Publishing Ltd, 2011.

Simple Node-Link Diagrams

nl

Most of the approaches that visualize code couplings are based on node-link diagrams where the code entities are represented by node connected through lines (i.e., links). The central design decision in such diagrams is the layout of the nodes and links because overlapping visual elements could significantly decrease their readability. The question of laying out a graph based on node-link diagrams has been studied in detail by the graph drawing community and a set of aesthetic criteria conceptualize the readability of node-link layouts: for example, the number of edge crossings should be minimized. Moreover, maximizing symmetries and reducing the number of edge bends are said to support the readability of node-link diagrams. Graph layout algorithms usually try to optimize one or a set of these criteria.

Besides aesthetic criteria, a hierarchical organization of the nodes may also help to create readable graph visualizations. In software systems, a hierarchy is usually provided by the modularization such as a package or directory structure; in other scenarios or if required, a hierarchy can be created by applying hierarchical graph clustering. When visualizing large graphs, the hierarchy can be used for structuring the nodes or for increasing the level of abstraction: hierarchy nodes aggregate sets of graph nodes and thereby reduce complexity.

Software Tools:

The following tools have integrated a simple node-link visualization of code couplings, among many other features.

UML Diagrams

uml

A quite established standard for modeling and depicting object-oriented systems is the Unified Modeling Language (UML). This visual language defines a set of diagrams modeling the structure and behavior of software systems. Relational information is a central part of most of these diagrams and usually represents a sort of code coupling. Although the different types of UML diagrams may look quite different, all diagrams are based on the node-link metaphor. For instance, a UML class diagram as sketched above describes the classes and interfaces of a software system as rectangular boxes connected by a set of possible couplings like inheritance, composition, aggregation, or association. These couplings are distinguished by using different stroke styles and different types of arrow heads for drawing the links.

Software Tools:

Wikipedia maintains an extensive list of UML tools.

Enriched Node-Link Diagrams

UML class diagrams depict the design of a system at class level focusing more on the classes than on the couplings between them. Other approaches exist that apply the node-link approach to software visualization and add further information to the diagram. Many of these approaches target a high level of abstraction or larger excerpts of the system than class diagrams. For instance, SHriMP/Creole are visualization tools that integrate several views on a software system, among them node-link-based visualizations on package level. To reduce the complexity of such diagrams, DA4Java first hides the coupling information, but allows adding relevant couplings interactively. Without hiding any of the information, couplings can be visualized in a radial layout applying edge bundling as used in SolidSX.

enriched_nl

It is further possible to visualize software metrics along with the graph structure. E-Quality combines the visualization of different software metrics by shape and color and other attributes with the visualization of different concepts of coupling: it discerns seven concepts of static structural coupling by color, indicates direction with arrow heads, uses thickness as an indicator of frequency, and discerns inter-package edges from intra-package edges by stroke style. Other visualization techniques show more details including fine-grained coupling information below class level. For instance, Class Blueprints divide the fields and methods of each class into five categories, visualized in columns as parts of rectangular class representations. Links connect related fields and methods, within classes as well as between classes.

Software Tools:

  • SHriMP/Creole—Eclipse plugin for Java (free)
  • DA4Java—Eclipse plugin for Java (non-commercial use)
  • SolidSX—standalone tool for multiple environments (commercial)
  • Structure 101—standalone tool for multiple environments (commercial)

Map-Based Approaches

The layout of node-link diagrams is essential for creating a readable visualization. At higher level of abstraction, the hierarchical modularization of a system may help to come up with an appropriate layout. It can be used for subdividing the drawing area and for creating an underlying map for the system. The original graph can be drawn on that map, like sketched below, either in 2D or 3D. Developers might adapt much faster to a map-based layout because they are already familiar with the hierarchical structure of the system.

map

Some approaches exploit the map metaphor further and describe the software system as a city. Applying this metaphor, following more or less a real-world model, promises a more efficient code exploration. The map itself, however, just visualizes the structure of the system, for instance, the package structure.  Software cities are often used for visualizing (non-relational) software metrics and their evolution such as in Software Cities and Landscapes or CodeCity. Drawing links onto a map, in 2D as well as in 3D, leads to occlusion. If the coupling information is only sparse, this problem is not severe. Hence, showing a small selection of links in the visualizations does not significantly decrease their readability. Typically, those links are only shown for a particular entity on demand when interactively selecting the entity. When considering a non-filtered coupling graph, the coupling information often is not sparse anymore. Again, edge bundling can be applied in 3D on top of a map-based code visualization in this scenario. This approach still provides readable images when visualizing all couplings at once, not only a selection of couplings.

Related to drawing links on top of a map-based representation of the software system is the idea of drawing links on top of a source code editor—the code representation in multiple editor views can be considered as a partial map of the system. In the IDE prototype Code Bubbles and the visual debugging tool Debugger Canvas, the editor views are connected themselves by links indicating method calls. Code Canvas uses the idea of a code map as the basic layout of an IDE; similar to software cities, excerpts of coupling information such as stack traces are laid over on demand.

Software Tools:

Posted in Research, Summary, Tools | Tagged , , , , , , , | Leave a comment

VISSOFT 2013 Call For Papers

Call for Papers

http://icsm2013.tue.nl/VISSOFT/

Research paper submission deadline: May 6, 2013

The first IEEE Working Conference on Software Visualization (VISSOFT 2013) follows six editions of the IEEE International Workshop on Visualizing Software for Understanding and Analysis (VISSOFT) and five editions of the ACM Symposium on Software Visualization (SOFTVIS). In 2013, these two events will be united in a single top-tier conference on software visualization which is co-located with ICSM 2013.

Software Visualization is a broad research area encompassing techniques that assist in a range of software engineering activities, such as, specification, design, programming, testing, maintenance, reverse engineering and reengineering. Covered methods contain the development and evaluation of approaches for visually analyzing software and software systems, including their structure, execution behavior, and evolution.

In this conference, we focus on visualization techniques that target aspects of software maintenance and evolution, program comprehension, reverse engineering, and reengineering, i.e., how visualization helps programmers to understand, analyze, and evolve software. We aim to gather tool developers, users and researchers from software engineering, information visualization, and human-computer interaction to discuss theoretical foundations, algorithms, techniques, tools, and applications related to software visualization. We seek theoretical, as well as practical papers on applications, techniques, tools, case studies, and empirical studies. Topics of interest include, but are not limited to:

  • Program visualization
  • Visual software analytics
  • Network visualizations in software engineering
  • Visualization of software documentations
  • Visualization of parallel programs
  • Visualization-based software in computer science and software engineering education
  • Visualization of workflow and business processes
  • Integration of software visualization tools and development environments
  • Visualization of web services
  • Visualization of software evolution
  • Visualization of database schemes
  • Protocol and log visualization (security, trust)
  • Graph algorithms for software visualization
  • Visual debugging
  • Software visualization on the Internet
  • Empirical evaluation of software visualization
  • Visualization to support program comprehension

Papers are solicited that present original, unpublished research results and will be rigorously reviewed by an international program committee. In addition to full papers, VISSOFT features a New Ideas or Emerging Results (NIER) track and a tool demo track related to the same list of topics suggested above. All accepted submissions will appear in the conference proceedings and the IEEE Digital Library. More information on how to submit a paper including paper formatting as well as more information on the NIER and tool demo tracks can be found here:

http://icsm2013.tue.nl/VISSOFT/

Important Dates

  • Full Paper submission deadline: May 6, 2013
  • Author notification: June 17, 2013
  • Camera ready paper deadline: July 12, 2013
  • Deadline for submissions to NIER and tool demo tracks: June 28, 2013
  • Notification for NIER and tool demo tracks: July 18, 2013
Posted in Announcements | Tagged , , | Leave a comment

Software Problems in the News

Andy Ko from the University of Washington and one of his undergraduate RAs has created a neat little visualization highlighting software problems in the news. The data from the visualization is based on over 300,000 news articles over 33 years. Click the link below for the visualization.

Software Problems in the News, 1980-2012

Posted in Research | Tagged , | Leave a comment

Bug Maps: A Tool for the Visual Exploration and Analysis of Bugs

Andre Hora, Nicolas Anquetil, Stephane Ducasse, Muhammad Bhatti, Cesar Couto, Marco Tulio Valente, and Julio Martins. Bug Maps: A Tool for the Visual Exploration and Analysis of Bugs. Demonstration at CSMR 2012.

Abstract:
To harness the complexity of big legacy software, software engineering tools need more and more information on these systems. This information may come from analysis of the source code, study of execution traces, computing of metrics, etc. One source of information received less attention than source code: the bugs on the system. Little is known about the evolutionary behavior, lifetime, distribution, and stability of bugs. In this paper, we propose to consider bugs as first class entities and a useful source of information that can answer such topics. Such analysis is inherently complex, because bugs are intangible, invisible, and difficult to be traced. Therefore, our tool extracts information about bugs from bug tracking systems, link this information to other software artifacts, and explore interactive visualizations of bugs that we call bug maps.

Video
http://dl.dropbox.com/u/2240781/BugMaps.mov

Posted in Papers, Research | Tagged , , , , | Leave a comment

PhD Position – Vienna University of Technology

Open Position: PhD candidate at the Information Engineering Group,
Vienna University of Technology, Austria
**********************************************************************************************

The Information Engineering Group, at the Institute of Software
Technology and Interactive Systems of the Vienna University of
Technology, is seeking a highly motivated PhD candidate in the field of
Information Visualization and Visual Analytics.

RESPONSIBILITIES
The successful applicant will
* perform research in the field of Information Visualization and Visual Analytics
* design new techniques and implement interactive prototypes
* write and review scientific publications
* participate in scientific and consulting projects
* work within a creative, highly motivated, and international team

REQUIRED QUALIFICATIONS/SKILLS
* university degree (bachelor or master) in Computer Science,
Information Systems, or an equivalent university study
* experience in programming (preferably Java, Javascript, C++, or similar)
* knowledge or interest in one or more of the following: Visual
Analytics, Information Visualization, Computer Graphics, Human-Computer
Interaction, Data Mining
* abilities to work as an independent and flexible researcher in
interdisciplinary teams
* fluency in the English language both orally and in written form

DESIRED QUALIFICATIONS/SKILLS
* knowledge or interest in one or more of the following: Graph Theory,
Social Network Analysis, Business Process Management, Medical Informatics
* (for international applicants) basic proficiency in German or
willingness to learn

DATES
* Application deadline: August 15, 2012
* Start date: October 1, 2012 (negotiable)
* Duration: 3 years

APPLICATION AND CONTACT
Please send your application (with the usual documents including a
statement of interest, full CV, list of subjects taken at university
plus grades, publications, etc.) by email with the subject “iegJob1201″
to Mr. Paolo Federico:federico@cvast.tuwien.ac.at
The Vienna University of Technology aims for enhancing the number of
women in scientific positions and therefore particularly invites women
to apply. We encourage sending your application in electronic form.
Applicants are not entitled to claim reimbursement of traveling expenses
and/or other costs caused by the application procedures.

If you have any questions, please contact Prof. Silvia Miksch:
miksch@ifs.tuwien.ac.at

MORE INFO
Vienna University of Technology: http://www.tuwien.ac.at
Institute for Software Technology and Interactive Systems: http://www.isis.tuwien.ac.at
Information Engineering Group: http://ieg.ifs.tuwien.ac.at

Posted in Positions | Tagged , , , | Leave a comment

Visual Tracing for the Eclipse Java Debugger

Bilal Alsallakh, Peter Bodesinsky, Alexander Gruber, and Silvia Miksch. Visual Tracing for the Eclipse Java Debugger. Demonstration at CSMR 2012.

Abstract:
In contrast to stepping, tracing is a debugging technique that does not suspend the execution. This technique is more suitable for debugging programs whose correctness is compromised by the suspension of execution. In this work we present a tool for visually tracing Java programs in Eclipse. Tracepoint hits are collected on a per-instance basis. This enables finding out which tracepoints were hit for which objects at which time. The interactive visualization provides detailed information about the hits such as thread, stack trace, and assigned values. We implemented the tool as an Eclipse plugin that integrates with other features of Eclipse Java debugger. In an informal evaluation, developers appreciated the utility of our method as a solution in the middle between full tracing and stop-and-go debugging. They suggested scenarios in which our tool can help them in debugging and understanding their programs.

Project Page: http://www.cvast.tuwien.ac.at/projects/visualdebugging/EclipseTracer

Posted in Eclipse, Java, plugin | Tagged , , , , , , | Leave a comment

Array Explorer: Visualizing Arrays in the Eclipse Java IDE

Bilal Alsallakh, Peter Bodesinsky, Silvia Miksch, and Dorna Nasseri. Visualizing Arrays in the Eclipse Java IDE. Demonstration at CSMR 2012.

Abstract:
The Eclipse Java debugger uses an indented list to view arrays at runtime. This visualization provides limited insight into the array. Also, it is cumbersome and time-consuming to search for certain values at an unknown index. We present a new Eclipse plugin for visualizing large arrays and collections while debugging Java programs. The plugin provides three views to visualize the data. These views are designed to support different tasks more efficiently. A tabular view gives detailed information about the elements in the array, such as the value of their field variables. A line chart aims to depict the values of a numerical field over the array. Lastly, bar charts and histograms show how the values of a field are distributed. We show how these views can be used to explore linear data structures and hashes from the Collections Framework. The plugin features tight integration with the Eclipse IDE, and is freely available as an open-source project. Developers’ feedback confirmed the utility of the plugin
to explore large arrays in real-world scenarios.

Project page: http://www.cvast.tuwien.ac.at/projects/visualdebugging/ArrayExplorer

Video | Posted on by | Tagged , , , , | Leave a comment