On the Evolution of Source Code and Software Defects

Software systems are subject to continuous changes to adapt to new and changing requirements. This phenomenon, known as software evolution, leads in the long term to software aging: The size and the complexity of systems increase, while their quality decreases. In this context, it is no wonder that software maintenance claims the most part of a software system's cost. The analysis of software evolution helps practitioners deal with the negative effects of software aging. With the advent of the Internet and the consequent widespread adoption of distributed development tools, such as software configuration management and issue tracking systems, a vast amount of valuable information concerning software evolution has become available. In the last two decades, researchers have focused on mining and analyzing this data, residing in various software repositories, to understand software evolution and support maintenance activities. However, most approaches target a specific maintenance task, and consider only one of the several facets of software evolution. Such approaches, and the infrastructures that implement them, cannot be extended to address different maintenance problems. In this dissertation, we propose an integrated view of software evolution that combines different evolutionary aspects. Our thesis is that an integrated and flexible approach supports an extensible set of software maintenance activities. To this aim, we present a meta-model that integrates two aspects of software evolution: source code and software defects. We implemented our approach in a framework that, by retrieving information from source code and defect repositories, serves as a basis to create analysis techniques and tools. To show the flexibility of our approach, we extended our meta-model and framework with e-mail information extracted from development mailing lists. To validate our thesis, we devised and evaluated, on top of our approach, a number of novel analysis techniques that achieve two goals: 1) Inferring the causes of problems in a software system. We propose three retrospective analysis techniques, based on interactive visualizations, to analyze the evolution of source code, software defects, and their co-evolution. These techniques support various maintenance tasks, such as system restructuring, re-documentation, and identification of critical software components. 2) Predicting the future of a software system. We present four analysis techniques aimed at anticipating the locations of future defects, and investigating the impact of certain source code properties on the presence of defects. They support two maintenance tasks: defect prediction and software quality analysis. By creating our framework and the mentioned techniques on top of it, we provide evidence that an integrated view of software evolution, combining source code and software defects information, supports an extensible set of software maintenance tasks.

[1]  Michele Lanza,et al.  Promises and perils of porting software visualization tools to the web , 2009, 2009 11th IEEE International Symposium on Web Systems Evolution.

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

[3]  Malcolm Munro,et al.  Revision Towers , 2002, Proceedings First International Workshop on Visualizing Software for Understanding and Analysis.

[4]  Jens Knodel,et al.  Static evaluation of software architectures , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[5]  Foutse Khomh,et al.  An Exploratory Study of the Impact of Code Smells on Software Change-proneness , 2009, 2009 16th Working Conference on Reverse Engineering.

[6]  M. Lanza,et al.  CodeCrawler - an information visualization tool for program comprehension , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[7]  Michele Lanza,et al.  Churrasco : Supporting Collaborative Software Evolution Analysis , 2008 .

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

[9]  David Lorge Parnas,et al.  Software aging , 1994, Proceedings of 16th International Conference on Software Engineering.

[10]  Eric Lefebvre,et al.  Java Modeling Color with Uml: Enterprise Components and Process with Cdrom , 1999 .

[11]  Premkumar T. Devanbu,et al.  Talk and work: a preliminary report , 2008, MSR '08.

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

[13]  Arthur J. Riel,et al.  Object-Oriented Design Heuristics , 1996 .

[14]  Alfred V. Aho,et al.  Do Crosscutting Concerns Cause Defects? , 2008, IEEE Transactions on Software Engineering.

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

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

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

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

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

[20]  Stéphane Ducasse,et al.  Multi-level Method Understanding Using Microprints , 2005, 3rd IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[21]  Niclas Ohlsson,et al.  Predicting Fault-Prone Software Modules in Telephone Switches , 1996, IEEE Trans. Software Eng..

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

[23]  M.M. Lehman,et al.  Programs, life cycles, and laws of software evolution , 1980, Proceedings of the IEEE.

[24]  Harald C. Gall,et al.  Cross-project defect prediction: a large scale experiment on data vs. domain vs. process , 2009, ESEC/SIGSOFT FSE.

[25]  Daniel D. McCracken,et al.  Life cycle concept considered harmful , 1982, ACM SIGSOFT Softw. Eng. Notes.

[26]  Stéphane Ducasse,et al.  Distribution Map , 2006, 2006 22nd IEEE International Conference on Software Maintenance.

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

