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  为不同类型的耦合赋权)
   192   193   194   195   196   197   198   199   200   201   202