Recovering Architectural Design Decisions

Recovering Architectural Design Decisions
复制标题

DOI:
10.1109/icsa.2018.00019
复制
发表时间:
2018-04
期刊:
2018 IEEE International Conference on Software Architecture (ICSA)
影响因子:
--
通讯作者:
Arman Shahbazian;Youn Kyu Lee;D. Le;Yuriy Brun;N. Medvidović
Arman Shahbazian;Youn Kyu Lee;D. Le;Yuriy Brun;N. Medvidović
中科院分区:
其他
文献类型:
--
作者:
Arman Shahbazian;Youn Kyu Lee;D. Le;Yuriy Brun;N. Medvidović

文献摘要

相似文献

设计和维护一个软件系统的架构通常涉及到许多设计决策,每一个都可能影响系统的功能和非功能属性。理解这些设计决策有助于为未来的决策和实现选择提供信息,并可以避免以后引入回归和架构效率低下。不幸的是,设计决策很少被很好地记录下来,并且通常是架构创建和维护过程中丢失的工件。因此,这些信息的丢失可能会损害发展。为了解决这个缺点,我们开发RecovAr,一种自动恢复设计决策的技术,从项目的现成的历史文物,如问题跟踪器和版本控制存储库。RecovAr在一系列版本控制提交上使用最先进的架构恢复技术,并将这些提交映射到问题,以确定影响系统架构的决策。虽然在这个过程中仍然可能会丢失一些决策,但我们对Hadoop和Struts的评估显示,RecovAr的召回率为75%,准确率为77%,这两个大型开源系统的开发时间都超过了8年,平均代码超过100万行。我们的工作正式定义了架构设计决策,并开发了一种在项目历史中跟踪此类决策的方法。此外,这项工作引入了方法来分类决策是否是架构性的,并将决策映射到代码元素。最后,我们的工作有助于一种方法,工程师可以遵循,以保持他们的项目中的设计决策知识。
Designing and maintaining a software system’s architecture typically involve making numerous design decisions, each potentially affecting the system’s functional and nonfunctional properties. Understanding these design decisions can help inform future decisions and implementation choices and can avoid introducing regressions and architectural inefficiencies later. Unfortunately, design decisions are rarely well documented and are typically a lost artifact of the architecture creation and maintenance process. The loss of this information can thus hurt development. To address this shortcoming, we develop RecovAr, a technique for automatically recovering design decisions from the project’s readily available history artifacts, such as an issue tracker and version control repository. RecovAr uses state-of-the-art architectural recovery techniques on a series of version control commits and maps those commits to issues to identify decisions that affect system architecture. While some decisions can still be lost through this process, our evaluation on Hadoop and Struts, two large open-source systems with over 8 years of development each and, on average, more than 1 million lines of code, shows that RecovAr has the recall of 75% and a precision of 77%. Our work formally defines architectural design decisions and develops an approach for tracing such decisions in project histories. Additionally, the work introduces methods to classify whether decisions are architectural and to map decisions to code elements. Finally, our work contributes a methodology engineers can follow to preserve design-decision knowledge in their projects.