As software systems evolve, their architecture is meant to adapt accordingly by following the changes in requirements, the environment, and the implementation. However, in practice, the evolving system often deviates from the architecture, causing severe consequences to system maintenance and evolution. This phenomenon of architecture erosion has been studied extensively in research, but not yet been examined from the point of view of developers. In this exploratory study, we look into how developers perceive the notion of architecture erosion, its causes and consequences, as well as tools and practices to identify and control architecture erosion. To this end, we searched through several popular online developer communities for collecting data of discussions related to architecture erosion. Besides, we identified developers involved in these discussions and conducted a survey with 10 participants and held interviews with 4 participants. Our findings show that: (1) developers either focus on the structural manifestation of architecture erosion or on its effect on run-time qualities, maintenance and evolution; (2) alongside technical factors, architecture erosion is caused to a large extent by non-technical factors; (3) despite the lack of dedicated tools for detecting architecture erosion, developers usually identify erosion through a number of symptoms; and (4) there are effective measures that can help to alleviate the impact of architecture erosion.
翻译:随着软件系统的发展,它们的建筑将随着要求、环境和实施的变化而相应调整,然而,实际上,不断演变的系统往往偏离结构,对系统维护和演变产生严重后果。这种结构侵蚀现象已在研究中进行了广泛研究,但尚未从开发者的角度加以研究。在这项探索性研究中,我们研究开发者如何看待结构侵蚀的概念、其原因和后果,以及查明和控制结构侵蚀的工具和做法。为此目的,我们通过几个受欢迎的在线开发者社区,收集与结构侵蚀有关的讨论数据。此外,我们查明了参与这些讨论的开发者,对10名参与者进行了调查,并与4名参与者进行了访谈。我们的调查结果表明:(1) 开发者要么侧重于结构侵蚀的结构表现,要么侧重于其对运行时间质量、维护和演变的影响;(2) 与技术因素一道,建筑侵蚀在很大程度上是由非技术因素造成的;(3) 尽管缺乏专门工具来探测结构侵蚀,但开发者通常通过若干症状来查明侵蚀情况;(4) 有有效措施可以帮助减轻结构侵蚀的影响。