Understanding Evolutionary Coupling by Fine-Grained Co-Change Relationship Analysis

Understanding Evolutionary Coupling by Fine-Grained Co-Change Relationship Analysis
复制标题

DOI:
10.1109/icpc.2019.00046
复制
发表时间:
2019-05
期刊:
2019 IEEE/ACM 27th International Conference on Program Comprehension (ICPC)
影响因子:
--
通讯作者:
Daihong Zhou;Yijian Wu;Lu Xiao;Yuanfang Cai;Xin Peng;Jinrong Fan;Lu Huang;Heng Chen
Daihong Zhou;Yijian Wu;Lu Xiao;Yuanfang Cai;Xin Peng;Jinrong Fan;Lu Huang;Heng Chen
中科院分区:
其他
文献类型:
--
作者:
Daihong Zhou;Yijian Wu;Lu Xiao;Yuanfang Cai;Xin Peng;Jinrong Fan;Lu Huang;Heng Chen

文献摘要

被引文献

相似文献

多个文件的频繁共同更改,即,演化耦合可以展示文件之间的活动关系,无论是显式的还是隐式的。虽然演化耦合已被用于分析软件质量,有没有系统的研究,文件之间的频繁的共同变化,可用于表征各种质量问题的分类。在本文中,我们报告了一个实证研究的27,087共同变更提交的6个开源系统的目的是了解所观察到的进化耦合。我们从版本控制系统中提取细粒度的变更信息,以研究两个文件是否表现出特定类型的共同变更关系。我们考虑5种类型的程序实体上的代码更改(即,字段、方法、控制语句、非控制语句和类),并确定了6种主要的共变关系。我们的手动分析表明,这6种类型中的每一种都可以用结构耦合、语义耦合或隐式依赖来解释。时间分析进一步表明,文件可能会表现出不同的协同变化关系,在不同的阶段,在演变的历史。最后,我们通过结合相关文件对之间的共同变更关系来研究多个文件之间的共同变更,并通过实例表明,嵌入在细粒度共同变更关系中的丰富信息可以帮助开发人员在多个位置更改代码。此外,我们分析了如何使用这些共同变化的关系类型,以促进变化的影响分析,并查明设计问题。
Frequent co-changes to multiple files, i.e., evolutionary coupling, can demonstrate active relations among files, explicit or implicit. Although evolutionary coupling has been used to analyze software quality, there is no systematic study on the categorization of frequent co-changes between files which may used for characterizing various quality problems. In this paper, we report an empirical study on 27,087 co-change commits of 6 open-source systems with the purpose of understanding the observed evolutionary coupling. We extracted fine-grained change information from version control system to investigate whether two files exhibit particular kinds of co-change relationships. We consider code changes on 5 types of program entities (i.e., field, method, control statement, non-control statement, and class) and identified 6 types of dominating co-change relationships. Our manual analysis showed that each of the 6 types can be explained by structural coupling, semantic coupling, or implicit dependencies. Temporal analysis further shows that files may exhibit different co-change relationships at different phases in the evolution history. Finally, we investigated co-changes among multiple files by combining co-change relationships between related file pairs and showed with live examples that rich information embedded in the fine-grained co-change relationships may help developers to change code at multiple locations. Moreover, we analyzed how these co-change relationship types can be used to facilitate change impact analysis and to pinpoint design problems.