Software systems emboby a high degree of redundant source code emerging by the duplication of existing code. Redundancy increases the extend of software, makes it neccessary to repeatedly compare the copies on changes and increases the maintenance efforts. Defects in the original code may be copied to other locations and have to be removed several times when they are detected. Refactorings or the addition of new functionality has to be repeated for all copies. Most often duplication happens ad hoc so that there is no documentation on where the duplicates are located. A programmer can rarly be sure if he applied his changes to all copies.
The aim for detecting, avoiding and dealing with redundancies gave the implulse for a series of studies. The focus of this research lies in the search for similar program fragments. But there are only few conclusions based on empirical studies that explain the reasons and consequences of redundancies.
In this project we perform empirical studies on how duplicates evolve over multiple versions of a software system. We will focus on the reasons for their appearence and the consequences that arise from their existence in the source code. The conclusions will help us to design and implement tools to support the programmer to find, rate, follow and remove clones as well as perfoming consistent changes to all fragments.
Period: July 2008 - Mid 2013