Software Evolution Visualization Lucian Voinea
Why Software Evolution Visualization ? Software understanding - what is the structure of the project ? - what is important ? - what is difficult ? - who work on it ? - what parts are connected to a given part ? - what parts refer to a given aspect ? Product and process assessment - what is the process ? - what is the core team ? - where is the activity concentrated ? - what is stable ?
Challenges Data acquisition - data source SW Configuration Management - long acquisition times - large storage space, large bandwidth - data parsing & maintenance Data analysis - Enrich recorded evolution data E.g. evolution similarity metrics Data visualization - multivariate : 10s attributes (Demo 6 attributes) - large data amount : 100s files,10s versions, 1000s lines VTK – 2700 files x 100 versions ArgoUML – 4452 files x 80 versions SW Configuration Management ≠ SW evolution mining
version control management system data extraction CVS Project evolution visualization File evolution visualization CVSscan CVSgrab SW Evolution Visualization Toolset
CVSgrab V1V1 V2V2 V3V3 F2F2 F3F3 F4F4 Time F1F1 Files Color - encodes a file metric computed on a given version E.g. File type, Version author, Size increase, Release ID, Specific text, Activity Vertical layout – given by a sort criteria E.g. Creation time, Folder, Activity, Similarity Metric views System evolution at time t i Evolution of file F i
Time Files CVSgrab Example Color encodes version author Horizontal metric : Release ID Vertical metric : similarity Different Similar
CVSscan 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 Time v1v1 v2v2 v3v3 v4v4 v5v5 Color - encodes a line metric
Line layout CVSscan
CVSscan Example Color encodes content Color encodes authors
Conclusions Toolset for visualization of software evolution : CVSgrab & CVSscan Exploit source code history from CVS as main source for getting insight in the structure and development process Complements existing reverse engineering and code navigation tools Outlook: Improve the data analysis step, find mechanisms for annotation management, improve selection mechanisms, enhance the visualization with new features, extend the data acquisition sources and types…