Page 197 - 《软件学报》2026年第5期
P. 197
2076 软件学报 2026 年第 37 卷第 5 期
试集上的平均排名. 在本文中, 12 种方法的平均排名如图 9 所示, 其相应的 P 值 (显著性水平) 均远小于 0.05, 这表
明我们的结果拒绝原假设 (不同方法之间没有差异), 即这些方法之间存在显著差异. 由于一个方法具有较大的
Recall 值, 表示该方法性能越好. 在根据 Recall 值对不同方法进行排名时, Friedman 检验将为较好的方法分配较小
的排名值 (Rank 值). 从图 9 可知, CDAG 在 3 种不同的耦合类型赋权方式下, 均排在第 1, 即 CDAG 取得了最好的
整体性能.
12 12 12
11 11 11
10 10 10
9 9 9
8 8 8
Rank 7 Rank 7 Rank 7
6
6 6
5
5 5
4
4 4
3
3 3
2
2 2
0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16 0 2 4 6 8 10 12 14 16
k (%) k (%) k (%)
(a) DWM (b) OWM (c) EWM
a-index PageRankBR PageRank ICOOK h-index k-core
PageRankIVOL ElementRank Pride MinClass iFit CDAG
图 9 12 种方法在不同赋权方式下的平均排名 (Rank@top-k, k 为百分比形式)
根据 Friedman 检验的结果, 我们可以得出结论: 在检查不超过前 15% 的节点时, CDAG 从整体而言显著优于
其他方法.
RQ2: 在检查不超过 top-25 的节点时, CDAG 是否比现有方法更有效?
尽管现有工作中普遍采用 15% 作为阈值, 但是对于一些规模比较大的系统, 返回前 15% 的类作为候选关键
类, 仍然可能包含过多的非关键类. 例如, PDFBox 包含 1 318 个类 (如表 3 所示), 返回前 15% 的类将得到将近 198
个类作为候选关键类, 然而该系统实际包含 12 个真正的关键类. 因此, 198 个候选关键类中 93.9% 都是非关键类.
在本节中, 我们关注阈值 k 取值 1–25 (步长为 1) 时的情况 (即将软件中 top-k 的类视为候选关键类), 以检验各个方
法在仅检查极少的类时的性能. 图 10–图 12 所示的是我们的方法 CDAG 及 11 种对比方法在 8 个软件、25 个阈
值上取得的结果 (Recall 值).
1.0 1.0 1.0 1.0
0.9
0.8 0.8 0.8 0.8
0.7
0.6 0.6 0.6 0.6
Recall 0.4 Recall 0.4 Recall 0.4 Recall 0.5
0.4
0.2
0.2 0.2 0.2 0.3
0.1
0 0 0 0
−0.1
0 5 10 15 20 25 0 5 10 15 20 25 0 5 10 15 20 25 0 5 10 15 20 25
top-k top-k top-k top-k
(a) argoUML (b) jEdit (c) jHotDraw (d) jMeter
1.0 1.0 1.0
0.60
0.55
0.8 0.50 0.8 0.8
0.45
0.6 0.40 0.6 0.6
Recall 0.4 Recall 0.35 Recall 0.4 Recall 0.4
0.30
0.25
0.20
0.2 0.15 0.2 0.2
0.10
0 0.05 0 0
0
0 5 10 15 20 25 0 5 10 15 20 25 0 5 10 15 20 25 0 5 10 15 20 25
top-k top-k top-k top-k
(e) Mars (f) Maze (g) PDFBox (h) wro4j
a-index PageRankBR PageRank ICOOK h-index k-core
PageRankIVOL ElementRank Pride MinClass iFit CDAG
图 10 Recall@top-k (使用 DWM 为不同类型的耦合赋权)

