In mid June 2013, the European visualization community spent a hot and, at the same time, refreshing week (both contentwise and weatherwise) in Leipzig meeting for EuroVis 2013. Since the scope of EuroVis is rather broad and covers all kinds of visualization problems, I was surprised to find a couple of works on software visualization there. A feature that connects these works (and even may be one of the current main challenges in information visualization in general) is scalability: software systems are large and complex systems that are difficult to understand. Managing size and complexity becomes a key to success for a software visualization approach.
Hierarchical Organization of Software Systems
A modularization usually structures a software system hierarchically. This hierarchy helps to abstract from the specific source code entities: it reduces the scalability requirements for a visualization technique. However, the levels of abstraction do not necessarily map to the levels of the modularization hierarchy: importance (with respect to a specific task at hand) of hierarchy elements might not be distributed uniformly within one level. Karloff and Shirley address this issue and propose an approach which partly collapses the hierarchy while trying to preserves most of the entropy within the data. Though the approach is not specifically directed at software visualization, it can be applied in this context, for example, as described in their paper, for visualizing webpage visits or directory trees. The paper of Rufiange et al., in contrast, uses the hierarchical modularization to extend NodeTrix (a salable graph visualization approach mixing node-link and matrix elements) to represent compound graphs (a graph plus a hierarchy). As demonstrated in the paper, the extended technique is applicable to show the couplings and the modularization of a software system; hierarchy elements can be collapsed to increase the level of abstraction.
- Tree Matrix: A Hybrid Visualization of Compound Graphs. Sébastien Rufiange, Michael J. McGuffin, Christopher P. Fuhrman [PDF] [video]
A second focal point was the visualization of software performance. The two visualization approaches presented at EuroVis in particular address the question how to deal with many parallel processes. In the context of high-performance computing, Sigovan et al. propose an animated visualization technique that plots the execution times of function calls on a logarithmic scale; the calls “climb” the scale until they are completed. Discerning multiple parallel processes and function types allows detecting interesting execution patterns. For CUDA programming, Rosen studies the execution of parallel processes based on memory behavior instead of function calls; he employs a family of visualization techniques varying in level of abstraction.
- Visualizing Large-scale Parallel Communication Traces Using a Particle Animation Technique. Carmen Sigovan, Chris Muelder, Kwan-Liu Ma [PDF]
- A Visual Approach to Investigating Shared and Global Memory Behavior of CUDA Kernels. Paul Rosen [PDF]