Page 144 - 《软件学报》2025年第4期
P. 144

1550                                                       软件学报  2025  年第  36  卷第  4  期


                 统一数据集进行证实研究, 而方法间使用不同数据集会对结果产生很大影响. 目前的数据集包含的                               Java 项目有相
                 互重叠的情况, 也缺乏针对其他编程语言数据集的构建, 单个数据集中的数据来源不够广泛, 会使得在该数据集上
                 评估的基于信息检索的缺陷定位方法存在特殊性. 另外, 多个已知数据集之间在包含缺陷的时间跨度、数据格式
                 与标签定义等方面存在差异, 难以对基于不同数据集训练的模型进行公平比较. 因此总体而言, 目前基于信息检索
                 的缺陷方法存在局限性.

                 6.2   未来研究方向
                    根据第   6.1  节提出的问题, 本文在此对未来基于深度学习和信息检索的缺陷定位方法的未来研究方向进行
                 展望.

                 6.2.1    对方法级别或更细粒度的程序模块进行缺陷定位
                    如今使用深度学习的基于信息检索的缺陷定位方法集中于文件级别的定位, 仅少数论文提出的方法是针对较
                 细粒度的基于信息检索的缺陷定位. 并且, 目前还没有针对行级别的基于信息检索的缺陷定位方法. 从数据集的统
                 计中也可以发现, 文件级别的数据集也更加丰富, 缺陷报告和源文件的数量也比较统一, 而方法级别和其他级别没
                    在第
                 有较为统一的数据集, 这导致方法与方法间使用的评测数据差别较大, 方法的定位结果存在偶然性, 难以横向对比
                 定位效果以及方法实用性的推断. 由于目前的方法比较依赖缺陷报告和源文件中的文本信息, 要使基于信息检索
                 的缺陷定位方法更具有实用性, 可以尝试结合程序执行频谱等程序执行时的动态分析, 例如在使用深度学习的基
                 于信息检索的缺陷定位方法中结合动态与静态方法, 完成对细粒度程序模块的缺陷定位.

                 6.2.2    拓展编程语言的多样性
                    在第  2  节的数据集统计中发现, 现有方法的评价数据集集中使用                  Java 作为缺陷定位的语言, 缺少对其他编程
                 语言的基于信息检索的缺陷定位方法. 实际的软件开发项目中, 给出的缺陷报告可能需要对不同编程语言进行定
                 位. 不同的编程语言具有不同的语言和结构特点. 在未来的工作中, 尝试针对其他编程语言如                            Python、C++或跨语
                 言缺陷定位. 增加对前端软件系统如           VUE、React 进行缺陷定位的探讨, 根据前端框架结构清晰的特点, 尝试对组
                 件化软件系统的缺陷定位, 针对接口与            API 使用方向的缺陷使用采用深度学习的基于信息检索的方法完成定位.
                 针对更多种类的编程语言或者尝试跨语言缺陷定位是让缺陷定位方法适用于现实场景中的突破方向.

                 6.2.3    构建更可靠的数据集
                    目前使用深度学习的基于信息检索的缺陷定位方法使用的数据集规模较小, 且方法间很少使用相同数据集对
                 方法进行评估. 尝试结合更多含有合适的缺陷报告的软件项目构建一个更多元化的数据集, 可以有效提高缺陷定
                 位方法的性能, 例如, 针对缺陷测试任务提出的              Defects4J 数据集  [94]  涵盖了  17  个不同的  Java 项目, 也包含了进行
                 基于信息检索的缺陷定位任务所需的缺陷报告与缺陷文件信息, 后续研究可以考虑在该数据集上进行方法的评
                 估. 在构造数据集的过程中更多地选取合适的大型项目, 挑选其中有明确关联的缺陷报告和源文件来减少噪音的
                 产生, 并提供被其他方法使用的信息检索特征, 以扩大数据集的规模和可用范围. 尝试对缺陷报告和相关的源文件
                 根据缺陷类型对数据进行分类. 在未来的工作中, 通过对更完善可靠数据集的构建, 可以明确使用深度学习的基于
                 信息检索的缺陷定位方法擅长定位哪些缺陷类型的定位, 进一步了解其边界且更便于方法间定位效果的横向
                 比较.

                 6.2.4    融合更多的特征
                        3  节介绍的文本编码表征和特征提取方法中可以发现, 现有的方法中只有部分方法将信息检索特征作为
                 深度模型输入的一部分, 将整个模型的输出作为隐向量计算相似度, 也有的方法使用深度模型替代了原先较为浅
                 层的语义表示, 仅作为信息检索特征的一部分. 基于信息检索的缺陷定位方法里暗含许多和时间相关的特征, 比如
                 详细缺陷的修复信息、缺陷报告和提交的次序等, 还会使用其他的特征比如                          TF-IDF、堆栈踪迹、协方差得分等
                 特征. 大部分深度模型的作用主要是为了提取代码和缺陷报告序列间复杂的语义信息, 尽管将深度学习技术应用
                 在基于信息检索的缺陷定位中, 拥有对代码序列和报告序列较强的表征能力, 但使用深度学习的基于信息检索的
                 缺陷定位方法往往减少考虑了一些信息检索常用的特征. 不仅如此, 缺陷报告中也会含有如图片等多模态信息, 这
   139   140   141   142   143   144   145   146   147   148   149