Two mutually exclusive requirements exist for the software development process nowadays: software must be developed fast and have a high level of quality. Developers tend to use existing source code fragments, providing some functionality, to speed up the development process. Source code fragments utilized in this way are called «source code clones». Although the usage of code clones leads to short-term advantages, in long-term prespective it results in increasing complexity and costs of software maintenance and support. This leads to the need to change all occurrencies of cloned instances and subsequent testing of all cases where these instances were used. Complexity of this task increases with source code size growth.
In last years a big amount of research has been done in software development area in order to speed up the development process of high quality software. Two specific areas can be viewed in context of the given paper: «Source Code Clone Detection» and «Source Code Clone Analysis and Management».
This paper is a survey of source code clones elimination methods and approaches developed during last years. First, we briefly highlight main reasons of why source code clones exist and their negative impact on software quality. Second, we review existing methods and approaches developed for clones elimination and provide classification, analysis of advantages and disadvantages. Third, we list exisiting tools and analyze their applicability for industrial software systems. Fourth, we highlight possible future directions for research and implementation of source code clones elimitation methods.