[28]  Harald C. Gall,et al.  EvoGraph: A Lightweight Approach to Evolutionary and Structural Analysis of Large Software Systems , 2006, 2006 13th Working Conference on Reverse Engineering.

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

[30]  Gail C. Murphy,et al.  Predicting source code changes by mining change history , 2004, IEEE Transactions on Software Engineering.

[31]  Martin Pinzger,et al.  "A Bug's Life" Visualizing a Bug Database , 2007, 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[32]  R. Likert “Technique for the Measurement of Attitudes, A” , 2022, The SAGE Encyclopedia of Research Design.

[33]  Taghi M. Khoshgoftaar,et al.  Detection of software modules with high debug code churn in a very large legacy system , 1996, Proceedings of ISSRE '96: 7th International Symposium on Software Reliability Engineering.

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

[35]  Mik Kersten,et al.  Using task context to improve programmer productivity , 2006, SIGSOFT '06/FSE-14.

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

[37]  Richard C. Holt,et al.  The top ten list: dynamic fault prediction , 2005, 21st IEEE International Conference on Software Maintenance (ICSM'05).

[38]  Oscar Nierstrasz Putting Change at the Center of the Software Process , 2004, CBSE.

[39]  Witold Pedrycz,et al.  A comparative analysis of the efficiency of change metrics and static code attributes for defect prediction , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

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

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

[42]  Andreas Zeller,et al.  Predicting vulnerable software components , 2007, CCS '07.

[43]  Alberto Bacchelli,et al.  Benchmarking Lightweight Techniques to Link E-Mails and Source Code , 2009, 2009 16th Working Conference on Reverse Engineering.

[44]  Thomas Zimmermann,et al.  Improving bug tracking systems , 2009, 2009 31st International Conference on Software Engineering - Companion Volume.

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

[46]  Andrew Begel,et al.  Deep intellisense: a tool for rehydrating evaporated information , 2008, MSR '08.

[47]  Ted G. Lewis,et al.  Milestones in software evolution , 1990 .

[48]  Barry W. Boehm,et al.  A spiral model of software development and enhancement , 1986, Computer.

[49]  Giuliano Antoniol,et al.  Towards the Integration of Versioning Systems, Bug Reports and Source Code Meta-Models , 2005, SETra@ICGT.

[50]  Thilo Mende,et al.  Replication of defect prediction studies: problems, pitfalls and recommendations , 2010, PROMISE '10.

[51]  Michele Lanza,et al.  The evolution radar: visualizing integrated logical coupling information , 2006, MSR '06.

[52]  Stéphane Ducasse,et al.  Yesterday's Weather: guiding early reverse engineering efforts by summarizing the evolution of changes , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[53]  Rick Kazman,et al.  View extraction and view fusion in architectural understanding , 1998, Proceedings. Fifth International Conference on Software Reuse (Cat. No.98TB100203).

[54]  Thomas Zimmermann,et al.  Improving bug triage with bug tossing graphs , 2009, ESEC/FSE '09.

[55]  Serge Demeyer,et al.  Detecting move operations in versioning information , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

[56]  Meir M. Lehman,et al.  Program evolution: processes of software change , 1985 .

[57]  Andreas Zeller,et al.  Mining metrics to predict component failures , 2006, ICSE.

[58]  John McCrone Bug's life , 2003, The Lancet Neurology.

[59]  Michele Lanza,et al.  Visualizing Co-Change Information with the Evolution Radar , 2009, IEEE Transactions on Software Engineering.

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

[61]  Audris Mockus,et al.  Inferring change effort from configuration management databases , 1998, Proceedings Fifth International Software Metrics Symposium. Metrics (Cat. No.98TB100262).

[62]  Stéphane Ducasse,et al.  Package Surface Blueprints: Visually Supporting the Understanding of Package Relationships , 2007, 2007 IEEE International Conference on Software Maintenance.

[63]  Alberto Bacchelli,et al.  Are Popular Classes More Defect Prone? , 2010, FASE.

[64]  Elaine J. Weyuker,et al.  Predicting the location and number of faults in large software systems , 2005, IEEE Transactions on Software Engineering.

[65]  Michele Lanza,et al.  Package patterns for visual architecture recovery , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

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

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

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

[69]  Grace A. Lewis,et al.  Modernizing Legacy Systems - Software Technologies, Engineering Processes, and Business Practices , 2003, SEI series in software engineering.

[70]  Michele Lanza,et al.  An extensive comparison of bug prediction approaches , 2010, 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).

