Effect of Clone Information on the Performance of Developers Fixing Cloned Bugs

Duplicated source code -- clones -- is known to occur frequently in software systems and bears the risk of inconsistent updates of the code. The impact of clones has been investigated mostly by retrospective analysis of software systems. Only little effort has been spent to investigate human interaction when dealing with clones. A previous study by Chatterji and colleagues found that cloned defects are removed significantly more accurately when clone information is provided to the programmers. We conducted a controlled experiment to extend the previous study on the use of clone information by investigating the effect of clone information on the performance of developers in common bug-fixing tasks. The experiment shows that developers are quite capable to compensate missing clone information through testing to provide correct solutions. Clone information does help to detect cloned defects faster, although developers may exploit semantic code relations such as inheritance to uncover cloned defects only slightly slower if they do not have clone information. If cloned defects lurk in semantically unrelated places however, clone information helps to find them faster at statistical significance. Developers without clone information needed 17 minutes longer on average or 140% more time in relative terms to complete the task successfully.

[1]  Jeffrey C. Carver,et al.  Measuring the efficacy of code clone information: an empirical study , 2010, PLATEAU '10.

[2]  Rebecca Tiarks,et al.  A controlled experiment on software clones , 2012, 2012 20th IEEE International Conference on Program Comprehension (ICPC).

[3]  Hagen Hagen Is Cloned Code more stable than Non-Cloned Code? , 2008 .

[4]  Chanchal Kumar Roy,et al.  The vision of software clone management: Past, present, and future (Keynote paper) , 2014, 2014 Software Evolution Week - IEEE Conference on Software Maintenance, Reengineering, and Reverse Engineering (CSMR-WCRE).

[5]  Shinji Kusumoto,et al.  Refactoring Support Based on Code Clone Analysis , 2004, PROFES.

[6]  Miryung Kim,et al.  An ethnographic study of copy and paste programming practices in OOPL , 2004, Proceedings. 2004 International Symposium on Empirical Software Engineering, 2004. ISESE '04..

[7]  Chanchal Kumar Roy,et al.  Comparison and evaluation of code clone detection techniques and tools: A qualitative approach , 2009, Sci. Comput. Program..

[8]  Andrew Begel,et al.  Managing Duplicated Code with Linked Editing , 2004, 2004 IEEE Symposium on Visual Languages - Human Centric Computing.

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

[10]  Chanchal K. Roy,et al.  A Survey on Software Clone Detection Research , 2007 .

[11]  Nils Göde,et al.  Evolution of Type-1 Clones , 2009, 2009 Ninth IEEE International Working Conference on Source Code Analysis and Manipulation.

[12]  Rainer Koschke,et al.  Studying clone evolution using incremental clone detection , 2013, J. Softw. Evol. Process..

[13]  Saman Bazrafshan,et al.  Evolution of Near-Miss Clones , 2012, 2012 IEEE 12th International Working Conference on Source Code Analysis and Manipulation.

[14]  Bashar Nuseibeh,et al.  Evaluating the Harmfulness of Cloning: A Change Based Experiment , 2007, Fourth International Workshop on Mining Software Repositories (MSR'07:ICSE Workshops 2007).

[15]  Jeffrey C. Carver,et al.  On the need for human-based empirical validation of techniques and tools for code clone analysis , 2011, IWSC '11.

[16]  Dietmar Pfahl,et al.  Reporting guidelines for controlled experiments in software engineering , 2005, 2005 International Symposium on Empirical Software Engineering, 2005..

[17]  Walter Franz Tichy,et al.  Should Computer Scientists Experiment More? - 16 Excuses to Avoid Experimentation , 1997 .

[18]  Michael W. Godfrey,et al.  "Cloning Considered Harmful" Considered Harmful , 2006, 2006 13th Working Conference on Reverse Engineering.

[19]  Nils Göde,et al.  Clone removal: fact or fiction? , 2010, IWSC '10.

[20]  Magdalena Balazinska,et al.  Advanced clone-analysis to support object-oriented system refactoring , 2000, Proceedings Seventh Working Conference on Reverse Engineering.

[21]  Rainer Koschke,et al.  Survey of Research on Software Clones , 2006, Duplication, Redundancy, and Similarity in Software.

[22]  Rainer Koschke,et al.  An Empirical Study of Clone Removals , 2013, 2013 IEEE International Conference on Software Maintenance.

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

[24]  Arie van Deursen,et al.  Managing code clones using dynamic change tracking and resolution , 2009, 2009 IEEE International Conference on Software Maintenance.

[25]  Hoan Anh Nguyen,et al.  Clone-Aware Configuration Management , 2009, 2009 IEEE/ACM International Conference on Automated Software Engineering.

[26]  Jeffrey C. Carver,et al.  Effects of cloned code on software maintainability: A replicated developer study , 2013, 2013 20th Working Conference on Reverse Engineering (WCRE).

[27]  Shinji Kusumoto,et al.  CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code , 2002, IEEE Trans. Software Eng..

[28]  Walter F. Tichy,et al.  Should Computer Scientists Experiment More? , 1998, Computer.

[29]  Nils Göde,et al.  Cloned code: stable code , 2013, J. Softw. Evol. Process..