Software maintenance covers 80% of the cost of modern software systems, of which over 40% represent software understanding. Although many visual tools for software understanding exist, most know very limited acceptance in the IT industry. Key reasons for this are limited scalability of visualizations and/or dataset sizes, long learning curves, and poor integration with software analysis or development toolchains.
Visual analytics (VA) integrates graphics, visualization, interaction, and data collection and analysis to support reasoning and sense making for complex problem solving in engineering, finances, security, and geosciences.These fields share many similarities with software maintenance in terms of data (large databases, structured text, and graphs ), tasks (sensemaking by hypothesis creation, refinement, and validation ), and tools (combined analysis and visualization ).
VA stresses tool integration, as opposed to pure data mining or fact extraction (whose main focus is scalability) or information visualization (Infovis, mainly focused on presentation). As such, VA is a promising model for building effective and efficient software visual analysis (SVA) tools.
However, building SVA tools for software comprehension is particularly challenging, as developers have to master static analysis, fact extraction, graphics, information visualization, and user interaction design technologies.
In this paper, we present our experience in building SVA tools for software maintenance. We outline the evolution path from a set of research prototypes to a commercial toolset used by many end-users in the IT industry.
Our toolset supports static analysis, quality metrics computation, clone detection, and state-of-the-art Infovis techniques such as table lenses, bundled graph layouts, cushion treemaps, and dense pixel charts. The toolset addresses several use-cases, of which we focus here on two: visual analysis of program structure and code duplication. These use-cases can be combined to support tasks such as assessing system quality and planning refactoring.
We illustrate the toolset’s usage for constructing software visualizations with examples in education, research, and industrial contexts. We discuss the design evolution from research prototypes to integrated, scalable, and easy-to-use products, and present several guidelines for the development of efficient and effective SVA solutions.
To read this external content in full, download the complete paper from the author online archives at the University of Groningen.