Software Systems as Cities

Software understanding takes up a large share of the total cost of a software system. The high costs attributed to software understanding activities are caused by the size and complexity of software systems, by the continuous evolution that these systems are subject to, and by the lack of physical presence which makes software intangible. Reverse engineering helps practitioners deal with the intrinsic complexity of software, by providing a broad range of patterns and techniques. One of these techniques is software visualization, which makes software more tangible, by providing visible representations of software systems. Interpreting a visualization is by no means trivial and requires knowledge about the visual language of the visualization. One means to ease the learning of a new visualization’s language are metaphors, which allow the interpretation of new data representations by analogy. Possibly one of the most popular metaphors for software visualization is the city metaphor, which has been explored in the past by a number of researchers. However, in spite of the efforts, the value of this metaphor for reverse engineering has never been taken beyond anecdotical evidence. In this dissertation, we demonstrate the value of the city metaphor for reverse engineering along two directions. On the one hand, we show that the metaphor is versatile enough to allow the representation of different facets of software. On the other hand, we show that the city metaphor enables the creation of software visualizations which efficiently and effectively support reverse engineering activities. Our interpretation of the city metaphor at its core depicts the system as a city, the packages as districts, and the classes as buildings. The resulting “code city” visualization provides a structural overview of the software system, enriched with contextual data. To be able to perform analyses of real systems using our approach, we implemented a tool called CodeCity. We demonstrate the versatility of the metaphor, by using it in three different analysis contexts, i.e., program comprehension, software evolution analysis, and software design quality assessment. For each of the contexts, we describe the visualization techniques we employ to encode the contextual data in the visualization and we illustrate the application by means of case studies. The insights gained in the three analysis contexts are complementary to each other, leading to an increasingly more complete “big picture” of the systems. We then demonstrate how the visualizations built on top of our city metaphor effectively and efficiently support reverse engineering activities, by means of an extensive controlled experiment. The design of our experiment is based on a list of desiderata that we extracted from our survey of the current body of research. We conducted the experiment over a period of six months, in four sites located in three countries, with a heterogeneous sample of subjects composed of fair shares of both academics and industry practitioners. The main result of our experiment was that, overall, our approach outperforms the state-of-practice in supporting users solve reverse engineering tasks, in terms of both correctness and completion time.

[1]  Ralph Johnson,et al.  design patterns elements of reusable object oriented software , 2019 .

[2]  Xiaomin Wu,et al.  Plugging-in visualization: experiences integrating a visualization tool with Eclipse , 2003, SoftVis '03.

[3]  Malcolm Munro,et al.  Virtual but visible software , 2000, 2000 IEEE Conference on Information Visualization. An International Conference on Computer Visualization and Graphics.

[4]  Tore Dybå,et al.  Evidence-based software engineering , 2004, Proceedings. 26th International Conference on Software Engineering.

[5]  Hans Albert Muller,et al.  Rigi: a model for software system construction, integration, and evolution based on module interface specifications , 1986 .

[6]  Michele Lanza,et al.  White Coats: Web-Visualization of Evolving Software in 3D , 2005, 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[7]  G. Lakoff,et al.  Metaphors We Live by , 1981 .

[8]  Catherine Plaisant,et al.  The challenge of information visualization evaluation , 2004, AVI.

[9]  Alan J. Dix,et al.  An explorative analysis of user evaluation studies in information visualisation , 2006, BELIV '06.

[10]  Peter Young,et al.  Visualising software in virtual reality , 1998, Proceedings. 6th International Workshop on Program Comprehension. IWPC'98 (Cat. No.98TB100242).

[11]  Audris Mockus,et al.  Does Code Decay? Assessing the Evidence from Change Management Data , 2001, IEEE Trans. Software Eng..

[12]  E. Burton Swanson,et al.  Problems in application software maintenance , 1981, CACM.

[13]  H. Levene Robust tests for equality of variances , 1961 .

