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
   198   199   200   201   202   203   204   205   206   207   208