Page 203 - 《软件学报》2026年第5期
P. 203
2082 软件学报 2026 年第 37 卷第 5 期
充策略可以有效缓解关键类缺失的问题. 3) 现有工作未能将动态分析和静态分析结合起来, 以至于无法利用动态
分析方法“准”的特点来排除“死代码”, 也无法利用静态分析方法“全”的特点来规避关键类缺失的问题. 本文使用
动态分析技术对基于静态分析的初步结果进行优化, 从而部分解决静态分析构建的软件网络“不准”的问题, 提高
了关键类识别的准确性.
4 结论和下一步工作
本文提出了一种基于动态分析及引力公式的关键类识别方法, 通过静态分析构建类级加权有向软件网络, 并
基于熵和引力公式构建引力熵指标度量类的重要性, 进而实现类重要性的初步排序. 同时, 本文引入动态分析技术
收集运行时类之间真实的交互关系, 进而对初步排序的结果进行优化, 并通过设定阈值来过滤非关键类, 得到候选
的关键类. 8 个开源 Java 软件上的实验结果表明, 在检查不超过前 15% (或 top-25) 的节点时, CDAG 从整体而言
显著优于其他对比方法; 使用动态分析对结果进行优化有助于提升 CDAG 方法的性能; 不同的赋权方式对 CDAG
的性能没有显著影响; CDAG 在运行效率上是可以接受的.
在下一步工作中, 我们计划在其他非 Java 软件或闭源软件中检验 CDAG 方法的有效性. 此外, 我们拟研究静
态分析与动态分析更好的结合方式 (如用动态分析优化软件网络的边权), 以期进一步提高关键类识别的效果.
References
[1] Bennett KH, Rajlich VT. Software maintenance and evolution: A roadmap. In: Proc. of the 2000 Conf. on the Future of Software
Engineering. Limerick: ACM, 2000. 73–87. [doi: 10.1145/336512.336534]
[2] Cornelissen B, Zaidman A, van Deursen A, Moonen L, Koschke R. A systematic survey of program comprehension through dynamic
analysis. IEEE Trans. on Software Engineering, 2009, 35(5): 684–702. [doi: 10.1109/TSE.2009.28]
[3] Yang YM, Xia X, Lo D, Bi TT, Grundy J, Yang XH. Predictive models in software engineering: Challenges and opportunities. ACM
Trans. on Software Engineering and Methodology, 2022, 31(3): 56. [doi: 10.1145/3503509]
[4] Maalej W, Tiarks R, Roehm T, Koschke R. On the comprehension of program comprehension. ACM Trans. on Software Engineering and
Methodology, 2014, 23(4): 31. [doi: 10.1145/2622669]
[5] Pan WF, Ming H, Kim DK, Yang ZJ. Pride: Prioritizing documentation effort based on a PageRank-like algorithm and simple filtering
rules. IEEE Trans. on Software Engineering, 2023, 49(3): 1118–1151. [doi: 10.1109/TSE.2022.3171469]
[6] Zaidman A, Calders T, Demeyer S, Paredaens J. Applying webmining techniques to execution traces to support the program
comprehension process. In: Proc. of the 9th European Conf. on Software Maintenance and Reengineering. Manchester: IEEE, 2005.
134–142. [doi: 10.1109/CSMR.2005.12]
[7] Zaidman A, Demeyer S. Automatic identification of key classes in a software system using webmining techniques. Journal of Software
Maintenance and Evolution: Research and Practice, 2008, 20(6): 387–417. [doi: 10.1002/smr.370]
[8] Zhou YM, Xu BW. Dependence structure analysis-based approach for measuring importance of classes. Journal of Southeast University
(Natural Science Edition), 2008, 38(3): 380–384 (in Chinese with English abstract). [doi: 10.3969/j.issn.1001-0505.2008.03.004]
[9] Pan WF, Ming H, Chang CK, Yang ZJ, Kim DK. ElementRank: Ranking Java software classes and packages using a multilayer complex
network-based approach. IEEE Trans. on Software Engineering, 2021, 47(10): 2272–2295. [doi: 10.1109/TSE.2019.2946357]
[10] Pan WF, Kessentini M, Ming H, Yang ZJ. EASE: An effort-aware extension of unsupervised key class identification approaches. ACM
Trans. on Software Engineering and Methodology, 2024, 33(4): 84. [doi: 10.1145/3635714]
[11] Pan WF, Wu W, Ming H, Kim DK, Yang JK, Liu RC. Improving the condensing of reverse engineered class diagrams using weighted
network metrics. In: Proc. of the 46th IEEE/ACM Int’l Conf. on Software Engineering: Companion Proc. Lisbon: ACM, 2024. 374–375.
[doi: 10.1145/3639478.3643520]
[12] Yau SS, Collofello JS. Design stability measures for software maintenance. IEEE Trans. on Software Engineering, 1985, SE-11(9):
849–856. [doi: 10.1109/TSE.1985.232544]
[13] Perin F, Renggli L, Ressia J. Ranking software artifacts. In: Proc. of the 4th Workshop on FAMIX and Moose in Reengineering, 2010.
1–4. [doi: 10.7892/boris.4966]
[14] Wang MS, Lu HM, Zhou YM, Xu BW. Identifying key classes using h-index and its variants. Journal of Frontiers of Computer Science
and Technology, 2011, 5(10): 891–903 (in Chinese with English abstract).
[15] Steidl D, Hummel B, Juergens E. Using network analysis for recommendation of central software classes. In: Proc. of the 19th Working

