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)异味并不总是与并发相关-对于特定的并发缺陷,它们必须与特定项目特征(如项目分布)相结合。例如,代码中可能存在循环依赖,但具体的执行流程可能在运行时永远不会被执行。