Software Visualization and Data Mining
Modern software systems have an increasing size and structural complexity; also, they evolve in time. Software data mining methods analyze all artifacts of the software lifecycle (code, test results, documentation, architecture, repository commits) to collect metrics that help assessing this lifecycle. Software visualization methods support the understanding and maintaining large code bases by presenting the structure, attributes, quality metrics, and evolution of source code in scalable and intuitive ways. We develop methods that extract and show the structural evolution of code at class, function, or statement level. We implement our methods in tools that can be tested on real-world software systems.
Software engineering is a complex field which encompasses many activities. Software visualization can help support all these activities. It is hard to provide an exhaustive list of the potential applications. A set of sample applications include:
- visualization of software design (UML diagrams, software architectures)
- visualization in reverse engineering
- visualization of software repositories
- visualization of systems structure (call and dependency graphs)
- visualization of software behavior (system dynamics at runtime)
- visualization of the software build process (makefiles, compiler artifacts)
- visualization of source code (text, relations, transformations, and metrics)
Software Visual Analytics
Our general approach is to tightly combine software data-mining, data analysis, and software visualization techniques in integrated tools that favor interactive what-if exploration and hypothesis refinement. We call this approach software visual analytics.
Several overview presentations of our work on Software Visual Analytics are available below:
- Software Visual Analytics - an extended overview
- Software Visual Analytics for Testing (Dutch Testdag'13)
More about visual analytics here.
To learn more
Follow the links on the left side bar to specific sub-themes.