Fine-grained analysis of dependency cycles among classes

被引:2
作者
Feng, Qiong [1 ]
Mo, Ran [2 ]
机构
[1] Nanjing Univ Sci & Technol, Nanjing, Peoples R China
[2] Cent China Normal Univ, Wuhan, Peoples R China
基金
中国国家自然科学基金;
关键词
dependency cycle; untangling pattern;
D O I
10.1002/smr.2496
中图分类号
TP31 [计算机软件];
学科分类号
081202 ; 0835 ;
摘要
Dependency cycles have been claimed to incur negative impacts on software quality and make a system difficult to test, maintain, and reuse. Previous studies have investigated dependency cycles' evolution and proposed various methods to detect and break dependency cycles. While these studies provide valuable inputs for understanding dependency cycles, we do not know how developers address dependency cycles in their daily activities and whether dependency cycles' resolution follows certain patterns. Therefore, in this paper, using the data from 18 open-source projects, we extracted dependency cycles along with their changes from each commit and studied how dependency cycles evolved in a fine-grained level. Our results demonstrate that, 28.4% of dependency cycles have been continuously changing through different status: aggregating, breaking, newly-forming, and disappearing. Furthermore, we found that dependency cycles in different shapes present their specific evolution characteristics, for example, star and circle dependency cycles tend to preserve their original shape during aggregation or breaking. In addition, we discovered several recurring patterns that developers applied in fully breaking star and circle dependency cycles. We believe the recurring patterns we summarized have the potential to be automated in breaking dependency cycles in practice.
引用
收藏
页数:16
相关论文
共 17 条
[1]   On The Shape of Circular Dependencies in Java']Java Programs [J].
Al-Mutawa, Hussain A. ;
Dietrich, Jens ;
Marsland, Stephen ;
McCartin, Catherine .
2014 23RD AUSTRALASIAN SOFTWARE ENGINEERING CONFERENCE (ASWEC), 2013, :48-57
[2]   Marea: a Semi-Automatic Decision Support System for Breaking Dependency Cycles [J].
Caracciolo, Andrea ;
Aga, Bledar ;
Lungu, Mircea ;
Nierstrasz, Oscar .
2016 IEEE 23RD INTERNATIONAL CONFERENCE ON SOFTWARE ANALYSIS, EVOLUTION, AND REENGINEERING (SANER), VOL 1, 2016, :482-492
[3]   Investigating the Impact of Multiple Dependency Structures on Software Defects [J].
Cui, Di ;
Liu, Ting ;
Cai, Yuanfang ;
Zheng, Qinghua ;
Feng, Qiong ;
Jin, Wuxia ;
Guo, Jiaqi ;
Qu, Yu .
2019 IEEE/ACM 41ST INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE 2019), 2019, :584-595
[4]   Active Hotspot: An Issue-Oriented Model to Monitor Software Evolution and Degradation [J].
Feng, Qiong ;
Cai, Yuanfang ;
Kazman, Rick ;
Cui, Di ;
Liu, Ting ;
Fang, Hongzhou .
34TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE 2019), 2019, :986-997
[5]   Improving Software through Automatic Untangling of Cyclic Dependencies [J].
Goldstein, Maayan ;
Moshkovich, Dany .
36TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE COMPANION 2014), 2014, :155-164
[6]   How Does Regression Test Prioritization Perform in Real-World Software Evolution? [J].
Lu, Yafeng ;
Lou, Yiling ;
Cheng, Shiyang ;
Zhang, Lingming ;
Hao, Dan ;
Zhou, Yangfan ;
Zhang, Lu .
2016 IEEE/ACM 38TH INTERNATIONAL CONFERENCE ON SOFTWARE ENGINEERING (ICSE), 2016, :535-546
[7]   Architecture Anti-Patterns: Automatically Detectable Violations of Design Principles [J].
Mo, Ran ;
Cai, Yuanfang ;
Kazman, Rick ;
Xiao, Lu ;
Feng, Qiong .
IEEE TRANSACTIONS ON SOFTWARE ENGINEERING, 2021, 47 (05) :1008-1028
[8]  
Mo R, 2016, PROC INT CONF SOFTW, P499, DOI 10.1145/2884781.2884825
[9]   Hotspot Patterns: The Formal Definition and Automatic Detection of Architecture Smells [J].
Mo, Ran ;
Cai, Yuanfang ;
Kazman, Rick ;
Xiao, Lu .
2015 12TH WORKING IEEE/IFIP CONFERENCE ON SOFTWARE ARCHITECTURE (WICSA), 2015, :51-60
[10]  
Oyetoyan TD, 2015, PROC IEEE INT CONF S, P231, DOI 10.1109/ICSM.2015.7332469