Page 184 - 《软件学报》2026年第5期
P. 184
软件学报 ISSN 1000-9825, CODEN RUXUEW E-mail: jos@iscas.ac.cn
2026,37(5):2063−2084 [doi: 10.13328/j.cnki.jos.007453] [CSTR: 32375.14.jos.007453] http://www.jos.org.cn
©中国科学院软件研究所版权所有. Tel: +86-10-62562563
*
基于动态分析和引力公式的关键类识别
潘伟丰 1 , 杨燕微 1 , 杨子江 2 , 姜 波 1 , 王家乐 1 , 杨柏林 1
1
(浙江工商大学 计算机科学与技术学院, 浙江 杭州 310018)
2
(中国科学技术大学 计算机科学与技术学院, 安徽 合肥 230026)
通信作者: 潘伟丰, E-mail: wfpan@zjgsu.edu.cn; 杨柏林, E-mail: ybl@zjgsu.edu.cn
摘 要: 关键类是理解复杂软件的极佳起点, 不仅有助于优化软件的文档化过程, 也有助于压缩逆向工程得到的类
图. 尽管目前已经提出了很多有效的关键类识别方法, 但普遍存在 3 点不足: 1) 现有工作所依赖的软件网络 (由软
件元素及其依赖构建的图) 不可避免地会包含软件运行时永远不会 (或极少) 被执行到的软件元素; 2) 基于动态分
析构建的软件网络往往不够完整, 会遗漏真正的关键类; 3) 现有工作通常只考虑类之间的直接耦合对类重要性的
影响, 而忽视类之间的间接 (非接触) 耦合及邻居节点度分布的多样性对类重要性的影响. 鉴于此, 提出一种融合动
态分析和引力公式的关键类识别方法. 首先, 使用静态分析技术构建面向对象软件的类依赖网络 CCN (class
coupling network), 用以抽象类及类之间的耦合关系. 其次, 综合考虑 CCN 中类之间“直接和间接的耦合”“邻居节点
度分布的多样性”等对类重要性的影响, 构建引力熵 GEN (gravitational entropy) 度量指标以量化类的重要性. 然后,
按照类的 GEN 值对所有类进行降序排列, 从而得到初步的排序结果. 最后, 通过动态分析技术收集运行时类之间
真实的交互关系, 进而对初步排序的结果进行优化, 并通过设定阈值来过滤非关键类, 从而得到候选的关键类. 8 个
开源 Java 软件上的实验结果表明: 1) 在检查不超过前 15% (或 top-25) 的节点时, 该方法从整体上而言均显著优于
其他 11 种对比方法; 2) 使用动态分析对结果进行优化, 有助于显著提升该方法的性能; 3) 耦合类型的不同赋权方
式对该方法的性能没有显著影响; 4) 该方法在运行效率上是可以接受的.
关键词: 关键类识别; 软件网络; 引力公式; 熵; 软件度量
中图法分类号: TP311
中文引用格式: 潘伟丰, 杨燕微, 杨子江, 姜波, 王家乐, 杨柏林. 基于动态分析和引力公式的关键类识别. 软件学报, 2026, 37(5):
2063–2084. http://www.jos.org.cn/1000-9825/7453.htm
英文引用格式: Pan WF, Yang YW, Yang ZJ, Jiang B, Wang JL, Yang BL. Key Class Identification Based on Dynamic Analysis and
Gravitational Formula. Ruan Jian Xue Bao/Journal of Software, 2026, 37(5): 2063–2084 (in Chinese). http://www.jos.org.cn/1000-9825/
7453.htm
Key Class Identification Based on Dynamic Analysis and Gravitational Formula
1
1
2
1
1
PAN Wei-Feng , YANG Yan-Wei , YANG Zi-Jiang , JIANG Bo , WANG Jia-Le , YANG Bai-Lin 1
1
(School of Computer Science and Technology, Zhejiang Gongshang University, Hangzhou 310018, China)
2
(School of Computer Science and Technology, University of Science and Technology of China, Hefei 230026, China)
Abstract: Key classes are a crucial starting point for understanding complex software, contributing to the optimization of documentation
and the compression of reverse-engineered class diagrams. Although many effective key class identification methods have been proposed,
three major limitations remain: 1) software networks, which are graphs representing software elements and their dependencies, often
include elements that are never or rarely executed at runtime; 2) networks constructed through dynamic analysis are frequently incomplete,
potentially omitting truly key classes; and 3) most existing approaches consider only the effect of direct coupling between classes, while
* 基金项目: 国家自然科学基金 (62272412, 62232008, 62032010); 浙江省自然科学基金 (LY22F020007); 桐乡市通用人工智能研究院项
目 (TAGI2-A-2024-0003); 浙江工商大学“数字+学科建设”项目 (SZJ2022B015)
收稿时间: 2024-12-14; 修改时间: 2025-02-17; 采用时间: 2025-04-23; jos 在线出版时间: 2025-09-17
CNKI 网络首发时间: 2025-09-18

