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

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


                    为了更清晰地对比        CDAG  与  iFit 的性能, 我们进一步计算了       CDAG  相比  iFit 的  Win/Tie/Loss 值  (基于
                 Friedman  检验的结果计算), 结果如表     4  所示. 在表  4  中, Win  值表示  CDAG  优于  iFit 的次数, Tie 值表示两个方法
                 Recall 值一样的次数, Loss 值表示    CDAG  差于  iFit 的次数, DWM/OWM/EWM   代表  CCN  使用不同的方式为不同
                 类型的耦合赋权. 从表      4  可知, 在  DWM  赋权方式下, CDAG   在  20  个阈值处优于   iFit 方法, 在  3  个阈值处与  iFit 性
                 能一样, 在   2  个阈值处劣于   iFit 方法; 在  OWM  赋权方式下, CDAG   在  14  个阈值处优于    iFit 方法, 在  3  个阈值处
                 与  iFit 性能一样, 在  8  个阈值处劣于  iFit 方法; 在  EWM  赋权方式下, CDAG  在  13  个阈值处优于   iFit 方法, 在  1  个
                 阈值处与   iFit 性能一样, 在  11  个阈值处劣于   iFit 方法. 因此, 从整体而言, CDAG    在  47  个阈值处优于   iFit 方法, 在
                 7  个阈值处与   iFit 性能一样, 在  21  个阈值处劣于  iFit 方法; 换言之, CDAG  在  54/75  个阈值处不差于   iFit.

                  12                            12                            12
                  11                            11                            11
                  10
                   9                            10                            10
                                                 9                             9
                   8
                  Rank  7 6                     Rank  8 7                     Rank  8 7
                   5                             6                             6
                   4
                                                 5                             5
                   3
                   2                             4                             4
                   1                             3                             3
                   0                             2                             2
                    0   5   10   15  20  25       0   5   10   15  20   25      0   5   10   15  20   25
                               top-k                         top-k                         top-k
                             (a) DWM                       (b) OWM                        (c) EWM
                                         a-index    PageRankBR  PageRank  ICOOK  h-index  k-core
                                         PageRankIVOL  ElementRank  Pride  MinClass  iFit  CDAG
                                     图 13 12  种方法在不同赋权方式下的平均排名 (Rank@top-k)

                                             表 4 CDAG  相比  iFit 的  Win/Tie/Loss 值

                               指标           DWM            OWM           EWM           合计
                               Win           20             14            13            47
                               Tie            3             3             1             7
                               Loss           2             8             11            21

                    根据  Friedman  检验的结果和   Win/Tie/Loss 值, 我们可以得出结论: 在检查不超过        top-25  的节点时, CDAG  从
                 整体而言显著优于其他方法.
                    RQ3: 动态分析对于关键类识别是否均有效?
                    如第  1.3  节所述, 本文使用动态分析对基于         CCN  和  GEN  识别的候选关键类     (初步排序结果) 进行优化. 在此
                 部分, 我们将检验该优化操作是否有效. 为此, 我们将              CDAG  中的“排序结果优化”步骤去掉, 构建了一种新的关键
                 类识别方法    CG (identifying key classes using gravitational formula), 并通过对比  CDAG  和  CG  在同一个系统、同一
                 个阈值处的    Recall 值来检验“优化”操作的效果. 与上文类似, 我们分别检验了阈值不超过                   15% (前  15%) 和阈值不
                 超过  25 (top-25) 两种情况下的结果   (结果如图   14  和图  15  所示).

                  1.0                            1.0                           1.0
                  0.8                            0.8                           0.8
                  Recall  0.6                   Recall  0.6                   Recall  0.6
                  0.4                            0.4                           0.4
                  0.2                            0.2                           0.2
                   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
                               k (%)                         k (%)                         k (%)
                             (a) DWM                       (b) OWM                        (c) EWM
                       CG (argoUML)  CDAG (argoUML)  CG (jEdit)  CDAG (jEdit)  CG (jHotDraw)  CDAG (jHotDraw)  CG (jMeter)  CDAG (jMeter)
                       CG (Mars)  CDAG (Mars)  CG (Maze)  CDAG (Maze)  CG (PDFBox)  CDAG (PDFBox)  CG (wro4j)  CDAG (wro4j)
                                        图 14 CDAG vs. CG (Recall@top-k, k 为百分比形式)
   194   195   196   197   198   199   200   201   202   203   204