본문 바로가기
KERD
논문KCI 등재

변경 유형의 유사도 및 커밋 시간을 이용한 파일 변경 결합도

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

0

조회

0

다운로드

0

인용

0

참고문헌

키워드

주제분류컴퓨터학

초록

변경 결합도는 두 요소들 사이의 향후 변경 연관성을 알려준다. 만약, 소스 파일들이 자주 함께 변경된다면, 그 소스 파일들의 변경 결합도는 높다고 볼 수 있으며, 나중에 다시 함께 변경될 확률이 높다. 일반적으로 소스 파일들 사이의 변경 결합도는 공통 변경 횟수에 기반하여 정의되었다. 그런데 연관성이 낮은 변경들이 일괄적으로 함께 커밋되는 경우, 즉 뒤얽힌 변경(tangled change)과 같은 경우들이 빈번히 발생한다. 따라서 함께 변경된 횟수만으로 소스 파일의 변경 결합도를 결정하는 것은 한계가 있다. 본 논문에서는 기존의 방법을 보완하기 위해, 소스 파일의 변경 시간뿐 아니라 소스 코드 변경 유형의 유사성을 함께 고려하는 것을 제안하였다. 이를 위하여, 우선 추출된 변경 유형 정보를 이용하여 변경 유형 빈도 벡터를 정의하고, 다음에 코사인 유사도 측정을 통해서 각 소스 파일 버전에서 적용된 코드 변경 유사성을 계산한다. 이후 Eclipse 프로젝트인 JDT와 CDT에 대한 사례 연구를 통해 제안된 방법의 효용성을 보였다.

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.

참고문헌 (25)

  1. H. C. Gall, "Detection of logical coupling based on product release history", In Proceedings of the IEEE Software Maintenance, pp.190~198 (1998)
  2. T. Zimmermann, "Mining version histories to guide software changes", IEEE Transactions on Software Engineering, 31(6), pp.429~445 (2005)
  3. H. Gall, "CVS release history data for detecting logical couplings", In Proceedings of the 6th International Workshop on Software Evolution, pp.13~23 (2003)
  4. M. Steff, "Co-evolution of logical couplings and commits for defect estimation", In Proceedings of the 9th IEEE Working Conference on Mining Software Repositories, pp.213~216 (2012)
  5. H. Kim, "The impact of tangled code changes", In Proceedings of the 10th International Workshop on Mining Software Repositories, pp.121~130 (2013)
  6. B. Fluri, "Change distilling: Tree differencing for fine-grained source code change extraction", IEEE Transactions on Software Engineering, 33(11), pp.725~743 (2007)
  7. M. Fischer, "Populating a release history database from version control and bug tracking systems", In Proceedings of IEEE International Conference on Software Maintenance, pp.23~32 (2003)
  8. H. Gall, "evolution observations based on product release history", In Proceedings of IEEE Software Maintenance, pp.160~166 (1997)
  9. H. Kagdi, "Mining software repositories for traceability links", In Proceedings of 15th IEEE International Conference on Program Comprehension, pp.145~154 (2007)
  10. B. Fluri, "Fine-grained analysis of change couplings", In Proceedings of the 15th IEEE International Workshop on Source Code Analysis and Manipulation, pp.66~74 (2005)
  11. R. Robbes, "A change-based approach to software evolution", Electronic Notes in Theoretical Computer Science, 166, pp.93~109 (2007)
  12. R. Robbes, "Logical coupling based on fine-grained change information", In Proceeding of 15th Working Conference on Reverse Engineering, pp.42~46 (2008)
  13. J. Han, "Mining frequent patterns without candidate generation", In Proceeding of the 2000 ACM SIGMOD international conference on Management of data, pp.1~12 (2000)
  14. A.T.T. Ying, "Predicting source code changes by mining change history", IEEE Transactions on Software Engineering, 30(9), pp.574~586 (2004)
  15. G. Antoniol, "Detecting groups of co-changing files in CVS repositories.", In Proceedings of the 8th International Workshop on Principles of Software Evolution, pp.23~32 (2005)
  16. S. Bouktif, "Extracting change-patterns from cvs repositories", In Proceedings of the 13th Working Conference on Reverse Engineering, pp.221~230 (2006)
  17. Z. Xing, "Understanding class evolution in object-oriented software", In Proceedings of the 2th IEEE International Workshop on Program Comprehension, pp.34~43 (2004)
  18. B. Livshits, "DynaMine: finding common error patterns by mining software revision histories", In Proceedings of the 10th European software engineering conference on Software Engineering, pp.296~305 (2005)
  19. Jr, R. Michael, "Predicting software change coupling", 박사, pp.2008
  20. B. Fluri, "Classifying change types for qualifying change couplings", In Proceedings of the 14th IEEE International Conference on Program Comprehension, pp.35~45 (2006)
  21. B. Fluri, "Discovering patterns of change types", In Proceedings of 23rd IEEE, 2008, 463~466
  22. H. Gall, "Change analysis with evolizer and changedistiller", IEEE Software, 26(1), pp.26~33 (2009)
  23. J. Kim, "The Effect of IMPORT Change in Software Change History", In Proceedings of the 29th Symposium on Applied Computing (2014)
  24. P. N. Tan, "Introduction to Data Mining" (2006), Addison Wesley

관련 논문AI추천

이 간행물의 다른 논문 (6건)