Table of Contents
Advances in Software Engineering
Volume 2015, Article ID 829389, 18 pages
Research Article

Classifying Obstructive and Nonobstructive Code Clones of Type I Using Simplified Classification Scheme: A Case Study

1Computer Science and Engineering, University of Gothenburg, 412 96 Gothenburg, Sweden
2Ericsson SW Research, Ericsson AB, 412 96 Gothenburg, Sweden
3Ericsson AB, 412 96 Gothenburg, Sweden
4Business Region Göteborg AB, 412 96 Gothenburg, Sweden

Received 4 September 2015; Revised 13 November 2015; Accepted 18 November 2015

Academic Editor: Nicholas A. Kraft

Copyright © 2015 Miroslaw Staron et al. This is an open access article distributed under the Creative Commons Attribution License, which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly cited.


Code cloning is a part of many commercial and open source development products. Multiple methods for detecting code clones have been developed and finding the clones is often used in modern quality assurance tools in industry. There is no consensus whether the detected clones are negative for the product and therefore the detected clones are often left unmanaged in the product code base. In this paper we investigate how obstructive code clones of Type I (duplicated exact code fragments) are in large software systems from the perspective of the quality of the product after the release. We conduct a case study at Ericsson and three of its large products, which handle mobile data traffic. We show how to use automated analogy-based classification to decrease the classification effort required to determine whether a clone pair should be refactored or remain untouched. The automated method allows classifying 96% of Type I clones (both algorithms and data declarations) leaving the remaining 4% for the manual classification. The results show that cloning is common in the studied commercial software, but that only 1% of these clones are potentially obstructive and can jeopardize the quality of the product if left unmanaged.