Technical debt occurs in many different forms across software artifacts. One such form is connected to software architectures where debt emerges in the form of structural anti-patterns across architecture elements, namely, architecture smells. As defined in the literature, ``Architecture smells are recurrent architectural decisions that negatively impact internal system quality", thus increasing technical debt. In this paper, we aim at exploring whether there exist manifestations of architectural technical debt beyond decreased code or architectural quality, namely, whether there is a relation between architecture smells (which primarily reflect structural characteristics) and the occurrence of concurrency bugs (which primarily manifest at runtime). We study 125 releases of 5 large data-intensive software systems to reveal that (1) several architecture smells may in fact indicate the presence of concurrency problems likely to manifest at runtime but (2) smells are not correlated with concurrency in general -- rather, for specific concurrency bugs they must be combined with an accompanying articulation of specific project characteristics such as project distribution. As an example, a cyclic dependency could be present in the code, but the specific execution-flow could be never executed at runtime.
翻译:技术债务以多种形式存在于软件制品中。其中一种形式与软件架构相关,表现为跨架构元素的结构性反模式,即架构异味。正如文献所述,“架构异味是对系统内部质量产生负面影响的重复性架构决策”,从而增加技术债务。本文旨在探索架构技术债务是否不仅限于降低代码或架构质量,即探究架构异味(主要反映结构特征)与并发错误(主要体现于运行时行为)之间是否存在关联。通过对5个大型数据密集型软件系统的125个版本进行研究,我们发现:(1) 某些架构异味实际上可能暗示存在运行时易暴露的并发问题;(2) 但总体而言,异味与并发性并不相关——相反,对于特定并发错误,异味必须结合具体项目特征(如项目分布)才能产生关联。例如,代码中可能存在循环依赖,但其特定的执行流可能在运行时从未被触发。