Architecture erosion (AEr) can adversely affect software development and has received significant attention in the last decade. However, there is an absence of a comprehensive understanding of the state of research about the reasons and consequences of AEr, and the countermeasures to address AEr. This work aims at systematically investigating, identifying, and analyzing the reasons, consequences, and ways of detecting and handling AEr. With 73 studies included, the main results are as follows: (1) AEr manifests not only through architectural violations and structural issues but also causing problems in software quality and during software evolution; (2) non-technical reasons that cause AEr should receive the same attention as technical reasons, and practitioners should raise awareness of the grave consequences of AEr, thereby taking actions to tackle AEr-related issues; (3) a spectrum of approaches, tools, and measures has been proposed and employed to detect and tackle AEr; and (4) three categories of difficulties and five categories of lessons learned on tackling AEr were identified. The results can provide researchers a comprehensive understanding of AEr and help practitioners handle AEr and improve the sustainability of their architecture. More empirical studies are required to investigate the practices of detecting and addressing AEr in industrial settings.
翻译:建筑侵蚀(AEr)可能会对软件开发产生不利影响,并在过去十年中受到高度重视;然而,对AEr的原因和后果的研究状况以及针对AEr的对策缺乏全面了解,这项工作旨在系统调查、查明和分析发现和处理AEr的原因、后果和方式。 包括73项研究,主要结果如下:(1) AEr不仅通过建筑违规和结构问题表现出来,而且还在软件质量和软件演进过程中造成问题;(2) 造成AEr的非技术原因应当与技术原因受到同样的关注,从业人员应当提高对AEr的严重后果的认识,从而采取行动解决与AEr有关的问题;(3) 已经提出并采用一系列办法、工具和措施来发现和处理AEr;(4) 确定了处理AEr的三类困难和五类经验教训,使研究人员能够全面了解AEr和帮助从业人员处理AEr的操作,并提高其结构的可持续性。需要开展更多的实证研究,以调查工业环境中的探测和处理做法。