Software Evolution Visualization

Software has today a large penetration in all infrastructure levels of the society. This penetration took place rapidly in the last two decades and continues to increase. In the same time, however, the software industry gets confronted with two increasingly serious challenges: complexity and evolution. The size of software applications is growing larger. This leads to a steep increase in complexity. Additionally, the change in requirements and available technologies leads to softwaremodifications. As a result, a huge amount of code needs to be maintained and updated every year (i.e. the legacy systems problem). Software visualization is a very promising solution to the abovementioned challenges of the software industry. It is a specialized branch of information visualization, which visualizes artifacts related to software and its development process. In this thesis we try to use visualization of software evolution to get insight in the development context of software and in its evolution trends. The main question we try to answer with this is: "How to enable users to get insight in the evolution of a software system?" Our final goal is to improve both software understanding and decision making during the maintenance phase of large software projects. We start by positioning the thesis in the context of related research in the field of both software evolution analysis and visualization. Then we perform an analysis of the software evolution domain to formalize the problems specific to this field. To this end, we propose a generic system evolution model and a structure based meta-model for software description. Consequently, we use these models to give a formal definition of software evolution. Next we propose a visualization model for software evolution, based on the previously introduced software evolution model. The visualization model consists of a number of steps with specific guidelines for building visual representations. Then we present three applications that make use of the proposed visualization model to support real life software evolution analysis scenarios. These applications cover the most commonly used software description models in industry: file as a set of code lines, project as a set of files, and project as a unitary entity. For each application, we formulate relevant use cases, present specific implementation aspects, and discuss results of use case evaluation experiments. We also propose in this thesis a novel visualization of data exchange processes in Peer-to-Peer networks. While this does not address software evolution, it tackles comparable issues, e.g., the dynamic evolution of a set of interrelated data artifacts. The aim of presenting this visualization is twofold. First, we illustrate how to visualize different types of software-related data than purely software source code. Secondly, we show that the visual and interaction techniques that we have developed in the context of software evolution visualization can be put to a good use for other applications as well. We conclude the thesis with an inventory of reoccurring problems and solutions we have discovered in the visualization of software evolution. Additionally, we identify generic issues that transcend the border of the software evolution domain and we present them together with a set of recommendation for their broader applicability. Finally, we outline the remaining open issues, and the possible research directions that can be followed to address them.

[1]  Chris North,et al.  Toward measuring visualization insight , 2006, IEEE Computer Graphics and Applications.

[2]  Harald C. Gall,et al.  Visualizing multiple evolution metrics , 2005, SoftVis '05.

[3]  Jarke J. van Wijk,et al.  Cluster and Calendar Based Visualization of Time Series Data , 1999, INFOVIS.

[4]  Lucy T. Nowell,et al.  ThemeRiver: visualizing theme changes over time , 2000, IEEE Symposium on Information Visualization 2000. INFOVIS 2000. Proceedings.

[5]  Hideki Koike,et al.  VRCS: integrating version control and module management using interactive three-dimensional graphics , 1997, Proceedings. 1997 IEEE Symposium on Visual Languages (Cat. No.97TB100180).

[6]  Meir M. Lehman,et al.  Laws of Software Evolution Revisited , 1996, EWSPT.

[7]  Audris Mockus,et al.  Automating the Measurement of Open Source Projects , 2003 .

[8]  James J. Thomas,et al.  Defining Insight for Visual Analytics , 2009, IEEE Computer Graphics and Applications.

[9]  Ben Shneiderman,et al.  The eyes have it: a task by data type taxonomy for information visualizations , 1996, Proceedings 1996 IEEE Symposium on Visual Languages.

[10]  Harald C. Gall,et al.  CVS release history data for detecting logical couplings , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[11]  Andreas Zeller,et al.  How history justifies system architecture (or not) , 2003, Sixth International Workshop on Principles of Software Evolution, 2003. Proceedings..

[12]  Brian Randell,et al.  Software engineering : report on a conference sponsored by the NATO Science Committee, Garmisch, Germany, 7th to 11th October 1968 , 1969 .

[13]  Thomas Zimmermann,et al.  When do changes induce fixes? On Fridays , 2005 .

[14]  J. Herbsleb,et al.  Two case studies of open source software development: Apache and Mozilla , 2002, TSEM.

[15]  Lucian Voinea,et al.  How do changes in buggy Mozilla files propagate? , 2006, SoftVis '06.

