这是一篇有关于复现相关类型的硕士论文代写,本文属于软件工程结合自然语言处理、兼顾方法研究与实验复现类学术论文。本文以大语言模型为核心研究工具,围绕软件缺陷报告质量偏低、撰写不规范等现实问题展开研究,在梳理相关优化理论与技术方案基础上,完成相关算法模型实验复现工作,验证各类优化方法的实际有效性,同时设计并搭建配套智能处理系统,实现缺陷报告自动规整、内容完善与质量升级,依托复现实验数据佐证研究成果可行性,为行业缺陷报告智能化优化提供可行思路与实践依据。

目录
摘要
abstract
1.1 研究背景与意义在当今高度复杂和动态变化的软件开发过程中,软件缺陷报告的质量对项目的成功与否至关重要。然而,由于缺陷报告者的经验差异以及软件项目本身的复杂程度等原因导致缺陷报告提交者撰写的缺陷报告质量参差不齐[1]。现有研究表明[2][3],开发人员得到的缺陷报告质量往往是低下的,这些低质量的缺陷报告往往会导致误解,时间浪费和资源的无效利用进而影响项目进度和质量。如何为软件开发人员提供修复软件缺陷所需的高质量报告成为软件工程社区中迫切需要解决的问题。研究人员对软件缺陷报告的质量自动评估以及增强软件缺陷报告质量进行了一定的探索和研究[4]。现有增强软件缺陷报告质量的方法主要包括传统方法和基于新兴技术的方法[3]。传统方法中,缺陷报告质量主要依赖于报告者手工编写并交由人工审核来保证。因此,报告质量容易受到主观因素的影响,导致缺陷描述不完整,不准确而影响缺陷修复效率。此外,人工审核需要花费大量的时间和精力也在一定程度上影响了缺陷修复效率。为了克服这些不足,研究人员对自动化的方法进行了一定的探索。首先,基于自然语言处理(Natural Language Processing, NLP)的自动化方法利用NLP 技术从历史缺陷报告中提取关键信息,并自动生成标准化的缺陷报告[5]。例如,通过文本挖掘技术,可以识别缺陷描述中的关键字和短语,并根据历史相似报告自动补全或纠正不完整或不准确的缺陷描述。虽然这些方法可以显著提高缺陷报告的完整性和准确性,但仍面临报告中缺陷描述的语义准确性和连贯性以及项目本身具有的独特性的挑战。其次,基于机器学习的方法通过训练模型,预测缺陷报告中可能缺失或错误的部分评估软件缺陷报告质量。例如,利用分类算法,自动判断报告的某些条目(如优先级、影响范围)是否准确。利用回归算法可以预测报告的特定条目的具体值(如预计修复时间)。尽管这些方法在提高缺陷报告一致性和准确性方面取得了不俗的表现,但这些方法的性能严重依赖于大量高质量的数据集。
1.2 国内外研究现状1.2.1 软件缺陷报告质量评估软件缺陷报告是软件开发人员修复软件项目中存在的缺陷的重要依据,软件缺陷报告的质量直接影响者软件开发人员识别,定位及修复软件缺陷的时间和效率[3]。因此,如何准确评估软件缺陷报告质量为软件开发人员提供指导一直是研究人员关注的课题。现有的研究工作可分为两类:一类是通过分析软件缺陷报告的相关信息或指标对整个缺陷报告或具体的某些信息或指标的质量进行评估来获得缺陷报告的质量。另一类方法通过分析与软件缺陷报告密切相关的指标或信息,将其作为评估依据,进而对缺陷报告质量进行度量[4]。不同的方法研究的缺陷报告对象特征从完整的缺陷报告到具体的信息条目存在差异,这使得这些研究方法采用的评估指标也不相同。例如,Linstead 等人[6]通过使用隐含狄利克雷分布(Latent Dirichlet Allocation, LDA)主题模型为缺陷报告文本内容建模,通过分析缺陷报告文本的内聚性来评估软件缺陷报告质量。目前,机器学习方法大多将评估缺陷报告质量任务视为分类任务。例如,Zanetti 等人[7]利用支持向量机(SupportVector Machine, SVM)机器学习算法为缺陷报告训练分类器用以评估缺陷报告质量。Fan 等人[8]在 Zanetti 等人[7]的基础上使用规模更大的数据集,利用随机森林(RandomForests, RF)算法为缺陷报告质量分类训练一个更为精细的算法模型。考虑到深度学习算法在 NLP 领域表现出的卓越性能,He 等人[9]通过使用卷积神经网络(ConvolutionalNeural Networks, CNN)从缺陷报告文本中提取上下文和语义特征训练分类模型进而评估缺陷报告质量。Chaparro 等人[10]通过利用词性标记(Part-of-Speech tags, POS)
1.3 研究内容和研究目标针对当前软件项目复杂多变,软件缺陷报告质量低下,导致软件开发效率降低和软件安全问题,了解和研究当前关于软件缺陷报告质量存在的相关问题并提出改进意见对软件开发具有重要意义。近年来,研究人员对评估缺陷报告质量进行了一系列的探索和研究,但现有的方法仍然存在评估精度不准确,自动化改进效果不明显的问题。本文以软件开发过程中的低质量缺陷报告研究对象,利用先进的大语言模型自动化地评估和增强缺陷报告质量。本文提出了一种基于 ChatGPT 的缺陷报告质量增强方法以及一种基于信息检索增强生成(Retrieval-Augmented Generation, RAG)的软件缺陷复现测试用例生成方法以提升软件缺陷报告质量。此外,本文通过构建一个软件缺陷报告质量增强系统进一步帮助开发人员分析项目中缺陷报告存在的质量问题并提供改进建议帮助开发人员优化软件开发进程,提升软件开发效率。
2.1 软件缺陷和缺陷报告软件缺陷是指在软件开发和维护过程中出现的与预期软件行为不相符的软件行为。IEEE 从两个视角对软件缺陷进行了定义:从产品内部看,软件缺陷是软件产品开发或维护过程中存在的错误,毛病等各种问题;从产品外部看,软件缺陷是系统所需要实现的某种功能的失效或违背。由于软件项目本身的复杂性和用户需求的多样性导致软件项目不可避免地出现软件缺陷[36]。缺陷报告通常被要求按照一定的格式编写,其中包含了开发人员期望的重要信息。软件开发人员根据缺陷报告定位和修复软件缺陷。开发人员通过缺陷报告准确地了解用户触发软件缺陷时的具体操作步骤,发生场景和严重后果并利用缺陷报告针对性地修复缺陷[37]。软件项目团队通常使用缺陷跟踪系统组织和管理软件生命周期过程中出现的各种缺陷信息。目前常见的缺陷跟踪系统有 Bugzilla2、JIRA3等。它们能够能提供从缺陷发生到缺陷修复整个流程中的全面支持。此外,利用缺陷报告管理系统,管理人员可以有效的为缺陷分类并标记相应的等级以便更好的将缺陷分配给对应的开发人员及时修复缺陷[38]。图 2-1 展示了 JIRA 缺陷跟踪管理系统中 Commons-Math 项目编号为 MATH-1266的缺陷报告4。根据图 2-1 可知,缺陷报告通常包含缺陷报告 ID、缺陷报告标题、缺陷的优先级、缺陷的状态、缺陷发生的软件版本、创建的时间、分派的人员、关于缺陷的详细描述以及相关评论等有助于缺陷修复的关键字段信息。由于软件项目本身的特异性,不同的软件缺陷报告包含的信息可能存在差异。例如,崩溃缺陷可能包含崩溃发生时的堆栈及代码调用信息。有些缺陷报告还包含导致缺陷的代码和附件等信息。总的来说,详尽的信息将更加有助于缺陷的定位与修复并且能够提升自动化工具的性能。
2.2 大语言模型大语言模型(Large Language Models, LLMs)是近年来被研究人员广泛关注的技术之一,它在自然语言处理和图像等多个领域和任务中取得令人惊艳的成绩[39]。它们通常基于注意力机制(Attention Mechanism)。基于 Transformer 架构的模型逐渐受到研究人员的关注[40] 。BERT(Pre-training of deep bidirectional transformers for languageunderstanding)[41]和 GPT(Generative Pre-trained Transformer)[42]是两个具有代表性的基于 Transformer 架构的模型,它们在不同类型的任务中取得了广泛的应用。Transformer 架构由 Vaswani 等人[43]在 2017 年提出,创新性的引入了自注意力机制(Self-Attention Mechanism),并且模型通常由编码器(Encoder)和解码器(Decoder)两部分组成。自注意力机制使得每个输入的词能够与其他词进行交互,从而建立词之间的依赖关系。这种机制允许模型并行处理序列中的所有单词,它极大地提高了训练速度和长序列建模能力。基于 Transformer 架构的模型利用位置编码(Positional Encoding)用来引入词序列的位置信息,确保模型能够理解词语在句子中的顺序关系。
2.2.1 BERTBERT 是由 Google 在 2018 年提出的一个基于 Transformer 架构的预训练模型[41],主要用于文本理解任务。BERT 的创新之处在于其双向编码器设计,使得模型能够在处理文本时同时关注上下文,而不是像传统的单向语言模型那样仅从前到后或者从后到前处理文本。
2.2.2 GPTGPT 是由 OpenAI 提出的基于 Transformer 解码器结构的预训练模型,主要用于生成任务[42]。与 BERT 的双向编码器不同,GPT 采用了单向的自回归生成模型,模型根据当前已生成的文本来预测下一个词,生成过程是逐步进行的。GPT 采用了类似于BERT 的预训练与微调的策略。首先,GPT 通过大规模的无标签文本数据进行预训练来学习语言的通用表示。然后,针对具体任务(如文本生成、翻译、对话等)进行微调。与 BERT 不同,GPT 的预训练任务是基于语言建模的自监督学习。GPT 通过最大化预测下一个单词的概率来进行训练,这使得 GPT 在文本生成任务上有出色的表现。
第3章 基于 ChatGPT 的缺陷报告质量增强
3.1 引言
3.2 方法整体框架
3.3 方法流程
3.4 实验设计
3.5 有效性威胁
3.6 本章小结
第4章 基于检索增强生成的软件缺陷复现测试用例生成
4.1 引言
4.2 方法整体框架
4.3 方法流程
4.4 实验设计
4.5 有效性威胁
4.6 本章小结
本章设计并实现的系统旨在缓解软件开发过程中存在的软件缺陷报告质量低下问题。本章将从利用大语言模型自动化的评估和增强缺陷报告的角度出发,利用本文研究内容中提出的自动化评估和增强缺陷报告质量的方法和技术,设计并实现一个可以为报告者和开发人员提供自动化的帮助的缺陷报告质量增强系统。通过该系统,可以自动化地评估报告者编写的缺陷报告质量并且给出修改意见,通过根据已有的信息利用大语言模型生成缺失的关键信息和复现测试用例提升缺陷报告质量。生成的信息可以为开发人员完成缺陷定位和修复提供帮助进而提升缺陷修复效率保证软件质量。
5.1 需求分析缺陷报告质量增强系统主要是针对缺陷报告提交人员以及开发者,它可在提交和修复缺陷过程中生成高质量的软件缺陷报告。系统核心功能模块有用户信息管理模块、缺陷报告管理模块、缺陷报告质量评估模块、缺陷报告质量增强模块以及复现测试用例生成模块。下面会对系统的功能需求进行介绍:用户信息管理模块,此模块为系统用户的信息管理给予功能方面的支持。新用户可以通过该模块的注册功能填写必要的个人信息注册新账号;已注册的系统用户使用该模块的登录功能可以通过填写必要的信息进入该系统;登录系统后用户可以在系统内查看和修改个人信息;已登录用户可以查看该账户的历史提交缺陷报告以及与该账户有关的数据。缺陷报告管理模块:该模块为系统用户提供了缺陷报告管理的功能支持。用户可通过该模块对系统包含的所有缺陷报告信息进行搜索、编辑、查看和删除等管理操作。该模块还为系统用户提供缺陷报告数据的可视化更加有效的帮助用户对缺陷进行管理。缺陷报告质量评估模块:该模块提供了缺陷报告质量评估相关的功能支持。用户通过该模块所提供的功能,可以对当前撰写的或已提交的缺陷报告进行质量评估,系统通过对缺陷报告进行必要的预处理操作,然后调用前文所述的评估缺陷报告质量模型检测缺陷报告是否缺失关键信息来准确的评估缺陷报告质量并反馈评估结果给用户,用户可根据评估结果改进缺陷报告质量。
缺陷报告质量增强模块:当报告者提交的缺陷报告被评估为低质量报告时,可通过该模块所提供的功能对缺陷报告的质量进行增强。系统通过结合前文所述的方法,为用户提交的低质量缺陷报告生成缺失的关键信息以提升缺陷报告质量。该模块生成缺失信息后的缺陷报告仍需要反馈给报告系统用户,供用户参考。缺陷复现测试用例生成模块:该模块结合前文提出的基于信息检索增强生成的相关技术帮助用户为提交的缺陷报告生成缺陷复现测试用例。该模块通过利用系统包含地历史缺陷报告信息结合大语言模型有效地生成缺陷复现测试用例,并将测试用例添加到缺陷报告中进而增强缺陷报告质量,为用户提供有效修复缺陷的关键信息。用户通过该系统对软件项目的缺陷报告数据进行有效的管理。系统的质量评估和质量增强以及缺陷复现测试用例
5.2.1 模块设计缺陷报告质量增强系统的总体功能模块如图 5-1 所示。该系统涵盖了用户信息管理、缺陷报告管理、缺陷报告质量评估、缺陷报告质量增强以及复现测试用例生成等五个模块。生成模块能够为报告者修改缺陷报告提供支持,帮助开发人员通过高质量的缺陷报告有效的定位和修复软件缺陷。用户可以通过用户信息管理模块所提供的功能进行新账户注册、用户登录并且对用户信息进行管理等操作。可以针对软件项目的历史缺陷报告进行管理以便提升缺陷报告质量增强效果和缺陷管理效率。通过缺陷报告质量评估模块为新撰写的报告进行质量评估,得出当前撰写的缺陷报告缺失哪些关键信息并反馈给用户。通过缺陷报告质量增强模块,自动化地生成其中的缺失信息供用户参考,从而提升用户编写的缺陷报告的质量。通过缺陷复现测试用例生成模块,可以结合相似的缺陷报告利用大语言模型为当前的缺陷报告生成缺陷复现测试用例提升缺陷报告质量以帮助开发人员更好的修复缺陷。
6.1 工作总结
软件缺陷报告在软件缺陷定位和修复任务中起着关键作用,其质量直接影响软件缺陷的修复效率以及软件项目质量,其质量问题也受到了研究人员广泛关注。本文对大语言模型方案进行了探索,借助自动化评估和提高缺陷报告质量来开展相关工作,针对缺陷报告质量评估不准确的情况,借助先进的预训练模型和微调技术,缓解当前方法存在的评估不准确问题。针对缺陷报告关键信息缺失的问题,利用先进的提示工程技术及大语言模型,依据当前缺陷报告的信息自动化生成缺失的 OB、EB、S2R 信息和缺陷复现测试用例,进而提高缺陷报告的质量。本文的研究主要体现以下 3 个方面:为解决现有方法评估缺陷报告质量不准确以及缺陷报告缺失关键信息致使缺陷报告质量低下的问题,本文提出了一种基于 ChatGPT 的缺陷报告质量增强方法 ChatBR。实验结果显示,本文所提出的方法在检测缺陷报告缺失信息任务中,照比现有方法精准度提升了 25.38%-29.20%;在生成缺失信息方面,ChatGPT 生成的缺失信息和原始信息的平均语义相似度达到 77.4%。为解决当前缺陷报告缺失缺陷复现测试用例,导致开发人员不能及时复现缺陷,使修复缺陷延期的问题。本文提出了一种基于 RAG 从缺陷报告中生成缺陷复现测试用例的方法 GIANT。GIANT 利用 RAG 在提示模板中添加历史相似缺陷报告,能更有效地引导模型生成缺陷复现测试用例。实验结果显示,GIANT 能够成功复现 51 个缺陷与现有方法相比,提升了 59.4%。鉴于对缺陷报告质量增强的研究,本文设计并实现了一个缺陷报告质量增强系统,该系统包含用户信息管理、缺陷报告管理、缺陷报告质量评估、缺陷报告质量增强以及缺陷复现测试用例生成等模块。利用已有的缺陷报告信息和大语言模型的优势,该系统可自动化增强缺陷报告质量,提高缺陷修复效率。
6.2 未来展望
本文对将大语言模型应用到软件缺陷报告质量增强任务中进行了初步的探索。但是,大语言模型本身仍在快速的发展,更先进的模型不断被提出,许多先进的提示工程技术也不断涌现。本文仅对众多模型的少数模型在有限的项目和数据集上进行了验证,先进的模型和先进的技术将带来更令人惊叹的效果。未来,我们将在以下几个方面展开更详细的研究:(1)针对提出的方法执行广泛的调研。探究提出的方法在真实的场景中的应用效果,确定经过大语言模型进行质量增强后的缺陷报告能够多大程度的帮助开发人员修复软件缺陷。此外,也需要在与缺陷报告有关的下游任务中执行广泛的验证以确定提出的方法对下游任务中自动化工具有多大程度的提升。(2)训练或微调适用于缺陷报告质量增强的大语言模型。现有的大语言模型大多并不针对与特定任务或领域而训练,这些模型在通用领域的语料上进行预训练导致模型在缺陷报告质量增强任务中的展现出的能力被低估。未来可以通过微调或重新训练专有模型的方式获取适用于缺陷报告质量增强的模型。(3)探索更加先进的提示工程技术。当前,提示仍然是与大语言模型交互的唯一方式。不同的提示会导致结果展现出显著的差异,如何寻找针对于当前任务最优的提示仍然被研究人员重点关注的问题。未来,可以通过先进的提示工程技术引导模型在缺陷报告质量增强任务中表现出更好的结果。
参考文献 略