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

潘伟丰 等: 基于动态分析和引力公式的关键类识别                                                        2073


                 属性的数量、关键类的数量. 尽管我们仅使用了               8  款软件, 但是这并不会对我们的结论产生大的影响, 因为这些系
                 统具有很好的多样性       (来自不同领域、具有不同的规模).

                                                  表 3 实验系统的基本情况

                      项目         版本号        代码行数         包数         类数          方法/属性数         关键类数
                    argoUML       0.9.5      74 334       67         846        6 178/2 851      12
                      jEdit       5.1.0      112 492      41       1 082 (9)    7 601/4 085      7
                    jHotDraw     6.0b.1      28 330       30         544         5 205/865       9
                     jMeter       2.0.1      22 701       42         260         2 000/834       14
                      Mars        3.06       132 589      95       1 085 (32)   11 105/5 738     29
                     Maze          1          8 881       6         63 (6)       563/284         27
                    PDFBox        2.0.7      135 514     109       1 285 (33)   10 482/4 792     12
                     wro4j        1.6.3      33 736       99        567 (9)     3 256/1 274      12

                  2.2   对比方法
                    为了检验    CDAG  方法的有效性, 我们从现有研究中选择了             11  种方法作为对比方法: h-index    [14] 、a-index [14] 、
                         [17,20]         [17,20]    [16]      [19]             [23]           [9]     [5]
                 PageRank    、PageRankBR     、k-core  、ICOOK    、PageRankIVOL    、ElementRank 、Pride 、
                 MinClass [22] 和  iFit [24] . 我们实现了这些对比方法, 并在应用过程中对软件网络进行了必要的调整            (如忽略部分耦合
                 类型、忽略边的方向/权重等), 以便生成与这些对比方法匹配的软件网络, 从而得到相应的结果. 部分现有工作未
                 被选为对比方法, 主要是因为我们缺乏足够的信息来复现这些工作. 同时, 有监督的关键类识别方法均未被选作对
                 比方法, 主要原因是: 有监督方法需要划分训练集和测试集, 结果是在测试集上得到的, 而无监督方法的结果是在
                 整个数据集上得到的. 将无监督方法与有监督方法进行对比意义不大                      [5] . 同时, 若这些对比方法也产生了相同的类
                 重要性值, 导致无法对类进行准确排序时, 我们也采用了第                 1.3  节中的“求均值位置”的方法.
                    这  11  种对比方法简述如下.
                    ● h-index: 该方法将类节点在软件网络中的         h-指数作为其重要性值.
                    ● a-index: 该方法将类节点在软件网络中的         a-指数作为其重要性值.
                    ● PageRank: 该方法使用   PageRank  算法计算类节点在加权有向软件网络中的重要性.
                    ● PageRankBR: 该方法与   PageRank  方法类似, 主要区别在于: 若原始软件网络中存在类             A  到类  B  的有向边,
                 那么该方法将增加类       B  到类  A  的有向边, 并且边权是原来的一半.
                    ● k-core: 该方法将节点在软件网络中的核数           (coreness) 作为其重要性值. 类节点的核数是通过          k-核分解  (k-
                 core decomposition) 算法计算得到的.
                    ● ICOOK: 该方法将类节点在软件网络中的一般化核数               (generalized coreness) 作为其重要性值. 节点的一般化
                 核数是通过一般化       k-core 分解  (generalized k-core decomposition) 算法计算得到的.
                    ● PageRankIVOL: 该方法与  PageRank  方法类似, 主要区别在于: 在跟随出链将类          A  的重要性传递给类     B  的过
                 程中, PageRankIVOL  进一步考虑了    A  与  B  之间有向边的边权; 在随机跳转部分, PageRankIVOL       进一步考虑了网
                 络的总节点数.
                    ● ElementRank: 该方法构建软件类级的多层软件网络, 并使用             PageRank  算法计算每一层网络中类节点的重
                 要性, 进而通过聚合类各层的重要性值来得到类最终的重要性值.
                    ● Pride: 该方法与  PageRankIVOL  方法类似, 主要区别在于: 在随机跳转部分, Pride 进一步考虑了网络中节点
                 的度、加权度及网络的总度及总加权度.
                    ● MinClass: 该方法基于熵的概念构建了一个新指标            OSE, 并使用  OSE  衡量每个类在系统中的重要性.
                    ● iFit: 该方法基于  PageRank  算法和物理中场的概念构建了一个新指标            CG, 并使用   CG  度量类的重要性.
                  2.3   评价指标
                    关键类识别领域广泛使用的评价指标包括: 准确率                (Precision)、召回率  (Recall) 和  F1. 各指标的具体定义如下:

                                                               TP
                                                      Recall =                                       (12)
                                                            TP+ FN
   189   190   191   192   193   194   195   196   197   198   199