Page 168 - 《软件学报》2025年第10期
P. 168

李志强 等: SZZ  误标变更对移动      APP  即时缺陷预测性能和解释的影响                                    4565


                 构建基于工作量感知的跨项目即时缺陷预测模型, 在                  342  对移动  APP  上进行测试, 实验结果表明他们的模型比
                 14  个基线模型性能更好. 最近, 胡新宇等人         [64] 针对  Android  移动  APP  即时缺陷预测模型的可解释性展开研究, 通
                 过差分进化算法对       LIME  进行超参优化得到       ExplainApp  方法. 在  14  个移动  APP  项目上进行实验, 结果表明
                 ExplainApp  方法可以解释移动    APP  即时缺陷预测模型得到的实例预测结果.
                    上述研究主要关注移动         APP  缺陷预测模型的性能, 然而数据的标注质量对模型性能与解释的影响不可忽视.
                 到目前为止, 还没有文献实证研究数据标注质量对移动                  APP  即时缺陷预测的影响. 基于此, 本文就         SZZ  标注算法
                 对移动   APP  即时缺陷预测模型性能与解释的影响开展广泛而深入的实证研究.
                  1.4   本文与文献  [5] 研究工作的区别
                    Fan  等人  [5] 在  10  个  Apache 开源项目上系统深入研究了  SZZ  错误标注的变更对即时缺陷预测模型的影响. 相
                 较于该研究工作, 本文有以下不同之处.
                    (1) 实验对象方面. Fan   等人面向    Apache 开源项目进行实证研究, 而本文面向           17  个移动  APP  项目研究  SZZ
                 错误标注的变更对即时缺陷预测性能与解释的影响. 原因是: 1) 移动                   APP  的发布周期通常较短, 版本迭代速度较
                 快, 这对于及时发现和修复缺陷至关重要, 以确保新版本的稳定性与质量. 2) 用户可以随时随地下载与使用移动
                 APP  应用, 意味着缺陷在任何时间都有可能发生, 在缺陷出现后若能尽快提供反馈, 这将有助于开发小组及时修复
                 缺陷. 3) 移动  APP  相较于其他应用拥有更多用户, 其体验至关重要, 及时发现和修复缺陷可以避免用户在使用
                 APP  应用时遇到问题, 进而提升用户满意度. 总之, 即时缺陷预测技术非常适用于检测移动                        APP  应用中的缺陷.
                    (2) 数据划分方式. Fan   等人采用    out-of-sample bootstrap  交叉验证方法随机划分训练集与测试集, 其可能会使
                 用当前的变更预测之前的变更           (比如用  2023  年的变更预测    2021  年的变更), 这通常与实际软件开发过程不符. 在
                 即时缺陷预测技术研究方面, 先前工作表明              [65] 代码变更遵循时间顺序, 使用不考虑时间因素的交叉验证方法随机
                 划分数据集不符合实际开发过程. 然而, Fan           等人使用    out-of-sample bootstrap  方法随机进行数据划分并没有考虑
                 到实际情况. 与该研究工作不同, 本文采用            Yang  等人  [34] 的所提出的基于时间系列的数据划分方法用于弥补上述
                 不足, 以更符合实际软件开发过程.
                    (3) 类不平衡处理方式. Fan     等人采用随机欠采样算法进行类重平衡, 没有深入对比不同数据采样算法对缺陷
                 预测模型的性能与解释有何种影响. 由于欠采样算法会随机删除一部分无缺陷的代码变更, 可能导致重要数据信
                 息和关键变更的丢失, 因此随机欠采样在该实验背景下是否真的最优有待进一步考量. 为此, 本文深入对比随机欠
                 采样、随机过采样、合成少数类过采样              (SMOTE) 和随机过采样示例        4  种常用数据采样技术用于类重平衡的效
                 果, 以比较不同数据采样算法对移动            APP  即时缺陷预测性能的影响. 结果发现          SMOTE  总体上表现最为出色, 为
                 此本文采用    SMOTE  算法进行类重平衡, 即可保留原始数据的特征又可增加多样性.
                    (4) 模型解释方法. Fan   等人采用特征重要性方法对模型进行全局解释, 得出每个度量元的排名. 然而, 该工作
                 有以下局限: 1) 特征重要性方法只能解释度量元对模型的整体影响大小, 不能解释是对模型产生正类                              (有缺陷) 还
                 是负类   (无缺陷) 影响. 例如, la (变更增加的代码行数) 度量元在特征重要性中排名较高, 只能得出                     la 是重要的度
                 量元, 但  la 对正向  (有缺陷) 或负向   (无缺陷) 的影响方向和程度, 这点无从而知. 2) 全局解释只能解释度量元对模
                 型整体的影响, 不能解释模型在某个变更上的预测结果, 因此无法反映出在单个变更上各个度量元对模型的贡献
                 大小. 3) 在类不平衡与重平衡情况下, 该工作没有探讨              SZZ  错误标注对模型的解释性影响有无异同. 为解决上述
                 不足, 本文在类不平衡和重平衡情况下, 采用更为全面的                SHAP  方法进行解释. 该方法不仅能对整个模型的行为和
                 结果进行全局解释, 还能对某个变更的预测结果进行局部解释, 更清晰地理解模型的决策.
                    总之, 在实验对象方面, 本文与        Fan  等人所采用的实验对象均采用          Java 语言编写, 差异主要表现在开发人员、
                 编码风格、代码规范、编程经验以及缺陷修复的频率等不同. 在数据划分方面, 本文采用时间划分方式代替先前
                 的随机划分方式, 更符合实际开发流程. 在类不平衡处理方面, 本文对比了多种采样算法, 使用性能最优的                              SMOTE
                 算法进行类重平衡, 即可保留原始数据的特征又可增加多样性. 在模型解释方面, 本文引入了                           SHAP  算法从全局和
                 局部的角度对模型的预测结果进行了全面的解释, 能够更加清晰地理解模型的决策. 因此, 基于上述                              4  个方面以及
                 软件项目的不同, 从而导致本文的研究结果与              Fan  等人的研究结果存在差异.
   163   164   165   166   167   168   169   170   171   172   173