[14]  Aaron Marcus,et al.  Human factors and typography for more readable programs , 1990 .

[15]  Harald C. Gall,et al.  Journal of Software Maintenance and Evolution: Research and Practice Visualizing Feature Evolution of Large-scale Software Based on Problem and Modification Report Data , 2022 .

[16]  Christoph Wysseier,et al.  Visualizing live software systems in 3D , 2006, SoftVis '06.

[17]  Jens Knodel,et al.  An experiment on the role of graphical elements in architecture visualization , 2008, Empirical Software Engineering.

[18]  Chris F. Kemerer,et al.  A Metrics Suite for Object Oriented Design , 2015, IEEE Trans. Software Eng..

[19]  S. Shapiro,et al.  An Analysis of Variance Test for Normality (Complete Samples) , 1965 .

[20]  Gail C. Murphy,et al.  Questions programmers ask during software evolution tasks , 2006, SIGSOFT '06/FSE-14.

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

[22]  Thomas Ball,et al.  Software Visualization in the Large , 1996, Computer.

[23]  Ralph Johnson Documenting frameworks using patterns , 1992, OOPSLA 1992.

[24]  Brad A. Myers,et al.  Taxonomies of visual programming and program visualization , 1990, J. Vis. Lang. Comput..

[25]  Steven P. Reiss,et al.  PECAN: Program Development Systems that Support Multiple Views , 1984, IEEE Transactions on Software Engineering.

[26]  Hausi A. Müller,et al.  Rigi: a system for programming-in-the-large , 1988, Proceedings. [1989] 11th International Conference on Software Engineering.

[27]  Michele Lanza,et al.  Program Comprehension through Software Habitability , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

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

[29]  Pierre Poulin,et al.  Visualization-based analysis of quality for large-scale software systems , 2005, ASE.

[30]  Richard C. Holt,et al.  GASE: visualizing software evolution-in-the-large , 1996, Proceedings of WCRE '96: 4rd Working Conference on Reverse Engineering.

[31]  Martin Pinzger,et al.  ArchView - Analyzing Evolutionary Aspects of Complex Software Systems , 2005 .

[32]  B. Marx The Visual Display of Quantitative Information , 1985 .

[33]  Andrian Marcus,et al.  A task oriented view of software visualization , 2002, Proceedings First International Workshop on Visualizing Software for Understanding and Analysis.

[34]  Brad A. Myers INCENSE: A system for displaying data structures , 1983, SIGGRAPH.

[35]  Tudor Gîrba,et al.  Mondrian: an agile information visualization framework , 2006, SoftVis '06.

[36]  Eileen Kraemer,et al.  Designing your Next Empirical Study on Program Comprehension , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[37]  Jochen Quante,et al.  Do Dynamic Object Process Graphs Support Program Understanding? - A Controlled Experiment. , 2008, 2008 16th IEEE International Conference on Program Comprehension.

[38]  Warren Teitelman A Tour Through Cedar , 1984, IEEE Softw..

[39]  Henry Ledgard,et al.  An automatic formatting program for PASCAL , 1977, SIGP.

[40]  Max Jacobson,et al.  A Pattern Language: Towns, Buildings, Construction , 1981 .

[41]  Harald C. Gall,et al.  CocoViz: Towards Cognitive Software Visualizations , 2007, 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[42]  B. A. Myers,et al.  Visual programming, programming by example, and program visualization: a taxonomy , 1986, CHI '86.

[43]  Michele Lanza,et al.  CodeCity: 3D visualization of large-scale software , 2008, ICSE Companion '08.

[44]  Stéphane Ducasse,et al.  Characterizing the evolution of class hierarchies , 2005, Ninth European Conference on Software Maintenance and Reengineering.

[45]  Hong Yul Yang,et al.  A Solar System Metaphor for 3D Visualisation of Object Oriented Software Metrics , 2004, InVis.au.

