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
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
A Study of Consistent and Inconsistent Changes to Code Clones
WCRE '07 Proceedings of the 14th Working Conference on Reverse Engineering
ICPC '08 Proceedings of the 2008 The 16th IEEE International Conference on Program Comprehension
"Cloning considered harmful" considered harmful: patterns of cloning in software
Empirical Software Engineering
A Mutation/Injection-Based Automatic Framework for Evaluating Code Clone Detection Tools
ICSTW '09 Proceedings of the IEEE International Conference on Software Testing, Verification, and Validation Workshops
ICSE '09 Proceedings of the 31st International Conference on Software Engineering
An empirical study on the maintenance of source code clones
Empirical Software Engineering
Proceedings of the 4th International Workshop on Software Clones
Proceedings of the Joint ERCIM Workshop on Software Evolution (EVOL) and International Workshop on Principles of Software Evolution (IWPSE)
Evaluating Code Clone Genealogies at Release Level: An Empirical Study
SCAM '10 Proceedings of the 2010 10th IEEE Working Conference on Source Code Analysis and Manipulation
CSMR '11 Proceedings of the 2011 15th European Conference on Software Maintenance and Reengineering
Is cloned code older than non-cloned code?
Proceedings of the 5th International Workshop on Software Clones
ICPC '11 Proceedings of the 2011 IEEE 19th International Conference on Program Comprehension
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
Evaluating the conventional wisdom in clone removal: a genealogy-based empirical study
Proceedings of the 28th Annual ACM Symposium on Applied Computing
On the relationships between domain-based coupling and code clones: an exploratory study
Proceedings of the 2013 International Conference on Software Engineering
Searching for better configurations: a rigorous approach to clone evaluation
Proceedings of the 2013 9th Joint Meeting on Foundations of Software Engineering
SPAPE: A semantic-preserving amorphous procedure extraction method for near-miss clones
Journal of Systems and Software
Genealogical insights into the facts and fictions of clone removal
ACM SIGAPP Applied Computing Review
Hi-index | 0.00 |
Code cloning is a controversial software engineering practice due to contradictory claims regarding its effect on software maintenance. Code stability is a recently introduced measurement technique that has been used to determine the impact of code cloning by quantifying the changeability of a code region. Although most of the existing stability analysis studies agree that cloned code is more stable than non-cloned code, the studies have two major flaws: (i) each study only considered a single stability measurement (e.g., lines of code changed, frequency of change, age of change); and, (ii) only a small number of subject systems were analyzed and these were of limited variety. In this paper, we present a comprehensive empirical study on code stability using three different stability measuring methods. We use a recently introduced hybrid clone detection tool, NiCAD, to detect the clones and analyze their stability in four dimensions: by clone type, by measuring method, by programming language, and by system size and age. Our four-dimensional investigation on 12 diverse subject systems written in three programming languages considering three clone types reveals that: (i) Type-1 and Type-2 clones are unstable, but Type-3 clones are not; (ii) clones in Java and C systems are not as stable as clones in C# systems; (iii) a system's development strategy might play a key role in defining its comparative code stability scenario; and, (iv) cloned and non-cloned regions of a subject system do not follow a consistent change pattern.