Page 29 - 《软件学报》2025年第5期
P. 29

董黎明 等: 结合主动学习和半监督学习的软件可追踪性恢复框架                                                  1929


                 码. 这一方面反映了工业界对软件可追踪性的重视开始逐步加强. 但另一方面人为的操作依然会导致延时关联、
                 错误关联等不可靠的质量问题. 具体而言, 延时关联的情况是由于需求关闭前紧急关联某个                              commit; 错误关联也
                 经常发生, 访谈发现一部分开发人员往往更容易将针对缺陷修复的                      commit 替换为与需求进行关联. 一方面, 这是
                 由于开发人员更熟悉各自负责的需求, 且企业对需求的可追踪性有更严格的要求. 另一方面, 开发人员大多为外包
                 工作人员, 对组织规范性不清楚或不严格遵守, 也会导致可追踪性链接的可靠性难以保障的问题.
                    现状  2: 软件制品可追踪性链接的完整性难以保障. 通过分析缺陷与                   commit 记录关联的比例, 本文发现企业
                 项目中平均有超过       50%  的缺陷没有与    commit 进行关联. 这可能是由于企业更多关注需求可追踪性的影响, 而缺
                 陷本身并没有要求与        commit 强制关联. 然而, 根据开发人员的反馈, 在每个正式发布版本中, 约                80%  的缺陷都是
                 功能性缺陷, 需要通过      commit 对代码进行修复. 不难发现, 缺陷和         commit 之间的关联关系不完整问题尤为普遍.
                    现状  3: 软件制品可追踪性链接缺失. 通过分析测试用例与其他制品之间的关联关系, 本文发现即使公司要求
                 测试人员将各自分配好的需求与对应的测试用例进行关联, 但测试用例的历史数据中, 只有少部分项目团队关联
                 了最高级别需求      (系统级需求) 和测试用例, 仍有很多历史测试用例关联的需求编号为空值. 此外, 测试用例与缺
                 陷之间甚至没有建立和维护关联关系.
                    不难发现, 各类制品之间的可追踪性缺失、延时、错误和不完整等问题都反映出企业内部的软件过程制品可
                 追踪性质量有待改进.

                 2.2   案例分析
                    为了解可追踪性模型在企业项目上的实践效果, 本文先以                    Rath  等人  [10] 提出的  Baseline(RF) 可追踪性模型为
                 基础模型, 以及其实验      [10]  中验证过的  6  个开源项目数据为对比数据, 同时从本文合作企业选择了                 10  个企业项目
                 数据展开了探索性案例分析. 项目基本统计量信息如表                 1 所示, 数据集收集截至      2020 年  10 月. 考虑到缺陷-commit
                 间存在一定比例的关联关系恰好可以为模型提供训练数据, 也是相关研究                        [10,27,31,40] 实验中使用最频繁的制品, 为方
                 便验证模型实验效果, 本文重点关注的是缺陷-commit 间的可追踪性问题.

                                                 表 1 项目数据集统计量信息

                   项目    类型 起始时间 缺陷 commit 总样本 “真”链接 “假”链接 无标签 有链接缺陷 (%) 有链接commit (%) 不平衡率
                  Derby  开源 2011-10  478  1 108  32 902  300  32 535  72 765  48.74     26.81      108
                  Drools  开源  2014-8  1 728  2 989  110 529  1 030  30 040  79 459  50.81  33.89    29
                  Groovy  开源  2014-7  1 170  5 368  342 722  1 017  223 524 118 181  69.40  18.55  220
                 Infinispan 开源  2015-1  2 287  5 546  268 886  1925  154 822 112 139  68.34  34.58  80
                  Maven  开源 2009-11  530  1 747  27 396  314  11 963  15 119  51.51     17.74       38
                   Pig   开源 2014-11  295  429  3 912  240    3 666  15 774  77.63       55.71       15
                        平均值         1 081  2 865  131 058  804  76 092  68 906  61.07   31.21       82
                    P1   企业   2019-2  1 764 16 912 944 236  1 157  303 421 639 658  25.06  6.84    262
                    P2   企业   2019-6  1 389 12 229 386 353  1 110  232 629 152 614  39.02  9.08    210
                    P3   企业   2019-6  448  4 888  66 754  279  29 028  37 447  28.57     5.71      104
                    P4   企业   2020-1  856  7 271  707 732  759  223 695 483 278  24.88  10.44      295
                    P5   企业   2020-3  188  1 649  20 228  257  10 147  9 824  33.51     15.59       39
                    P6   企业   2019-8  337  2 903  45 471  236  22 229  23 006  34.12     8.13       94
                    P7   企业 2019-11  405  6 114  249 120  936  149 997  98 187  45.19   15.31      160
                    P8   企业   2020-5  192  514  13 801  132  7 364  6 305   44.27       25.68       56
                    P9   企业   2019-7  270  2 437  35 621  287  20 364  14 970  45.19    11.78       71
                   P10   企业   2020-4  631  3 609  184 735  867  128 661  55 207  47.39  24.02      148
                        平均值          648  5 853  265 405  602  112 754 152 050  36.72   13.26      144

                    图  5  中展示了以缺陷-commit 跟踪对为样本, Rath      等人  [10] 提出的  Baseline(RF) 可追踪性模型在  6  个开源项目
                 和  10  个企业项目上的实验效果. 考虑到模型结果存在随机性, 图               5  中统计了  10  次实验结果得到的平均值. 图       5  横
   24   25   26   27   28   29   30   31   32   33   34