[46]  Lois M. Haibt,et al.  A program to draw multilevel flow charts , 1899, IRE-AIEE-ACM '59 (Western).

[47]  Stéphane Ducasse,et al.  Object-Oriented Metrics in Practice , 2005 .

[48]  Ben Shneiderman,et al.  Tree visualization with tree-maps: 2-d space-filling approach , 1992, TOGS.

[49]  Michele Lanza,et al.  Visually localizing design problems with disharmony maps , 2008, SoftVis '08.

[50]  Romain Robbes,et al.  The Small Project Observatory: Visualizing software ecosystems , 2010, Sci. Comput. Program..

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

[52]  Harald C. Gall,et al.  Fractal Figures: Visualizing Development Effort for CVS Entities , 2005, 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[53]  Hausi A. Müller,et al.  Manipulating and documenting software structures using SHriMP views , 1995, Proceedings of International Conference on Software Maintenance.

[54]  Victoria Interrante,et al.  User Studies: Why, How, and When? , 2003, IEEE Computer Graphics and Applications.

[55]  Stéphane Ducasse,et al.  A hybrid reverse engineering approach combining metrics and program visualisation , 1999, Sixth Working Conference on Reverse Engineering (Cat. No.PR00303).

[56]  Andrian Marcus,et al.  CFB: A Call for Benchmarks - for Software Visualization , 2003, VISSOFT.

[57]  Johan J. Lukkien,et al.  Visual assessment of software evolution , 2007, Sci. Comput. Program..

[58]  Arie van Deursen,et al.  Understanding Execution Traces Using Massive Sequence and Circular Bundle Views , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[59]  Siw Elisabeth Hove,et al.  The impact of UML documentation on software maintenance: an experimental evaluation , 2006, IEEE Transactions on Software Engineering.

[60]  Margaret-Anne D. Storey,et al.  Theories, tools and research methods in program comprehension: past, present and future , 2006, Software Quality Journal.

[61]  Arie van Deursen,et al.  Trace visualization for program comprehension: A controlled experiment , 2009, 2009 IEEE 17th International Conference on Program Comprehension.

[62]  Stéphane Ducasse,et al.  Meta-environment and executable meta-language using smalltalk: an experience report , 2009, Software & Systems Modeling.

[63]  Richard P. Gabriel,et al.  Patterns of Software: Tales from the Software Community , 1996 .

[64]  Harald C. Gall,et al.  EvoSpaces: Multi-dimensional Navigation Spaces for Software Evolution , 2009, 2009 13th European Conference on Software Maintenance and Reengineering.

[65]  Alfred Kobsa,et al.  An empirical comparison of three commercial information visualization systems , 2001, IEEE Symposium on Information Visualization, 2001. INFOVIS 2001..

[66]  G. Lakoff,et al.  Where mathematics comes from : how the embodied mind brings mathematics into being , 2002 .

[67]  Gerald M. Weinberg,et al.  Psychology of computer programming , 1971 .

[68]  Tudor Gîrba,et al.  Modeling History to Understand Software Evolution , 2005 .

[69]  Tibor Gyimóthy,et al.  Empirical validation of object-oriented metrics on open source software for fault prediction , 2005, IEEE Transactions on Software Engineering.

[70]  Marc Roper,et al.  A novel software visualisation model to support software comprehension , 2004, 11th Working Conference on Reverse Engineering.

[71]  Linden J. Ball,et al.  Exploring the PieTree for Representing Numerical Hierarchical Data , 2007 .

[72]  Jan Jürjens,et al.  The Logical Modularity of Programs , 2009, 2009 16th Working Conference on Reverse Engineering.

[73]  K. Beck,et al.  Extreme Programming Explained , 2002 .

[74]  Alfred Kobsa User Experiments with Tree Visualization Systems , 2004 .

[75]  Kenneth Conrow,et al.  NEATER2: a PL/I source statement reformatter , 1970, CACM.

