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: (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 have 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的原因、后果和方式。 包括73项研究在内的主要成果是:(1) AEr表现不仅通过建筑违规和结构问题,而且还在软件质量和软件演进过程中造成问题,(2) 造成AEr的的非技术原因应当与技术原因受到同样的关注,从业人员应当提高对AEr的严重后果的认识,从而采取行动解决AEr的相关问题,(3) 提出并采用一系列办法、工具和措施来发现和处理AEr,(4) 确定了处理AEr的三种困难和五类经验教训,使研究人员能够全面了解AEr和帮助从业人员处理AEr的操作,并提高其结构的可持续性。需要更多的实证研究,以调查工业中发现和处理AER的做法。