[16]  Paul W. Oman,et al.  Using metrics to evaluate software system maintainability , 1994, Computer.

[17]  Alexandru Telea,et al.  Multiscale Visualization of Dynamic Software Logs , 2007, EuroVis.

[18]  Harald C. Gall,et al.  Populating a Release History Database from version control and bug tracking systems , 2003, International Conference on Software Maintenance, 2003. ICSM 2003. Proceedings..

[19]  Stephen G. Eick,et al.  Seesoft-A Tool For Visualizing Line Oriented Software Statistics , 1992, IEEE Trans. Software Eng..

[20]  Ken-ichi Matsumoto,et al.  Accelerating cross-project knowledge collaboration using collaborative filtering and social networks , 2005, MSR.

[21]  Kent L. Beck,et al.  Extreme programming explained - embrace change, Second Edition , 2005, The XP series.

[22]  Annie T. T. Ying,et al.  Predicting source code changes by mining revision history , 2003 .

[23]  James Abello,et al.  Matrix Zoom: A Visual Interface to Semi-External Graphs , 2004, IEEE Symposium on Information Visualization.

[24]  Stephan Diehl,et al.  Software Visualization - Visualizing the Structure, Behaviour, and Evolution of Software , 2007 .

[25]  Colin Ware Designing with a 2 1/2-D Attitude , 2001 .

[26]  Stephen G. Eick,et al.  Aspects of network visualization , 1996, IEEE Computer Graphics and Applications.

[27]  Serdar Tasiran,et al.  TreeJuxtaposer: scalable tree comparison using Focus+Context with guaranteed visibility , 2003, ACM Trans. Graph..

[28]  Ted J. Biggerstaff,et al.  Program understanding and the concept assignment problem , 1994, CACM.

[29]  Janice Singer,et al.  Hipikat: a project memory for software development , 2005, IEEE Transactions on Software Engineering.

[30]  Graham J. Wills,et al.  Visualizing Network Data , 2009, Encyclopedia of Database Systems.

[31]  Richard C. Holt,et al.  Evolution Spectrographs: visualizing punctuated change in software evolution , 2004, Proceedings. 7th International Workshop on Principles of Software Evolution, 2004..

[32]  Mads Torgersen,et al.  The c# programming language, third edition , 2008 .

[33]  Paul Dourish,et al.  Unifying artifacts and activities in a visual tool for distributed software development teams , 2004, Proceedings. 26th International Conference on Software Engineering.

[34]  Thomas Zimmermann,et al.  Preprocessing CVS Data for Fine-Grained Analysis , 2004, MSR.

[35]  Thomas A. Corbi,et al.  Program Understanding: Challenge for the 1990s , 1989, IBM Syst. J..

[36]  Alexandru Telea,et al.  An Open Toolkit for Prototyping Reverse Engineering Visualizations , 2002, VisSym.

[37]  Lucian Voinea,et al.  Mining software repositories with CVSgrab , 2006, MSR '06.

[38]  James H. Cross,et al.  Reverse engineering and design recovery: a taxonomy , 1990, IEEE Software.

[39]  Jarke J. van Wijk,et al.  Cushion Treemaps: Visualization of Hierarchical Information , 1999, INFOVIS.

[40]  William G. Griswold,et al.  Exploiting the map metaphor in a tool for software evolution , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[41]  Jarke J. van Wijk,et al.  Preset based interaction with high dimensional parameter spaces , 2003, Data Visualization: The State of the Art.

[42]  Eduard Gröller,et al.  Process visualization with levels of detail , 2002, IEEE Symposium on Information Visualization, 2002. INFOVIS 2002..

[43]  Ian Pyle,et al.  Software Reuse and Reverse Engineering in Practice , 1993 .

[44]  Ivan Herman,et al.  An object‐oriented design for graph visualization , 2001, Softw. Pract. Exp..

[45]  Harlan D. Mills,et al.  Understanding and Documenting Programs , 1982, IEEE Transactions on Software Engineering.

[46]  Thomas A. Standish An Essay on Software Reuse , 1984, IEEE Transactions on Software Engineering.

[47]  Jan Tretmans,et al.  Automatic Testing with Formal Methods , 1999 .

[48]  Daniel M. Germán,et al.  Visualizing the Evolution of Software Using Softchange , 2006, Int. J. Softw. Eng. Knowl. Eng..

