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

