Visualizing the Evolution of Code The Visual Code Navigator (VCN)
Lucian Voinea Nunspeet, 24.11.2008
The software maintenance challenge
Often caused by uninformed decisions
Software maintenance costs
Mostly spent on understanding software
=
80% of TCO ( total cost of ownership)
Outline
• What is software visualization? • Code Evolution Visualization in VCN o Line of code level o File level
• Conclusions
What is software visualization? Scientific Visualization: “The use of computers or techniques for comprehending data or to extract knowledge from the results of simulations, computations, or measurements” [McCormick et al, 1987]
Information Visualization: “Visualization applied to abstract quantities and relations in order to get insight in the data” [Chi, 2000][Diehl, 2006][…]
Software Visualization: “Information visualization applied to software artefacts e.g. source code, design documents, profiling logs, and dynamic data structures in order to better write, understand and maintain, software”
Software visualization vs visual programming the visual artifact space is examined by creates
software visualization tool is analyzed by
program visualization
SW engineer
creates
the software
visual programming
generates is read by
visual programming tool
Software visualization pipeline
software analysis software data
data acquisition
internal data
data processing
enriched data
data mapping human interpretation data visualization
image
graphics rendering
visual representations
Software visualization classifications Matrix of techniques [Myers, 1990] few
many
time aspect
evolution Dynamic (behavior) Static (structure)
VCN Code
Data
Algorithm
type of data
Visual Code Navigator (VCN) a toolset that provides different, but strongly interconnected views on software source code
VCN
VCN database
CVS SVN SCM
Data processing engines
Code evolution visualization
Developers
Management
Goal: Understand when, why, and how software changed to cope with future activities (e.g. refactoring, release scheduling, test planning etc.)
Use cases: - identify the system parts that could be affected by a change or migration - identify the system areas that are subject to debugging in the near future - get context dependent code editing suggestions - discover the developer network Benefits: - assess impact more accurately - better plan maintenance activities - reduce software understanding time - minimize error injection probability
Code evolution visualization in VCN Line of code level
File level
CVSscan
CVSgrab
Evolution visualization at line level CVSscan Goal: Understand how did a file evolve. - What were the major refactorings, contributions - Who is in charge of a given piece of code v1 v2 v3 v4 v5
Time
if self.bShowClusterColor: glBlendFunc(GL_ONE_MINUS_... glEnable(GL_BLEND) yPos = 0 bSwitch = True for i in lCushionMap: if bSwitch: cushions.drawColorCl.. else: cushions.drawColorClus… bSwitch = not bSwitch yPos = yPos + i glDisable(GL_BLEND) #cushion clusters glBlendFunc(GL_ZERO,GL_... glEnable(GL_BLEND) yPos = 0 bSwitch = True
Color - encodes a line metric
Normal Layout
Horizontal Layout Discrete time (versions)
Discrete time (versions)
Deleted lines
Lines to be inserted
Legend
Constant line
New lines
Evolution visualization at line level CVSscan Time (version)
File line
Color encodes authors
File line
Time (version)
Color encodes line contents
Evolution visualization at file level CVSgrab Goal: Understand how did a project evolve.
Project
File 3
Version 1
File 2 File 1
Version 1
Version 1
Version 2
Version 2
Version 2
Version 3
Time
Evolution visualization at file level CVSgrab Goal: Understand how did a project evolve.
Project
File 3
Version 1
File 2 File 1
Version 1
Version 1
Version 2
Version 2
Version 2
Version 3
Time
Sorting and clustering operations
Release ID Size Complexity Searched word …
Evolution visualization at file level CVSgrab Case:
Shall we buy this software stack ?
Conclusion: 1. Software is not in a mature state (development is not stabilized). 2. It is difficult to maintain (high activity in large files). 3. Highly complex (≈ 30% have McCabe’s metric ≥ 7 per 30 lines of code)
Evolution visualization at file level CVSgrab Case:
What is the risk of releasing the software now?
Conclusion: 1. There are currently no large scale debugging activities performed 2. The largest recent debugging activity was localized to one folder 3. Changes in the identified folder do not propagate outside
Evolution visualization at file level CVSgrab Case:
What is the risk of one person leaving the team ?
Conclusion: Well distributed knowledge
Risky distribution of knowledge
Conclusions Software Visualization • is a new but quickly growing field; many tools are emerging at a high pace • promising but validation is still a problem; integration is a must!
Visual Code Navigator • contains two tools for analyzing source code evolution (CVSscan, CVSgrab) • offers a set of visual techniques that can supports a large variety of analysis scenarios • tries to bridge the gap between research and industry by tight integration with common software configuration management (SCM) systems (e.g., CVS, Subversion)
http://www.win.tue.nl/~lvoinea/VCN.html http://www.win.tue.nl/vis/
Thank you for your attention !
[email protected]