icsa 2018 https://ieeexplore.ieee.org/document/8417122

背景

设计和维护软件系统的架构通常涉及做出大量设计决策,每一个都可能影响系统的功能和非功能特性。 一般来说,这些设计决策很少的记录下来,该文提出了一种技术RecovAr,可以从source code
issue repositories自动恢复设计决策。
另外,本文更倾向于揭露出导致做出该架构决策的原因,而不是该架构决策本身

方法设计

Change Analysis

算法设计
Recovering Architectural Design Decisions - 图1

Architectural A 表示项目的版本n
Architectural B表示项目的版本n+1
Architectural A和B表示该项目存在架构变更的两个版本。
椭圆表示项目的一个模块,菱形表示子模块或实体类,直线表示该演化方向的cost

Recovering Architectural Design Decisions - 图2

Mapping

构建issue 与 演化实体的映射。
Recovering Architectural Design Decisions - 图3

Decision Extraction

Recovering Architectural Design Decisions - 图4

如果一个问题会影响该架构决策的变化(即结果),则该问题包含做出该项目决策的理由。

实验评估

数据集 : Hadoop , Struts
Recovering Architectural Design Decisions - 图5
依赖的架构恢复技术
ACDC : Algorithm for Comprehension-Driven Clustering ARC : Architecture Recovery using Concerns

Applicability

Recovering Architectural Design Decisions - 图6

只有大约 18% 的 Hadoop 和 6% 的 Struts 的issue对架构产生了重大影响,因此被视为设计决策的一部分。
因此,这项技术对于评估软件的演化是很有必要的.

Precision

Recovering Architectural Design Decisions - 图7

Recall

Recovering Architectural Design Decisions - 图8

cleanup
与系统集成并单独发展的现成组件中发生架构变化,比如第三方库,Spring Framework,JDK等。孤立提交。(1)存在问题但未添加到issue,(2)issue中人为造成的错误,比如错误的指定了收 到影响的版本等。