Skip to Main Content
It is useful to study the evolution of code clones to better understand the nature, effects, and reasons of cloning. There are different approaches that investigate multiple versions of a program and detect patterns in the evolution of clones. The shortcomings of these methods are that they require significant computational effort, are limited to detecting predefined patterns and are mostly based on heuristics. This paper presents an approach that models clone evolution based on the source code changes that were made between consecutive program versions. Instead of relating clone classes by predefined patterns, the focus is on how individual cloned fragments evolve. The model has been used to analyze different aspects of type-1 clone evolution in nine open-source systems. The empirical results show that the ratio of clones decreased in the majority of the systems and cloned fragments survived more than a year on average. It was found that -- depending on the system -- either consistent or inconsistent changes to clone classes were more frequent. Overall, the peculiarity of clone evolution is significantly different for each system, making general conclusions difficult.