[49]  James M. Bieman,et al.  Understanding change-proneness in OO software through visualization , 2003, 11th IEEE International Workshop on Program Comprehension, 2003..

[50]  Alexandru Telea,et al.  Visual Exploration of Combined Architectural and Metric Information , 2005, 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[51]  Marti A. Hearst,et al.  Animated exploration of dynamic graphs with radial layout , 2001, IEEE Symposium on Information Visualization, 2001. INFOVIS 2001..

[52]  Michael Burch,et al.  Visual data mining in software archives , 2005, SoftVis '05.

[53]  John T. Stasko,et al.  The information mural: a technique for displaying and navigating large information spaces , 1995, Proceedings of Visualization 1995 Conference.

[54]  Alexandru Telea,et al.  Visualizing Dynamic Memory Allocations , 2007, 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[55]  T. Saito,et al.  Two-tone pseudo coloring: compact visualization for one-dimensional data , 2005, IEEE Symposium on Information Visualization, 2005. INFOVIS 2005..

[56]  Michele Lanza,et al.  The evolution matrix: recovering software evolution using software visualization techniques , 2001, IWPSE '01.

[57]  Bennet P. Lientz,et al.  Software Maintenance Management: A Study of the Maintenance of Computer Application Software in 487 Data Processing Organizations , 1980 .

[58]  Dorothy Graham,et al.  Software test automation: effective use of test execution tools , 1999 .

[59]  Jesús M. González-Barahona,et al.  Applying Social Network Analysis to the Information in CVS Repositories , 2004, MSR.

[60]  Christian S. Collberg,et al.  A system for graph-based visualization of the evolution of software , 2003, SoftVis '03.

[61]  Atul Prakash,et al.  Theories and techniques of program understanding , 1991, CASCON.

[62]  Walter F. Tichy,et al.  Extensible language-aware merging , 2002, International Conference on Software Maintenance, 2002. Proceedings..

[63]  Rudolf K. Keller,et al.  Software visualization tools: survey and analysis , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[64]  Harvey Siy,et al.  If your ver-sion control system could talk , 1997 .

[65]  Gregor Kiczales,et al.  Design pattern implementation in Java and aspectJ , 2002, OOPSLA '02.

[66]  Colin Ware,et al.  Information Visualization: Perception for Design , 2000 .

[67]  Lucian Voinea,et al.  Visualizing Debugging Activity in Source Code Repositories , 2007, 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[68]  Andrian Marcus,et al.  Source Viewer 3D (sv3D) - a framework for software visualization , 2003, 25th International Conference on Software Engineering, 2003. Proceedings..

[69]  Xunlei Wu Visualization of version control information , 2003 .

[70]  Ramana Rao,et al.  The table lens: merging graphical and symbolic representations in an interactive focus + context visualization for tabular information , 1994, CHI '94.

[71]  G. Lommerse,et al.  The visual code navigator: an interactive toolset for source code investigation , 2005, IEEE Symposium on Information Visualization, 2005. INFOVIS 2005..

[72]  Oscar Nierstrasz,et al.  Moose: an agile reengineering environment , 2005, ESEC/FSE-13.

[73]  Jarke J. van Wijk,et al.  Visual Realism for the Visualization of Software Metrics , 2005, 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[74]  Ben Shneiderman,et al.  Interactively Exploring Hierarchical Clustering Results , 2002, Computer.

[75]  L. Erlikh,et al.  Leveraging legacy system dollars for e-business , 2000 .

[76]  Claudio Riva Visualizing software release histories with 3DSoftVis , 2000, Proceedings of the 2000 International Conference on Software Engineering. ICSE 2000 the New Millennium.

[77]  Shari Lawrence Pfleeger,et al.  Software metrics (2nd ed.): a rigorous and practical approach , 1997 .

[78]  Rainer Koschke Software Visualization for Reverse Engineering , 2001, Software Visualization.

[79]  Ben Shneiderman,et al.  Readings in information visualization - using vision to think , 1999 .

[80]  H. Gantt Work, Wages, and Profits , 1973 .

[81]  Michael W. Godfrey,et al.  Using origin analysis to detect merging and splitting of source code entities , 2005, IEEE Transactions on Software Engineering.

[82]  Jock D. Mackinlay,et al.  Information visualization: the next frontier , 1994, SIGGRAPH.

[83]  Stephen H. Kan,et al.  Metrics and Models in Software Quality Engineering , 1994, SOEN.