Page 195 - 《软件学报》2026年第5期
P. 195

2074                                                       软件学报  2026  年第  37  卷第  5  期


                                                                TP
                                                     Precision =                                     (13)
                                                              TP+ FP

                                                       2×Precision×Recall
                                                   F1 =                                              (14)
                                                        Precision+Recall
                 其中, TP (true positive) 指识别为关键类的实际也是关键类的数量; FP (false positive) 指识别为关键类的实际是非
                 关键类的数量; FN (false negative) 指识别为非关键类的实际是关键类的数量; TN (true negative) 指识别为非关键类
                 的实际也是非关键类的数量. 此外, 对于关键类识别问题, Recall、Precision             和  F1  的变化趋势是一致的, 即      Recall
                 大的方法其    Precision  和  F1  也大  [5] . 因此, 我们无需同时报道  Recall、Precision  和  F1  这  3  个结果. 在公式  (12) 中,
                 分子表示识别为关键类的实际也是关键类的数量, 分母实际上表示的是一个软件中关键类的数量. 因此, Recall 实
                 际上求的是特定方法正确识别的关键类的比例. 方法越好, 其                  Recall 值越大. 鉴于  Recall 已经可以直接反映某一方
                 法在关键类识别方面的性能, 在数据实验部分, 本文仅报道了                   Recall 的结果, 其他相关数据及结果可以从          https://
                 github.com/wfpan/CDAG  处下载.
                  2.4   实验结果及分析
                    本文将重点围绕以下        5  个研究问题展开实验.
                    ● RQ1: 在检查不超过前     15%  的节点时, CDAG   是否比现有方法更有效?
                    ● RQ2: 在检查不超过    top-25  的节点时, CDAG  是否比现有方法更有效?
                    ● RQ3: 动态分析对关键类识别是否均有效?
                    ● RQ4: 不同的赋权方式对      CDAG  的性能是否有影响?
                    ● RQ5: 在运行效率方面, CDAG     是否可行?
                    我们按照图     1  所示的步骤构建     CCN、计算类的重要性、对类进行排序和对结果进行优化, 最终得到候选关
                 键类. 在本节中, 我们将围绕所提出的几个研究问题开展数据实验, 详细检验方法的有效性.
                    RQ1: 在检查不超过前      15%  的节点时, CDAG  是否比现有方法更有效?
                    目前已有不少关键类识别方法, 本节将检验我们提出的                   CDAG  方法在关键类识别上是否比现有的方法效果
                 更好. 首先关注阈值      k 取值  1%–15% (步长为  1%) 的情况, 即将软件中前     k×|V| (|V|为  CCN  中的节点数) 的类视为候
                 选关键类. 图    6  所示的是我们的方法       CDAG  及  11  种对比方法在   8  个软件、15   个阈值上取得的结果        (Recall
                 值). 在构建  CCN  时, 我们采用  DWM  为不同类型的耦合赋权.


                                                                                     0.8
                   1.0                   1.0                   1.0                   0.7
                   0.8                   0.8                   0.8                   0.6
                                                                                     0.5
                                         0.6
                   0.6
                  Recall  0.4           Recall  0.4           Recall  0.6           Recall  0.4
                                                                                     0.3
                                                               0.4
                   0.2                   0.2                                         0.2
                                                                                     0.1
                                                               0.2
                   0                      0                                          0
                                                               0                    −0.1
                     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  0  2  4  6  8 10 12 14 16
                            k (%)                 k (%)                 k (%)                 k (%)
                         (a) argoUML             (b) jEdit           (c) jHotDraw           (d) jMeter
                   1.0                  0.40
                                        0.35                   1.0                   1.0
                   0.8                  0.30
                                                               0.8                   0.8
                                        0.25
                  Recall  0.6           Recall  0.20          Recall  0.6           Recall  0.6
                   0.4                  0.15                   0.4                   0.4
                                        0.10
                   0.2                  0.05                   0.2                   0.2
                   0                      0                     0                    0
                    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  0  2  4  6  8 10 12 14 16
                            k (%)                 k (%)                 k (%)                 k (%)
                           (e) Mars              (f) Maze             (g) PDFBox            (h) wro4j
                                          a-index  PageRankBR  PageRank  ICOOK  h-index  k-core
                                          PageRankIVOL  ElementRank  Pride  MinClass  iFit  CDAG
                                图 6 Recall@top-k (使用  DWM  为不同类型的耦合赋权, k 为百分比形式)
   190   191   192   193   194   195   196   197   198   199   200