Repository logo

Understanding the Evolution of Code Clones in Software Systems

dc.contributor.advisorSchneider, Kevin A.en_US
dc.contributor.committeeMemberMcCalla, Gorden_US
dc.contributor.committeeMemberRoy, Chanchal K.en_US
dc.contributor.committeeMemberWahid, Khan A.en_US
dc.creatorSaha, Avigiten_US 2013en_US
dc.description.abstractCode cloning is a common practice in software development. However, code cloning has both positive aspects such as accelerating the development process and negative aspects such as causing code bloat. After a decade of active research, it is clear that removing all of the clones from a software system is not desirable. Therefore, it is better to manage clones than to remove them. A software system can have thousands of clones in it, which may serve multiple purposes. However, some of the clones may cause unwanted management difficulties and clones like these should be refactored. Failure to manage clones may cause inconsistencies in the code, which is prone to error. Managing thousands of clones manually would be a difficult task. A clone management system can help manage clones and find patterns of how clones evolve during the evolution of a software system. In this research, we propose a framework for constructing and visualizing clone genealogies with change patterns (e.g., inconsistent changes), bug information, developer information and several other important metrics in a software system. Based on the framework we design and build an interactive prototype for a multi-touch surface (e.g., an iPad). The prototype uses a variety of techniques to support understanding clone genealogies, including: identifying and providing a compact overview of the clone genealogies along with their key characteristics; providing interactive navigation of genealogies, cloned source code and the differences between clone fragments; providing the ability to filter and organize genealogies based on their properties; providing a feature for annotating clone fragments with comments to aid future review; and providing the ability to contact developers from within the system to find out more information about specific clones. To investigate the suitability of the framework and prototype for investigating and managing cloned code, we elicit feedback from practicing researchers and developers, and we conduct two empirical studies: a detailed investigation into the evolution of function clones and a detailed investigation into how clones contribute to bugs. In both empirical studies we are able to use the prototype to quickly investigate the cloned source code to gain insights into clone use. We believe that the clone management system and the findings will play an important role in future studies and in managing code clones in software systems.en_US
dc.subjectsoftware maintenance, code clones, clone evolution, clone management, clone visualization, bugen_US
dc.titleUnderstanding the Evolution of Code Clones in Software Systemsen_US
dc.type.materialtexten_US Scienceen_US Scienceen_US of Saskatchewanen_US of Science (M.Sc.)en_US


Original bundle
Now showing 1 - 1 of 1
Thumbnail Image
7.71 MB
Adobe Portable Document Format
License bundle
Now showing 1 - 1 of 1
No Thumbnail Available
1004 B
Plain Text