[76]  Stéphane Ducasse,et al.  Polymetric Views - A Lightweight Visual Approach to Reverse Engineering , 2003, IEEE Trans. Software Eng..

[77]  Philippe Dugerdil,et al.  Execution Trace Visualization in a 3D Space , 2008, Fifth International Conference on Information Technology: New Generations (itng 2008).

[78]  A. Marcus,et al.  Design principles for the enhanced presentation of computer program source text , 1986, CHI '86.

[79]  Oscar Nierstrasz,et al.  Consistent Layout for Thematic Software Maps , 2008, 2008 15th Working Conference on Reverse Engineering.

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

[81]  James M. Bieman,et al.  3-D visualization of software structure , 1999, Adv. Comput..

[82]  G. W. Furnas,et al.  Generalized fisheye views , 1986, CHI '86.

[83]  Richard C. Holt,et al.  Exploring software evolution using spectrographs , 2004, 11th Working Conference on Reverse Engineering.

[84]  Marian Petre,et al.  Why looking isn't always seeing: readership skills and graphical programming , 1995, CACM.

[85]  Jan Bosch,et al.  Design erosion: problems and causes , 2002, J. Syst. Softw..

[86]  Gruia-Catalin Roman,et al.  A taxonomy of program visualization systems , 1993, Computer.

[87]  Andrian Marcus,et al.  Static techniques for concept location in object-oriented code , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[88]  Stéphane Ducasse,et al.  Using history information to improve design flaws detection , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

[89]  Michele Lanza,et al.  Reverse Engineering with Logical Coupling , 2006, 2006 13th Working Conference on Reverse Engineering.

[90]  Michele Lanza,et al.  Visual Exploration of Large-Scale System Evolution , 2008, 2008 15th Working Conference on Reverse Engineering.

[91]  Harald C. Gall,et al.  EvoLens: lens-view visualizations of evolution data , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).

[92]  Dirk Heuzeroth Software-Visualization-From Theory to Practice , 2003 .

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

[94]  Michele Lanza,et al.  Visualizing Software Systems as Cities , 2007, 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[95]  Tarja Systä,et al.  Exploring differences in exchange formats-tool support and case studies , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[96]  Danny Holten,et al.  Hierarchical Edge Bundles: Visualization of Adjacency Relations in Hierarchical Data , 2006, IEEE Transactions on Visualization and Computer Graphics.

[97]  Andrian Marcus,et al.  On the Use of Domain Terms in Source Code , 2008, 2008 16th IEEE International Conference on Program Comprehension.

[98]  Michele Lanza,et al.  Combining Metrics and Graphs for Object Oriented Reverse Engineering , 1999 .

[99]  Jon Louis Bentley,et al.  Multidimensional binary search trees used for associative searching , 1975, CACM.

[100]  Steven P. Reiss An Engine for the 3D Visualization of Program Information , 1995, J. Vis. Lang. Comput..

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

[102]  Stéphane Ducasse,et al.  How developers drive software evolution , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).

[103]  Patrick Ogao,et al.  Evaluation of software visualization tools: Lessons learned , 2009, 2009 5th IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[104]  Margaret-Anne Storey,et al.  Manipulating And Documenting Software Structures , 1995 .

[105]  Michael Balzer,et al.  Software landscapes: visualizing the structure of large software systems , 2004, VISSYM'04.

[106]  Marc H. Brown,et al.  Exploring algorithms using Balsa-II , 1988, Computer.

[107]  Ying Zhu,et al.  Measuring Effective Data Visualization , 2007, ISVC.

[108]  Welf Löwe,et al.  Online-configuration of software visualizations with Vizz3D , 2005, SoftVis '05.

[109]  Huang Xin-rong On the Measure of Complexity , 2005 .

[110]  John T. Stasko,et al.  An evaluation of space-filling information visualizations for depicting hierarchical structures , 2000, Int. J. Hum. Comput. Stud..

