Browse > Article
http://dx.doi.org/10.3745/KTSDE.2014.3.2.65

A Technique to Detect Change-Coupled Files Using the Similarity of Change Types and Commit Time  

Kim, Jung Il (경북대학교 컴퓨터학부)
Lee, Eun Joo (경북대학교 컴퓨터학부)
Publication Information
KIPS Transactions on Software and Data Engineering / v.3, no.2, 2014 , pp. 65-72 More about this Journal
Abstract
Change coupling is a measure to show how strongly change-related two entities are. When two source files have been frequently changed together, they are regarded as change-coupled files and they will probably be changed together in the near future. In the previous studies, the change coupling between two files is defined with the number of common changed time, that is, common commit time of the files. However, the frequency-based technique has limitations because of 'tangled changes', which frequently happens in the development environments with version control systems. The tangled change means that several code hunks have been changed at the same time, though they have no relation with each other. In this paper, the change types of the code hunks are also used to define change coupling, in addition to the common commit time of target files. First, the frequency vector based on change types are defined with the extracted change types, and then, the similarity of change patterns are calculated using the cosine similarity measure. We conducted experiments on open source project Eclipse JDT and CDT for case studies. The result shows that the applicability of the proposed method, compared to the previous studies.
Keywords
Change Coupling; Source Code Repository Mining; Change Type Similarity;
Citations & Related Records
연도 인용수 순위
  • Reference
1 M. Steff and B. Russo, "Co-evolution of logical couplings and commits for defect estimation." In Proceedings of the 9th IEEE Working Conference on Mining Software Repositories, 2012, p.213, 216.
2 H. Kim and A. Zeller, "The impact of tangled code changes." In Proceedings of the 10th International Workshop on Mining Software Repositories. 2013, pp.121-130.
3 B. Fluri, M. Wursch, M. Pinzger and H. C. Gall. "Change distilling: Tree differencing for fine-grained source code change extraction." IEEE Transactions on Software Engineering, Vol.33. No.11, 2007, pp.725-743.   DOI   ScienceOn
4 M. Fischer, M. Pinzger and H. Gall, "Populating a release history database from version control and bug tracking systems." In Proceedings of IEEE International Conference on Software Maintenance, 2003, pp.23-32.
5 H. Gall, M. Jazayeri, R. Klosch and G. Trausmuth, "Software evolution observations based on product release history." In Proceedings of IEEE Software Maintenance, 1997, pp.160-166.
6 H. Kagdi, J. I. Maletic and B. Sharif, "Mining software repositories for traceability links." In Proceedings of 15th IEEE International Conference on Program Comprehension, 2007, p.145, 154.
7 B. Fluri, H. C. Gall, and M. Pinzger, "Fine-grained analysis of change couplings." In Proceedings of the 15th IEEE International Workshop on Source Code Analysis and Manipulation, 2005, pp.66-74.
8 R. Robbes and M Lanza, "A change-based approach to software evolution." Electronic Notes in Theoretical Computer Science, Vol.166, 2007, pp.93-109.   DOI   ScienceOn
9 R. Robbes, D. Pollet and M. Lanza, "Logical coupling based on fine-grained change information." In Proceeding of 15th Working Conference on Reverse Engineering, 2008, pp.42-46.
10 http://zorba.knu.ac.kr/research/MSR_Survey/overall_table.html
11 H. Gall, B. Fluri and M. Pinzger, "Change analysis with evolizer and changedistiller." IEEE Software Vol.26, No.1, pp.26-33, 2009.
12 J. Kim and E. Lee, "The Effect of IMPORT Change in Software Change History" In Proceedings of the 29th Symposium on Applied Computing, 2014. pp..(accepted)
13 P. N. Tan, M. Steinbach and V. Kumar, "Introduction to Data Mining." 1st ed., Addison Wesley, 2006.
14 G. Antoniol, V. F. Rollo and G. Venturi, "Detecting groups of co-changing files in CVS repositories." In Proceedings of the 8th International Workshop on Principles of Software Evolution, 2005, pp.23-32.
15 H. Gall, M. Jazayeri and J. Krajewski, "CVS release history data for detecting logical couplings." In Proceedings of the 6th International Workshop on Software Evolution, 2003, pp.13-23.
16 H. C. Gall, K. Hajek and M. Jazayeri, "Detection of logical coupling based on product release history." In Proceedings of the IEEE Software Maintenance, 1998, pp.190-198.
17 T. Zimmermann, P. Weilbgerber, S. Diehl and A. Zeller, "Mining version histories to guide software changes." IEEE Transactions on Software Engineering, Vol.31, No.6, 2005, pp.429-445.   DOI   ScienceOn
18 J. Han, J. Pei and Y. Yin, "Mining frequent patterns without candidate generation." In Proceeding of the 2000 ACM SIGMOD international conference on Management of data, 2000, pp.1-12.
19 A.T.T. Ying, G.C. Murphy, and R. Ng, and M.C. Chu-Carroll, "Predicting source code changes by mining change history." IEEE Transactions on Software Engineering, Vol.30, No.9, pp.574-586, 2004.   DOI
20 S. Bouktif, Y. Gueheneuc and G. Antoniol, "Extracting change-patterns from cvs repositories." In Proceedings of the 13th Working Conference on Reverse Engineering, 2006, pp.221-230.
21 Z. Xing, and S. Eleni, "Understanding class evolution in object-oriented software." In Proceedings of the 2th IEEE International Workshop on Program Comprehension, 2004, pp.34-43.
22 B. Livshits and T. Zimmermann, "DynaMine: finding common error patterns by mining software revision histories." In Proceedings of the 10th European software engineering conference on Software Engineering, 2005, pp.296-305.
23 D. Jr, R. Michael, "Predicting software change coupling." Ph.D. dissertation, University of Drexel, 2008.
24 B. Fluri and H. C. Gall, "Classifying change types for qualifying change couplings." In Proceedings of the 14th IEEE International Conference on Program Comprehension, 2006, pp.35-45.
25 B. Fluri, G. Emanuel and H. C. Gall, "Discovering patterns of change types." In Proceedings of 23rd IEEE/ACM International Conference on Automated Software Engineering, 2008, pp.463-466.