当前位置: X-MOL 学术IEEE Trans. Softw. Eng. › 论文详情
Our official English website, www.x-mol.net, welcomes your feedback! (Note: you will need to create a separate account there.)
Evaluating the Impact of Possible Dependencies on Architecture-Level Maintainability
IEEE Transactions on Software Engineering ( IF 6.5 ) Pub Date : 4-29-2022 , DOI: 10.1109/tse.2022.3171288
Wuxia Jin 1 , Dinghong Zhong 1 , Yuanfang Cai 2 , Rick Kazman 3 , Ting Liu 4
Affiliation  

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.

中文翻译:


评估可能的依赖关系对架构级可维护性的影响



软件实体之间的依赖关系是许多软件架构分析和架构分析工具研究的基础。动态类型语言,例如 Python、JavaScript 和 Ruby,可以容忍缺乏显式类型引用,从而使得某些依赖关系无法通过源代码的纯粹语法分析来识别。我们将这些称为可能的依赖关系,与直接体现在源代码中的显式依赖关系相反。我们发现现有的架构分析工具没有考虑到可能的依赖关系。因此,一个重要的问题是:这些缺失的可能依赖关系会在多大程度上影响架构分析?为了回答这个问题,我们对 499 个开源 Python 项目进行了研究,采用类型推断技术和类型提示实践来辨别可能的依赖关系。我们研究了三个软件维护环境中可能的依赖关系的后果,包括捕获修订历史记录中记录的共同更改关系、测量架构可维护性以及检测违反设计原则和影响可维护性的架构反模式。我们的研究表明,可能的依赖关系对架构级可维护性的影响是巨大的——高于显式依赖关系。我们的研究结果表明,架构分析和工具应该考虑、评估和强调动态类型可能造成的依赖关系的影响。
更新日期:2024-08-28
down
wechat
bug