[111]  Lisa Amini,et al.  Streamsight: a visualization tool for large-scale streaming applications , 2008, SoftVis '08.

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

[113]  Kouichi Kishida,et al.  A case study of the evolution of Jun: an object-oriented open-source 3D multimedia library , 2001, Proceedings of the 23rd International Conference on Software Engineering. ICSE 2001.

[114]  John C. Grundy,et al.  A 3D metaphor for software production visualization , 2003, Proceedings on Seventh International Conference on Information Visualization, 2003. IV 2003..

[115]  Mircea Lungu,et al.  Reverse engineering software ecosystems , 2009 .

[116]  Alexandru Telea,et al.  Code Flows: Visualizing Structural Evolution of Source Code , 2008, Comput. Graph. Forum.

[117]  Michele Lanza,et al.  CodeCrawler-lessons learned in building a software visualization tool , 2003, Seventh European Conference onSoftware Maintenance and Reengineering, 2003. Proceedings..

[118]  Blaine A. Price,et al.  A Principled Taxonomy of Software Visualization , 1993, J. Vis. Lang. Comput..

[119]  Michel R. V. Chaudron,et al.  Interactive Views to Improve the Comprehension of UML Models - An Experimental Validation , 2007, 15th IEEE International Conference on Program Comprehension (ICPC '07).

[120]  Pierre Poulin,et al.  Exploring the evolution of software quality with animated visualization , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[121]  James R. McKee Maintenance as a function of design , 1984, AFIPS '84.

[122]  James M. Bieman,et al.  Cohesion and reuse in an object-oriented system , 1995, SSR '95.

[123]  Michael F. Kleyn,et al.  GraphTrace - Understanding Object-Oriented Systems Using Concurrently Animated Views , 1988, OOPSLA.

[124]  Richard W. Vuduc,et al.  Communicating Software Architecture using a Unified Single-View Visualization , 2007, 12th IEEE International Conference on Engineering Complex Computer Systems (ICECCS 2007).

[125]  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.

[126]  Stephan Diehl Software visualization : international seminar, Dagstuhl Castle, Germany, May 20-25, 2001 : revised papers , 2002 .

[127]  John Domingue,et al.  Software visualization : programming as a multimedia experience , 1998 .

[128]  Philippe Dugerdil,et al.  EvoSpaces: 3D Visualization of Software Architecture , 2007, SEKE.

[129]  Harald C. Gall,et al.  Visualizing software release histories: the use of color and third dimension , 1999, Proceedings IEEE International Conference on Software Maintenance - 1999 (ICSM'99). 'Software Maintenance for Business Change' (Cat. No.99CB36360).

[130]  Oscar Nierstrasz,et al.  Object-oriented reengineering patterns , 2004, Proceedings. 26th International Conference on Software Engineering.

[131]  Marcelo R. Campo,et al.  An Overview of 3D Software Visualization , 2009, IEEE Transactions on Visualization and Computer Graphics.

[132]  Lindsay W. MacDonald,et al.  Tutorial: Using Color Effectively in Computer Graphics , 1999, IEEE Computer Graphics and Applications.

[133]  Jock D. Mackinlay,et al.  Cone Trees: animated 3D visualizations of hierarchical information , 1991, CHI.

[134]  Michael Balzer,et al.  Hierarchy Based 3D Visualization of Large Software Structures , 2004, IEEE Visualization 2004.

[135]  Radu Marinescu,et al.  Detection strategies: metrics-based rules for detecting design flaws , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[136]  Andrian Marcus,et al.  Supporting the evolution of a software visualization tool through usability studies , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[137]  Robert DeLine,et al.  Staying Oriented with Software Terrain Maps , 2005, DMS.

[138]  Radu Marinescu,et al.  Measurement and Quality in Object-Oriented Design , 2005, ICSM.

[139]  Marvin V. Zelkowitz,et al.  Principles of software engineering and design , 1979 .

[140]  Håkan Jonsson,et al.  Evaluating three-dimensional information visualization designs: a case study of three designs , 1998, Proceedings. 1998 IEEE Conference on Information Visualization. An International Conference on Computer Visualization and Graphics (Cat. No.98TB100246).

[141]  Hausi A. Müller,et al.  Cognitive design elements to support the construction of a mental model during software exploration , 1999, J. Syst. Softw..

[142]  Lionel C. Briand,et al.  A Unified Framework for Cohesion Measurement in Object-Oriented Systems , 2004, Empirical Software Engineering.

[143]  Ermira Daka,et al.  Parsing and Modeling C# Systems , 2009 .

[144]  Doug Kimelman,et al.  Visualizing the behavior of object-oriented systems , 1993, OOPSLA '93.

[145]  Robert Sedgewick,et al.  A system for algorithm animation , 1984, SIGGRAPH.

[146]  Michele Lanza,et al.  Software bugs and evolution: a visual approach to uncover their relationship , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[147]  Jason Leigh,et al.  Visualizing object-oriented software in virtual reality , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[148]  Michele Lanza,et al.  Exploring Inter-Module Relationships in Evolving Software Systems , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[149]  Michele Lanza,et al.  Distributed and Collaborative Software Evolution Analysis with Churrasco , 2010, Sci. Comput. Program..

[150]  Oscar Nierstrasz,et al.  The story of moose: an agile reengineering environment , 2005, ESEC/FSE-13.

[151]  Hausi A. Müller,et al.  How do program understanding tools affect how programmers understand programs? , 2000, Sci. Comput. Program..

[152]  Harald C. Gall,et al.  Software visualization with audio supported cognitive glyphs , 2008, 2008 IEEE International Conference on Software Maintenance.

[153]  Richard Wettel Scripting 3 D Visualizations with C ODE C ITY , 2008 .

[154]  Cristina Marinescu,et al.  iPlasma: An Integrated Platform for Quality Assessment of Object-Oriented Design , 2005, ICSM.

[155]  Michele Lanza,et al.  Reverse Engineering Super-Repositories , 2007, 14th Working Conference on Reverse Engineering (WCRE 2007).

[156]  Protima Banerjee About Face 2.0: The Essentials of Interaction Design: Alan Cooper and Robert Reimann Published by John Wiley & Sons, 2003, 576 pp, ISBN 0764526413 , 2004 .

[157]  Claes Wohlin,et al.  Experimentation in software engineering: an introduction , 2000 .

[158]  Andrian Marcus,et al.  3D representations for software visualization , 2003, SoftVis '03.

[159]  B. Shneiderman,et al.  Flowchart techniques for structured programming , 1973, SIGP.

[160]  Jean-Marie Favre G/sup SEE/: a Generic Software Exploration Environment , 2001, Proceedings 9th International Workshop on Program Comprehension. IWPC 2001.

[161]  Rainer Koschke,et al.  Journal of Software Maintenance and Evolution: Research and Practice Software Visualization in Software Maintenance, Reverse Engineering, and Re-engineering: a Research Survey , 2022 .

[162]  Keith Andrews,et al.  Information Pyramids : A New Approach to Visualising Large Hierarchies , 1998 .

[163]  Serge Demeyer,et al.  FAMIX 2. 1-the FAMOOS information exchange model , 1999 .

[164]  Romain Robbes,et al.  Empirical Validation of CodeCity: A Controlled Experiment , 2010 .

[165]  Donald E. Knuth,et al.  Computer-drawn flowcharts , 1963, CACM.

[166]  Denys Poshyvanyk,et al.  Visualization of CVS Repository Information , 2006, 2006 13th Working Conference on Reverse Engineering.

[167]  Shari Lawrence Pfleeger,et al.  Preliminary Guidelines for Empirical Research in Software Engineering , 2002, IEEE Trans. Software Eng..

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