Evaluating the Impact of Possible Dependencies on Architecture-Level Maintainability

Evaluating the Impact of Possible Dependencies on Architecture-Level Maintainability
复制标题

DOI:
10.1109/tse.2022.3171288
复制
发表时间:
2023-03
影响因子:
7.4
通讯作者:
Wuxia Jin;Dinghong Zhong;Yuanfang Cai;R. Kazman;Ting Liu
Wuxia Jin;Dinghong Zhong;Yuanfang Cai;R. Kazman;Ting Liu
中科院分区:
计算机科学1区
文献类型:
--
作者:
Wuxia Jin;Dinghong Zhong;Yuanfang Cai;R. Kazman;Ting Liu

文献摘要

相似文献

软件实体之间的依赖性是关于软件架构分析和体系结构分析工具的大部分研究的基础源代码。缺少可能的依赖性影响体系结构分析?为了回答这个问题,我们对499个开源Python项目进行了研究,采用类型推理技术和类型的提示实践来辨别可能的依赖性。包括捕获修订历史记录的共同关系,衡量建筑维护,并检测违反设计原理和影响维护的建筑反平底,表明可能的依赖性对建筑级别维护的影响比较重要 - 比明确的依赖项。
Dependencies among software entities are the foundation for much of the research on software architecture analysis and architecture analysis tools. Dynamically typed languages, such as Python, JavaScript and Ruby, tolerate the lack of explicit type references, making certain dependencies indiscernible by a purely syntactic analysis of source code. We call these possible dependencies, in contrast with the explicit dependencies that are directly manifested in source code. We find that existing architecture analysis tools have not taken possible dependencies into consideration. An important question therefore is: to what extent will these missing possible dependencies impact architecture analysis?To answer this question, we conducted a study of 499 open-source Python projects, employing type inference techniques and type hint practices to discern possible dependencies. We investigated the consequences of possible dependencies in three software maintenance contexts, including capturing co-change relations recorded in revision history, measuring architectural maintainability, and detecting architecture anti-patterns that violate design principles and impact maintainability. Our study revealed that the impact of possible dependencies on architecture-level maintainability is substantial—higher than that of explicit dependencies. Our findings suggest that architecture analysis and tools should take into account, assess, and highlight the impacts of possible dependencies caused by dynamic typing.