TY - GEN
T1 - Understanding evolutionary coupling by fine-grained co-change relationship analysis
AU - Zhou, Daihong
AU - Wu, Yijian
AU - Xiao, Lu
AU - Cai, Yuanfang
AU - Peng, Xin
AU - Fan, Jinrong
AU - Huang, Lu
AU - Chen, Heng
N1 - Publisher Copyright:
© 2019 IEEE.
PY - 2019/5
Y1 - 2019/5
N2 - 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.
AB - 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.
KW - Change Types
KW - Co-change Analysis
KW - Co-change Relationship
KW - Empirical Study
KW - Evolutionary Coupling
UR - http://www.scopus.com/inward/record.url?scp=85072325334&partnerID=8YFLogxK
UR - http://www.scopus.com/inward/citedby.url?scp=85072325334&partnerID=8YFLogxK
U2 - 10.1109/ICPC.2019.00046
DO - 10.1109/ICPC.2019.00046
M3 - Conference contribution
AN - SCOPUS:85072325334
T3 - IEEE International Conference on Program Comprehension
SP - 271
EP - 282
BT - Proceedings - 2019 IEEE/ACM 27th International Conference on Program Comprehension, ICPC 2019
T2 - 27th IEEE/ACM International Conference on Program Comprehension, ICPC 2019
Y2 - 25 May 2019
ER -