Advanced C++ programming styles and idioms
Advanced C++ programming styles and idioms
Design patterns: elements of reusable object-oriented software
Design patterns: elements of reusable object-oriented software
Algorithms on strings, trees, and sequences: computer science and computational biology
Algorithms on strings, trees, and sequences: computer science and computational biology
Pattern matching for clone and concept detection
Reverse engineering
AntiPatterns: refactoring software, architectures, and projects in crisis
AntiPatterns: refactoring software, architectures, and projects in crisis
Refactoring: improving the design of existing code
Refactoring: improving the design of existing code
A case study of open source software development: the Apache server
Proceedings of the 22nd international conference on Software engineering
CCFinder: a multilinguistic token-based code clone detection system for large scale source code
IEEE Transactions on Software Engineering
Substring Matching for Clone Detection and Change Tracking
ICSM '94 Proceedings of the International Conference on Software Maintenance
Experiment on the Automatic Detection of Function Clones in a Software System Using Metrics
ICSM '96 Proceedings of the 1996 International Conference on Software Maintenance
Measuring Clone Based Reengineering Opportunities
METRICS '99 Proceedings of the 6th International Symposium on Software Metrics
On finding duplication and near-duplication in large software systems
WCRE '95 Proceedings of the Second Working Conference on Reverse Engineering
Partial Redesign of Java Software Systems Based on Clone Analysis
WCRE '99 Proceedings of the Sixth Working Conference on Reverse Engineering
Advanced Clone-Analysis to Support Object-Oriented System Refactoring
WCRE '00 Proceedings of the Seventh Working Conference on Reverse Engineering (WCRE'00)
Identifying Similar Code with Program Dependence Graphs
WCRE '01 Proceedings of the Eighth Working Conference on Reverse Engineering (WCRE'01)
Clone Detection Using Abstract Syntax Trees
ICSM '98 Proceedings of the International Conference on Software Maintenance
A Language Independent Approach for Detecting Duplicated Code
ICSM '99 Proceedings of the IEEE International Conference on Software Maintenance
Evolution in Open Source Software: A Case Study
ICSM '00 Proceedings of the International Conference on Software Maintenance (ICSM'00)
Comprehending Reality " Practical Barriers to Industrial Adoption of Software Maintenance Automation
IWPC '03 Proceedings of the 11th IEEE International Workshop on Program Comprehension
Eliminating redundancies with a "composition with adaptation" meta-programming technique
Proceedings of the 9th European software engineering conference held jointly with 11th ACM SIGSOFT international symposium on Foundations of software engineering
Reconstruction of Successful Software Evolution Using Clone Detection
IWPSE '03 Proceedings of the 6th International Workshop on Principles of Software Evolution
Problems Creating Task-relevant Clone Detection Reference Data
WCRE '03 Proceedings of the 10th Working Conference on Reverse Engineering
An Ethnographic Study of Copy and Paste Programming Practices in OOPL
ISESE '04 Proceedings of the 2004 International Symposium on Empirical Software Engineering
Aiding Comprehension of Cloning Through Categorization
IWPSE '04 Proceedings of the Principles of Software Evolution, 7th International Workshop
Managing Duplicated Code with Linked Editing
VLHCC '04 Proceedings of the 2004 IEEE Symposium on Visual Languages - Human Centric Computing
Using Origin Analysis to Detect Merging and Splitting of Source Code Entities
IEEE Transactions on Software Engineering
Beyond templates: a study of clones in the STL and some general implications
Proceedings of the 27th international conference on Software engineering
An empirical study of code clone genealogies
Proceedings of the 10th European software engineering conference held jointly with 13th ACM SIGSOFT international symposium on Foundations of software engineering
Improved Tool Support for the Investigation of Duplication in Software
ICSM '05 Proceedings of the 21st IEEE International Conference on Software Maintenance
Supporting the analysis of clones in software systems: Research Articles
Journal of Software Maintenance and Evolution: Research and Practice - IEEE International Conference on Software Maintenance (ICSM2005)
Maintaining mental models: a study of developer work habits
Proceedings of the 28th international conference on Software engineering
"Cloning Considered Harmful" Considered Harmful
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
Clone Detection Using Abstract Syntax Suffix Trees
WCRE '06 Proceedings of the 13th Working Conference on Reverse Engineering
DECKARD: Scalable and Accurate Tree-Based Detection of Code Clones
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Using Server Pages to Unify Clones in Web Applications: A Trade-Off Analysis
ICSE '07 Proceedings of the 29th international conference on Software Engineering
Tracking Code Clones in Evolving Software
ICSE '07 Proceedings of the 29th international conference on Software Engineering
How Clones are Maintained: An Empirical Study
CSMR '07 Proceedings of the 11th European Conference on Software Maintenance and Reengineering
Evaluating the Harmfulness of Cloning: A Change Based Experiment
MSR '07 Proceedings of the Fourth International Workshop on Mining Software Repositories
Relation of code clones and change couplings
FASE'06 Proceedings of the 9th international conference on Fundamental Approaches to Software Engineering
Comparison and evaluation of code clone detection techniques and tools: A qualitative approach
Science of Computer Programming
Exploring the design space of proactive tool support for copy-and-paste programming
CASCON '09 Proceedings of the 2009 Conference of the Center for Advanced Studies on Collaborative Research
The Linux kernel as a case study in software evolution
Journal of Systems and Software
Near-miss function clones in open source software: an empirical study
Journal of Software Maintenance and Evolution: Research and Practice - Working Conference on Reverse Engineering (WCRE 2008)
Actively comparing clones inside the code editor
Proceedings of the 4th International Workshop on Software Clones
Are scripting languages really different?
Proceedings of the 4th International Workshop on Software Clones
Clone removal: fact or fiction?
Proceedings of the 4th International Workshop on Software Clones
Information and Software Technology
Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE)
Analyzing the discipline of preprocessor annotations in 30 million lines of C code
Proceedings of the tenth international conference on Aspect-oriented software development
Extracting code clones for refactoring using combinations of clone metrics
Proceedings of the 5th International Workshop on Software Clones
Determining the provenance of software artifacts
Proceedings of the 5th International Workshop on Software Clones
Finding software license violations through binary code clone detection
Proceedings of the 8th Working Conference on Mining Software Repositories
Social interactions around cross-system bug fixings: the case of FreeBSD and OpenBSD
Proceedings of the 8th Working Conference on Mining Software Repositories
Software bertillonage: finding the provenance of an entity
Proceedings of the 8th Working Conference on Mining Software Repositories
Frequency and risks of changes to clones
Proceedings of the 33rd International Conference on Software Engineering
Do we really need to extend syntax for advanced modularity?
Proceedings of the 11th annual international conference on Aspect-oriented Software Development
Comparative stability of cloned and non-cloned code: an empirical study
Proceedings of the 27th Annual ACM Symposium on Applied Computing
Empirical Software Engineering
An empirical study on the impact of duplicate code
Advances in Software Engineering - Special issue on Software Quality Assurance Methodologies and Techniques
Proceedings of the 34th International Conference on Software Engineering
Can I clone this piece of code here?
Proceedings of the 27th IEEE/ACM International Conference on Automated Software Engineering
Increasing clone maintenance support by unifying clone detection and refactoring activities
Information and Software Technology
Systematizing pragmatic software reuse
ACM Transactions on Software Engineering and Methodology (TOSEM)
An empirical study on clone stability
ACM SIGAPP Applied Computing Review
Connectivity of co-changed method groups: a case study on open source systems
CASCON '12 Proceedings of the 2012 Conference of the Center for Advanced Studies on Collaborative Research
Data clone detection and visualization in spreadsheets
Proceedings of the 2013 International Conference on Software Engineering
Enhancement of CRD-based clone tracking
Proceedings of the 2013 International Workshop on Principles of Software Evolution
Identifying clone removal opportunities based on co-evolution analysis
Proceedings of the 2013 International Workshop on Principles of Software Evolution
To what extent can maintenance problems be predicted by code smell detection? - An empirical study
Information and Software Technology
Tuning research tools for scalability and performance: The NiCad experience
Science of Computer Programming
Active support for clone refactoring: a perspective
Proceedings of the 2013 ACM workshop on Workshop on refactoring tools
Coherent clusters in source code
Journal of Systems and Software
Genealogical insights into the facts and fictions of clone removal
ACM SIGAPP Applied Computing Review
Empirical Software Engineering
Hi-index | 0.00 |
Literature on the topic of code cloning often asserts that duplicating code within a software system is a bad practice, that it causes harm to the system's design and should be avoided. However, in our studies, we have found significant evidence that cloning is often used in a variety of ways as a principled engineering tool. For example, one way to evaluate possible new features for a system is to clone the affected subsystems and introduce the new features there, in a kind of sandbox testbed. As features mature and become stable within the experimental subsystems, they can be migrated incrementally into the stable code base; in this way, the risk of introducing instabilities in the stable version is minimized. This paper describes several patterns of cloning that we have observed in our case studies and discusses the advantages and disadvantages associated with using them. We also examine through a case study the frequencies of these clones in two medium-sized open source software systems, the Apache web server and the Gnumeric spreadsheet application. In this study, we found that as many as 71% of the clones could be considered to have a positive impact on the maintainability of the software system.