[71]  Audris Mockus,et al.  TA-RE: an exchange language for mining software repositories , 2006, MSR '06.

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

[73]  Harlan D. Mills Software Development , 1976, IEEE Transactions on Software Engineering.

[74]  Serge Demeyer,et al.  Studying software evolution information by visualizing the change history , 2004, 20th IEEE International Conference on Software Maintenance, 2004. Proceedings..

[75]  Christian Robottom Reis,et al.  An Overview of the Software Engineering Process and Tools in the Mozilla Project , 2002 .

[76]  Thomas Zimmermann,et al.  Towards the next generation of bug tracking systems , 2008, 2008 IEEE Symposium on Visual Languages and Human-Centric Computing.

[77]  Ramanath Subramanyam,et al.  Empirical Analysis of CK Metrics for Object-Oriented Design Complexity: Implications for Software Defects , 2003, IEEE Trans. Software Eng..

[78]  Elaine J. Weyuker,et al.  The distribution of faults in a large industrial software system , 2002, ISSTA '02.

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

[80]  Robert C. Martin Agile Software Development, Principles, Patterns, and Practices , 2002 .

[81]  Adrian G. Barnett,et al.  An Introduction to Generalized Linear Models, Third Edition , 1990 .

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

[83]  A. Zeller,et al.  Predicting Defects for Eclipse , 2007, Third International Workshop on Predictor Models in Software Engineering (PROMISE'07: ICSE Workshops 2007).

[84]  Daniela E. Damian,et al.  Predicting build failures using social network analysis on developer communication , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[85]  Romain Robbes,et al.  Versioning systems for evolution research , 2005, Eighth International Workshop on Principles of Software Evolution (IWPSE'05).

[86]  Michael W. Godfrey,et al.  Facilitating software evolution research with kenyon , 2005, ESEC/FSE-13.

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

[88]  Thomas Ball,et al.  Static analysis tools as early indicators of pre-release defect density , 2005, ICSE.

[89]  Andreas Zeller,et al.  How Long Will It Take to Fix This Bug? , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

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

[91]  Bram Adams,et al.  Co-evolution of source code and the build system , 2009, 2009 IEEE International Conference on Software Maintenance.

[92]  Michele Lanza,et al.  Softwarenaut: exploring hierarchical system decompositions , 2006, Conference on Software Maintenance and Reengineering (CSMR'06).

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

[94]  Kent L. Beck,et al.  Extreme programming explained - embrace change , 1990 .

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

[96]  Premkumar T. Devanbu,et al.  Fair and balanced?: bias in bug-fix datasets , 2009, ESEC/FSE '09.

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

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

[99]  Michele Lanza,et al.  Object-Oriented Reverse Engineering —- Coarse-grained, Fine-grained, and Evolutionary Software Visualization , 2003 .

[100]  Lowell Jay Arthur Software evolution: the software maintenance challenge , 1988 .

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

[102]  Audris Mockus,et al.  Using version control data to evaluate the impact of software tools , 1999, Proceedings of the 1999 International Conference on Software Engineering (IEEE Cat. No.99CB37002).

[103]  Tao Xie,et al.  An approach to detecting duplicate bug reports using natural language and execution information , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[104]  Javam C. Machado,et al.  The prediction of faulty classes using object-oriented design metrics , 2001, J. Syst. Softw..

[105]  Marc J. Rochkind,et al.  The source code control system , 1975, IEEE Transactions on Software Engineering.

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

[107]  Harald C. Gall,et al.  Towards an Integrated View on Architecture and its Evolution , 2005, Electron. Notes Theor. Comput. Sci..

[108]  Adrian Trifu,et al.  Automated design flaw correction in object-oriented systems , 2004, Eighth European Conference on Software Maintenance and Reengineering, 2004. CSMR 2004. Proceedings..

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

[110]  Michele Lanza,et al.  Visual software evolution reconstruction , 2009, J. Softw. Maintenance Res. Pract..

[111]  Harald C. Gall,et al.  Detection of logical coupling based on product release history , 1998, Proceedings. International Conference on Software Maintenance (Cat. No. 98CB36272).

[112]  Mik Kersten,et al.  Mylar: a degree-of-interest model for IDEs , 2005, AOSD '05.

[113]  Mary Shaw,et al.  Finding predictors of field defects for open source software systems in commonly available data sources: a case study of OpenBSD , 2005, 11th IEEE International Software Metrics Symposium (METRICS'05).

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

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

[116]  Elaine J. Weyuker,et al.  Where the bugs are , 2004, ISSTA '04.

[117]  Christine Halverson,et al.  Designing task visualizations to support the coordination of work in software development , 2006, CSCW '06.

[118]  Stéphane Ducasse,et al.  The class blueprint: visually supporting the understanding of glasses , 2005, IEEE Transactions on Software Engineering.

[119]  W. W. Royce,et al.  Managing the development of large software systems: concepts and techniques , 1987, ICSE '87.

[120]  Lucian Voinea,et al.  CVSscan: visualization of code evolution , 2005, SoftVis '05.

[121]  Abraham Bernstein,et al.  Improving defect prediction using temporal features and non linear models , 2007, IWPSE '07.

[122]  Abraham Bernstein,et al.  Mining Software Repositories with iSPAROL and a Software Evolution Ontology , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[123]  Dirk Beyer,et al.  Animated Visualization of Software History using Evolution Storyboards , 2006, 2006 13th Working Conference on Reverse Engineering.

[124]  Tom Gilb,et al.  Evolutionary development , 1981, SOEN.

[125]  Gail C. Murphy,et al.  Automatic bug triage using text categorization , 2004, SEKE.

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

[127]  Arie van Deursen,et al.  Execution trace analysis through massive sequence and circular bundle views , 2008, J. Syst. Softw..

[128]  Victor R. Basili,et al.  A Validation of Object-Oriented Design Metrics as Quality Indicators , 1996, IEEE Trans. Software Eng..

[129]  Westley Weimer,et al.  Modeling bug report quality , 2007, ASE '07.

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

[131]  Mika Mäntylä,et al.  Software evolvability - empirically discovered evolvability issues and human evaluations , 2009 .

[132]  M. Mäntylä,et al.  Subjective evaluation of software evolvability using code smells: An empirical study , 2006, Empirical Software Engineering.

[133]  Norman E. Fenton,et al.  Quantitative Analysis of Faults and Failures in a Complex Software System , 2000, IEEE Trans. Software Eng..

[134]  Alberto Bacchelli,et al.  On the Impact of Design Flaws on Software Defects , 2010, 2010 10th International Conference on Quality Software.

[135]  Thomas Zimmermann,et al.  Information needs in bug reports: improving cooperation between developers and users , 2010, CSCW '10.

[136]  Juliet Sutherland,et al.  SCRUM: An extension pattern language for hyper productive software development , 2000 .

[137]  Giuliano Antoniol,et al.  Recovering Traceability Links between Code and Documentation , 2002, IEEE Trans. Software Eng..

[138]  John T. Stasko,et al.  Visualization of test information to assist fault localization , 2002, ICSE '02.

[139]  Brendan Murphy,et al.  Can developer-module networks predict failures? , 2008, SIGSOFT '08/FSE-16.

[140]  Alexandru Telea,et al.  Structural analysis and visualization of C++ code evolution using syntax trees , 2007, IWPSE '07.

[141]  JaatunMartin Gilje,et al.  Agile Software Development , 2002, Comput. Sci. Educ..

[142]  Foutse Khomh,et al.  Is it a bug or an enhancement?: a text-based approach to classify change requests , 2008, CASCON '08.

[143]  Wolfgang Emmerich,et al.  BOX: Browsing objects in XML , 2000, Softw. Pract. Exp..

[144]  Ahmed E. Hassan,et al.  A Case Study of Bias in Bug-Fix Datasets , 2010, 2010 17th Working Conference on Reverse Engineering.

[145]  Walter F. Tichy,et al.  Implementation and evaluation of a revision control system , 1982 .

[146]  Michele Lanza,et al.  On the Relationship Between Change Coupling and Software Defects , 2009, 2009 16th Working Conference on Reverse Engineering.

[147]  Thomas Zimmermann,et al.  What Makes a Good Bug Report? , 2008, IEEE Transactions on Software Engineering.

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

[149]  Michele Lanza,et al.  Applying the evolution radar to PostgreSQL , 2006, MSR '06.

[150]  Harald C. Gall,et al.  Analysing Software Repositories to Understand Software Evolution , 2008, Software Evolution.

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

[152]  Stéphane Ducasse,et al.  Seaside: A Flexible Environment for Building Dynamic Web Applications , 2007, IEEE Software.

[153]  J. E. Jackson A User's Guide to Principal Components , 1991 .

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

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

[156]  Reidar Conradi,et al.  Impact of software engineering research on the practice of software configuration management , 2005, ACM Trans. Softw. Eng. Methodol..

[157]  Hausi A. Müller,et al.  The Software Bookshelf , 1997, IBM Syst. J..

[158]  Andreas Zeller,et al.  Mining version histories to guide software changes , 2005, Proceedings. 26th International Conference on Software Engineering.

[159]  Stéphane Ducasse,et al.  Modeling history to analyze software evolution , 2006, J. Softw. Maintenance Res. Pract..

[160]  Ladan Tahvildari,et al.  A Metric-Based Heuristic Framework to Detect Object-Oriented Design Flaws , 2006, 14th IEEE International Conference on Program Comprehension (ICPC'06).

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

[162]  Michael W. Godfrey,et al.  YARN: Animating Software Evolution , 2007, 2007 4th IEEE International Workshop on Visualizing Software for Understanding and Analysis.

[163]  Elaine J. Weyuker,et al.  Automating algorithms for the identification of fault-prone files , 2007, ISSTA '07.

[164]  Premkumar T. Devanbu,et al.  Open Borders? Immigration in Open Source Projects , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[165]  Giuliano Antoniol,et al.  An automatic approach to identify class evolution discontinuities , 2004 .

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

[167]  Gregorio Robles,et al.  Replicating MSR: A study of the potential replicability of papers published in the Mining Software Repositories proceedings , 2010, 2010 7th IEEE Working Conference on Mining Software Repositories (MSR 2010).

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

[169]  Lionel C. Briand,et al.  A Unified Framework for Coupling Measurement in Object-Oriented Systems , 1999, IEEE Trans. Software Eng..

[170]  Anita Sarma,et al.  Tesseract: Interactive visual exploration of socio-technical relationships in software development , 2009, 2009 IEEE 31st International Conference on Software Engineering.

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

[172]  B. Myers Debugging Reinvented: Asking and Answering Why and Why Not Questions about Program Behavior , 2008 .

[173]  Martin Pinzger,et al.  The Metabase: Generating Object Persistency Using Meta Descriptions , 2007, FAMOOSr@TOOLS.

[174]  Mika Mäntylä,et al.  Empirical software evolvability - code smells and human evaluations , 2010, 2010 IEEE International Conference on Software Maintenance.

[175]  J. Stasko,et al.  Focus+context display and navigation techniques for enhancing radial, space-filling hierarchy visualizations , 2000, IEEE Symposium on Information Visualization 2000. INFOVIS 2000. Proceedings.

[176]  N. Nagappan,et al.  Use of relative code churn measures to predict system defect density , 2005, Proceedings. 27th International Conference on Software Engineering, 2005. ICSE 2005..

[177]  Stephen S. Yau,et al.  Ripple effect analysis of software maintenance , 1978, COMPSAC.

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

[179]  Michele Lanza,et al.  A Flexible Framework to Support Collaborative Software Evolution Analysis , 2008, 2008 12th European Conference on Software Maintenance and Reengineering.

[180]  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).

[181]  Carsten Görg,et al.  Detecting and visualizing refactorings from software archives , 2005, 13th International Workshop on Program Comprehension (IWPC'05).

[182]  Michael Gertz,et al.  Mining email social networks , 2006, MSR '06.

[183]  Meir M. Lehman,et al.  On understanding laws, evolution, and conservation in the large-program life cycle , 1984, J. Syst. Softw..

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

[185]  Michele Lanza,et al.  On porting software visualization tools to the web , 2010, International Journal on Software Tools for Technology Transfer.

[186]  Michael W. Godfrey,et al.  An integrated approach for studying architectural evolution , 2002, Proceedings 10th International Workshop on Program Comprehension.

[187]  Hausi A. Müller,et al.  Rigi - An environment for software reverse engineering, exploration, visualization, and redocumentation , 2010, Sci. Comput. Program..

[188]  Audris Mockus,et al.  MSR 2004 international workshop on mining software repositories , 2004, Proceedings. 26th International Conference on Software Engineering.

[189]  Randall Frost,et al.  Jazz and the Eclipse Way of Collaboration , 2007, IEEE Software.

[190]  Gail C. Murphy,et al.  Who should fix this bug? , 2006, ICSE.

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

[192]  Lucian Voinea,et al.  An open framework for CVS repository querying, analysis and visualization , 2006, MSR '06.

[193]  Genny Tortora,et al.  Recovering design rationale from email repositories , 2009, 2009 IEEE International Conference on Software Maintenance.

[194]  Rainer Koschke,et al.  Effort-Aware Defect Prediction Models , 2010, 2010 14th European Conference on Software Maintenance and Reengineering.

[195]  Gina Venolia,et al.  The secret life of bugs: Going past the errors and omissions in software repositories , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[196]  Dewayne E. Perry,et al.  Toward understanding the rhetoric of small source code changes , 2005, IEEE Transactions on Software Engineering.

[197]  Andreas Zeller,et al.  Predicting faults from cached history , 2008, ISEC '08.

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

[199]  Harvey P. Siy,et al.  Predicting Fault Incidence Using Software Change History , 2000, IEEE Trans. Software Eng..

[200]  Miryung Kim,et al.  Program element matching for multi-version program analyses , 2006, MSR '06.

[201]  Laurie A. Williams,et al.  Empirical Software Change Impact Analysis using Singular Value Decomposition , 2008, 2008 1st International Conference on Software Testing, Verification, and Validation.

[202]  Ahmed E. Hassan,et al.  What Can OSS Mailing Lists Tell Us? A Preliminary Psychometric Text Analysis of the Apache Developer Mailing List , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[203]  Michele Lanza,et al.  BugCrawler: Visualizing Evolving Software Systems , 2007, 11th European Conference on Software Maintenance and Reengineering (CSMR'07).

[204]  Rudolf Ferenc,et al.  Using the Conceptual Cohesion of Classes for Fault Prediction in Object-Oriented Systems , 2008, IEEE Transactions on Software Engineering.

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

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

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

[208]  Jim McCarthy,et al.  Dynamics of Software Development , 1995 .

[209]  David Lorge Parnas,et al.  A rational design process: How and why to fake it , 1986, IEEE Transactions on Software Engineering.

[210]  Lucian Voinea,et al.  Visual data mining and analysis of software repositories , 2007, Comput. Graph..

[211]  Lucian Voinea,et al.  Multiscale and multivariate visualizations of software evolution , 2006, SoftVis '06.

[212]  Stephen R. Schach,et al.  Validation of the coupling dependency metric as a predictor of run-time failures and maintenance measures , 1998, Proceedings of the 20th International Conference on Software Engineering.

[213]  Serge Demeyer,et al.  FAMIX: exchange experiences with CDIF and XMI , 2000 .

[214]  Andreas Zeller,et al.  Predicting component failures at design time , 2006, ISESE '06.

[215]  Ralph E. Johnson,et al.  A Refactoring Tool for Smalltalk , 1997, Theory Pract. Object Syst..

[216]  Eleni Stroulia,et al.  A study on the current state of the art in tool-supported UML-based static reverse engineering , 2002, Ninth Working Conference on Reverse Engineering, 2002. Proceedings..

[217]  Thomas Zimmermann,et al.  Mining Aspects from Version History , 2006, 21st IEEE/ACM International Conference on Automated Software Engineering (ASE'06).

[218]  R. Daniel Bergeron,et al.  Visualization reference models , 1993, VIS '93.

[219]  Romain Robbes,et al.  Of Change and Software , 2009 .

[220]  Alan Knight GLORP: generic lightweight object-relational persistence , 2000, OOPSLA '00.

[221]  Emden R. Gansner,et al.  REportal: a Web-based portal site for reverse engineering , 2001, Proceedings Eighth Working Conference on Reverse Engineering.

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

[223]  Nachiappan Nagappan,et al.  Predicting defects using network analysis on dependency graphs , 2008, 2008 ACM/IEEE 30th International Conference on Software Engineering.

[224]  Harald C. Gall,et al.  Improving evolvability through refactoring , 2005, MSR.

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

[226]  Ahmed E. Hassan,et al.  Predicting faults using the complexity of code changes , 2009, 2009 IEEE 31st International Conference on Software Engineering.

[227]  Sandy Lovie How the mind works , 1980, Nature.

[228]  Mehdi Jazayeri On Architectural Stability and Evolution , 2002, Ada-Europe.

[229]  Audris Mockus,et al.  Guest Editor's Introduction: Special Issue on Mining Software Repositories , 2005, IEEE Trans. Software Eng..