Changes of Evaluation Values on Component Rank Model by Taking Code Clones into Consideration

There are many software systems that have been used and maintained for a long time. By undergoing such a maintenance process, similar code fragments were intentionally left in the source code of such software, and knowing how to manage a software system that contains a lot of similar code fragments becomes a major concern. In this study, we proposed a method to pick up components that were commonly used in similar code fragments from a target software system. This method was realized by using the component rank model and by checking the differences of evaluation values for each component before and after merging components that had similar code fragments. In many cases, components whose evaluation value had decreased would be used by both the components that were merged, so we considered that these components were commonly used in similar code fragments. Based on the proposed approach, we implemented a system to calculate differences of evaluation values for each component, and conducted three evaluation experiments to confirm that our method was useful for detecting components that were commonly used in similar code fragments, and to confirm how our method can help developers when developers add similar components. Based on the experimental results, we also discuss some improvement methods and provide the results from applications of these methods. key words: component rank, code clone, component graph, use relation

[1]  Shinji Kusumoto,et al.  On refactoring support based on code clone dependency relation , 2005, 11th IEEE International Software Metrics Symposium (METRICS'05).

[2]  Ioannis Stamelos,et al.  Towards Open Source Software System Architecture Recovery Using Design Metrics , 2011, 2011 15th Panhellenic Conference on Informatics.

[3]  Katsuro Inoue,et al.  Evaluation of Source Code Updates in Software Development Based on Component Rank , 2006, 2006 13th Asia Pacific Software Engineering Conference (APSEC'06).

[4]  Manishankar Mondal,et al.  Comparative stability of cloned and non-cloned code: an empirical study , 2012, SAC '12.

[5]  Shinji Kusumoto,et al.  Ranking significance of software components based on use relations , 2003, IEEE Transactions on Software Engineering.

[6]  Katsuro Inoue,et al.  Industrial application of clone change management system , 2012, 2012 6th International Workshop on Software Clones (IWSC).

[7]  Katsuro Inoue,et al.  Extensions of Component Rank Model by Taking into Account for Clone Relations , 2016, 2016 IEEE 23rd International Conference on Software Analysis, Evolution, and Reengineering (SANER).

[8]  Shinji Kusumoto,et al.  CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code , 2002, IEEE Trans. Software Eng..

[9]  Lei Sun,et al.  Object-oriented software architecture recovery using a new hybrid clustering algorithm , 2010, 2010 Seventh International Conference on Fuzzy Systems and Knowledge Discovery.

[10]  Charles W. Krueger,et al.  Software reuse , 1992, CSUR.

[11]  Giuliano Antoniol,et al.  Analyzing cloning evolution in the Linux kernel , 2002, Inf. Softw. Technol..

[12]  Mark Harman,et al.  Searching for better configurations: a rigorous approach to clone evaluation , 2013, ESEC/FSE 2013.