Software visualization is an active field of research positioned between software engineering and information visualization. Although there exist events like SoftVis and VISSOFT, papers on software visualization are scattered across many conferences and journals—survey articles that summarize and structure recent developments in the field are thus very important. Caserta and Zendra lately published such a survey focusing on visualizing the static structure and evolution of software.
The authors divide the article into four main sections: code-line-centered visualization, class-centered visualization, architecture visualization, and visualizing software evolution. These sections are themselves subdivided by the specific data represented in the visualization, such as code relationships or software metrics. In total, nearly 200 publications on software visualization and related fields are referenced, the latest being published in 2009 (when also the article was submitted).
In the Introduction, the authors motivate why we need software visualization and provide evidence from the area of software engineering as well as perception and cognition. Related surveys and taxonomy articles are listed. The authors furthermore outline the paper and define its scope, which is illustrated by a table. Besides structuring the content, the table provides a quick overview of important representatives of software visualization techniques and their history. Here, a simplified version of the table:
|archit.||orga.||treemap, circular treemap, software cities, Sunburst, Solar System, Voronoi Treemap|
|relat.||Dependency Structure Matrix, UML, Geon, Solar System, landscape, Hierarchical Edge Bundling, software cities, 3D clustered graphs|
|metric||Dependency Structure Matrix, UML, Geon, Solar System, landscape, Hierarchical Edge Bundling, software cities, 3D clustered graphs|
|archit.||Hierarchical Edge Bundling, Evolution Matrix, RelVis, software cities|
The section presenting approaches for visualizing code lines and classes focuses on SeeSoft and Class Blueprints. They are introduced in detail illustrated by figures. In case of SeeSoft, not only the original approach is discussed, but also more recent, enhanced versions of the technique.
By far the longest section is the one on architecture visualization. Different ways to visualize a hierarchy are introduced and examples in software visualization are provided; metaphor-based representations such as software cities are introduced. Relationships in software systems are represented as a graph, which is briefly discussed by the authors. A particular focus are UML class diagrams and 3D representations visualizing relationships in software cities or visually clustering the graph. Considering metric-based approaches, the authors discuss how software metrics can be embedded into UML diagrams and other graph representations as well as in hierarchy representations and software cities.
Finally, the authors present approaches visualizing the evolution of software systems, such as techniques showing changes in single source code documents as well as techniques visualizing the evolution of software architectures. The main subject of this section, however, is the evolution of software metrics.
Review: In my opinion the article presents a good-quality, comprehensive overview of major parts of software visualization. The authors chose a well-fitting structure, which they clearly outline in a table enriched with interesting meta data. While presenting a rich variety of visualization approaches briefly, the text focuses on introducing a mostly well-selected set of techniques in detail. Some more subheadings, however, may have helped to separate these techniques more clearly. What I was expecting, but what is missing in the article is a deep discussion, a form of meta analysis, or a detailed comparison of the introduced approaches. My conclusion is that the main contribution of the article is the well-structured and comprehensive overview on the selected field. I recommend reading it particularly for people who are interested in software visualization, but are new to the field or know the field only partly.