Exploring the Architectural Impact of Possible Dependencies in Python']Python Software

被引:10
作者
Jin, Wuxia [1 ,5 ,6 ]
Cai, Yuanfang [2 ]
Kazman, Rick [3 ]
Zhang, Gang [4 ]
Zheng, Qinghua [1 ]
Liu, Ting [1 ,5 ]
机构
[1] Xi An Jiao Tong Univ, Xian, Peoples R China
[2] Drexel Univ, Philadelphia, PA 19104 USA
[3] Univ Hawaii, Honolulu, HI 96822 USA
[4] Emergent Design Inc, Shanghai, Peoples R China
[5] Xi An Jiao Tong Univ, Key Lab Intelligent Networks & Network Secur MOEK, Minist Educ, Xian, Peoples R China
[6] Xi An Jiao Tong Univ, Sch Software Engn, Xian, Peoples R China
来源
2020 35TH IEEE/ACM INTERNATIONAL CONFERENCE ON AUTOMATED SOFTWARE ENGINEERING (ASE 2020) | 2020年
基金
美国国家科学基金会; 中国国家自然科学基金; 国家重点研发计划;
关键词
dynamic typing; possible dependency; software architecture; empirical study;
D O I
10.1145/3324884.3416619
中图分类号
TP [自动化技术、计算机技术];
学科分类号
0812 ;
摘要
Dependencies among software entities are the basis for many software analytic research and architecture analysis tools. Dynamically typed languages, such as Python, JavaScript and Ruby, tolerate the lack of explicit type references, making certain syntactic dependencies indiscernible in source code. We call these possible dependencies, in contrast with the explicit dependencies that are directly referenced in source code. Type inference techniques have been widely studied and applied, but existing architecture analytic research and tools have not taken possible dependencies into consideration. The fundamental question is, to what extent will these missing possible dependencies impact the architecture analysis? To answer this question, we conducted an empirical study with 105 Python projects, using type inference techniques to manifest possible dependencies. Our study revealed that the architectural impact of possible dependencies is substantial-higher than that of explicit dependencies: (1) file-level possible dependencies account for at least 27.93% of all file-level dependencies, and create different dependency structures than that of explicit dependencies only, with an average difference of 30.71%; (2) adding possible dependencies significantly improves the precision (0.52%similar to 14.18%), recall(31.73%similar to 39.12%), and F1 scores (22.13%similar to 32.09%) of capturing co-change relations; (3) on average, a file involved in possible dependencies influences 28% more files and 42% more dependencies within architectural sub-spaces than a file involved in just explicit dependencies; (4) on average, a file involved in possible dependencies consumes 32% more maintenance effort. Consequently, maintainability scores reported by existing tools make a system written in these dynamic languages appear to be better modularized than it actually is. This evidence strongly suggests that possible dependencies have a more significant impact than explicit dependencies on architecture quality, that architecture analysis and tools should assess and even emphasize the architectural impact of possible dependencies due to dynamic typing.
引用
收藏
页码:758 / 770
页数:13
相关论文
共 66 条
[1]  
Akerblom B., 2014, Proceedings of the 11th Working Conference on Mining Software Repositories, MSR 2014, P292
[2]  
Åkerblom B, 2016, ACM SIGPLAN NOTICES, V51, P114, DOI [10.1145/2936313.2816717, 10.1145/2816707.2816717]
[3]  
Andritsos P, 2004, LECT NOTES COMPUT SC, V2992, P123
[4]  
[Anonymous], 2003, Agile Software Development, Principles, Patterns, and Practices
[5]  
[Anonymous], 2020, ARCHDIA
[6]  
[Anonymous], 2020, LATTIX
[7]  
[Anonymous], 2020, MLTILANG DEPENDS
[8]  
[Anonymous], 2007, Proceedings of 22nd IEEE/ACM International Conference on Automated Software Engineering (ASE'07)
[9]  
[Anonymous], 2020, STRUCTURE101
[10]  
[Anonymous], 2020, SCITOOLS UNDERSTAND