CN113835739B - 一种软件缺陷修复时间的智能化预测方法 - Google Patents

一种软件缺陷修复时间的智能化预测方法 Download PDF

Info

Publication number
CN113835739B
CN113835739B CN202111110642.3A CN202111110642A CN113835739B CN 113835739 B CN113835739 B CN 113835739B CN 202111110642 A CN202111110642 A CN 202111110642A CN 113835739 B CN113835739 B CN 113835739B
Authority
CN
China
Prior art keywords
defect
source code
developer
report
vector
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202111110642.3A
Other languages
English (en)
Other versions
CN113835739A (zh
Inventor
孙海龙
袁薇
刘旭东
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beihang University
Original Assignee
Beihang University
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beihang University filed Critical Beihang University
Priority to CN202111110642.3A priority Critical patent/CN113835739B/zh
Publication of CN113835739A publication Critical patent/CN113835739A/zh
Application granted granted Critical
Publication of CN113835739B publication Critical patent/CN113835739B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/04Architecture, e.g. interconnection topology
    • G06N3/045Combinations of networks
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06NCOMPUTING ARRANGEMENTS BASED ON SPECIFIC COMPUTATIONAL MODELS
    • G06N3/00Computing arrangements based on biological models
    • G06N3/02Neural networks
    • G06N3/08Learning methods

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Mining & Analysis (AREA)
  • Computational Linguistics (AREA)
  • Biophysics (AREA)
  • Evolutionary Computation (AREA)
  • General Health & Medical Sciences (AREA)
  • Molecular Biology (AREA)
  • Computing Systems (AREA)
  • Biomedical Technology (AREA)
  • Artificial Intelligence (AREA)
  • Mathematical Physics (AREA)
  • Life Sciences & Earth Sciences (AREA)
  • Health & Medical Sciences (AREA)
  • Stored Programmes (AREA)

Abstract

本发明通过人工智能处理领域的方法,实现了一种软件缺陷修复时间的智能化预测方法。方法采用四个子模型分别提取不同类型的特征:开发人员活动、开发人员情感状态、缺陷语义、源代码分析引入的开销,最后,通过一个定制化的多层感知器来融合高层特征,并将四种特征通过最佳的方式结合,进行缺陷修复时间的预测。提出一种能够预测准确,且考虑由缺陷评论反映出的开发人员的情感状态因素、影响修复进程的缺陷语义,以及开发人员在检查和分析源代码文件时投入的开销的软件缺陷修复时间预测方法。

Description

一种软件缺陷修复时间的智能化预测方法
技术领域
本发明涉及人工智能领域,尤其涉及一种软件缺陷修复时间的智能化预测方法。
背景技术
随着软件功能的不断丰富和性能要求的不断提高,软件规模和复杂度不断增大,软件调试的需求和压力也逐渐增大,所以软件开发团队需要对项目有合理的任务安排,使得开发人员能将更多的精力投入到软件新需求的研发中。缺陷修复时间不仅是进行软件项目管理的重要依据,还是影响用户体验以及评估软件质量的重要因素。通常,缺陷修复时间是指从缺陷提交到该缺陷被解决的时间,而缺陷报告是进行缺陷修复时间预测的主要数据来源。然而,由于调试过程复杂,不确定性因素多,要准确预测缺陷的修复时间面临着较大挑战。
现有研究工作在预测缺陷修复时间时,主要基于缺陷报告的静态属性和与开发人员相关的缺陷活动。缺陷报告的静态属性包括缺陷优先级、缺陷严重性、缺陷涉及的组件或平台等。开发人员活动则从调试参与者的角度记录了与缺陷相关的信息。例如,缺陷报告由具有何种开发经验的报告者提交、缺陷报告是否被抄送给其他开发人员等。预测缺陷修复时间可被看作是分类问题或回归问题。较为常见的是被看作二分类问题,即预先设定缺陷修复时间阈值(例如,修复历史中缺陷修复天数的中位数),并将缺陷分为修复快/修复慢两类,也有一些研究工作将该问题看作是多分类问题,且多种数据挖掘技术已被用来解决这些分类问题,如决策树、朴素贝叶斯。一些研究工作还利用缺陷报告的文本信息来预测修复时间,并基于这样的假设:相似的缺陷需要相似的修复时间。
采用开发人员活动对缺陷修复时间进行预测时,活动之间的关系(特别是顺序性)不可被忽视,它蕴含了活动之间的潜在的依赖关系。因此,现有方法通过隐马尔可夫模型以及基于LSTM的深度神经网络模型来更加深入地学习和利用开发人员活动序列的时序性,进而预测缺陷所需的修复时间。
现有方法主要基于缺陷报告的静态属性以及开发人员活动之间的时序性,忽略了实际调试中对修复进程有较大影响的其他因素。例如,缺陷的语义、源代码分析引入的潜在开销、开发人员的情感状态。特别是在缺陷处于生命周期的早期阶段,活动不够充分甚至不可用时,现有缺陷修复时间预测方法的性能将会大幅下降。
本发明针对基于缺陷报告的缺陷修复时间预测,旨在提出一种软件缺陷修复时间的智能化预测方法,解决现有方法预测不够准确,且未考虑影响修复进程的其他重要因素的问题,如缺陷语义、开发人员在检查和分析源代码文件时投入的开销,以及由缺陷评论反映出的开发人员的情感状态。
具体来说,主要解决的问题包括:(1)为了融合影响缺陷修复时间的多种因素,针对不同的数据类型,分别设计神经网络模型来提取特征,并将提取的特征融入用于缺陷修复时间预测的统一化模型,从而提高预测的准确性。(2)为了刻画修复过程中源代码分析引入的开销,提出了一种基于源代码依赖关系的源代码分析开销量化方法。
发明内容
为此,本发明首先提出一种软件缺陷修复时间的智能化预测方法,所述软件缺陷修复时间的智能化预测方法采用四个子模型分别提取不同类型的特征:开发人员活动模块、开发人员情感状态模块、缺陷语义模块、源代码分析引入的开销模块。最后,通过一个定制化的多层感知器来融合高层特征,并将四种特征通过最佳的方式结合,进行缺陷修复时间的预测;
所述开发人员活动模块,利用活动日志记录的开发人员在缺陷生命周期中的活动以及相应的缺陷状态,从活动日志提取开发人员活动时,分别从参与、沟通、缺陷状态三个方面进行分析和提取;实现中开发人员活动个数记作a,Embedding层的维度和GRU中隐藏状态的维度均设置为64,经过最大池化操作后,输出长度为64的一维向量。
所述参与反映缺陷生命周期中涉及的人员的活动类型,分为报告、分派、抄送三种数据类型,报告反映缺陷报告提交者的经验,包括新手、具有一定经验的提交者和经验较丰富的提交者三种分类;缺陷提交后会被指派给特定的开发人员或由开发人员自愿对其修复,分派标记缺陷确认后被分派给指定开发者和缺陷确认后等待开发者自愿修复两种状态;抄送标记抄送的开发人员个数等于1和大于1两种分类。
所述沟通反映缺陷修复过程中参与者付出的努力以及当前的缺陷修复进展,通过文件和公告板交互来体现。
所述缺陷状态,里程碑反映了开发人员对当前缺陷修复的目标,缺陷重要性变更反映了缺陷报告重要性(缺陷严重性和缺陷优先级)的升级和降级,关系反映了当前缺陷与其他缺陷的关联,若当前缺陷有赖于其他缺陷的解决,或其他缺陷有赖于当前缺陷的解决,活动将被标记。
所述开发人员情感模块对于每个缺陷的评论,首先按照评论发布的时间戳进行排序,然后通过情感分析工具Senti4SD来提取每条评论的情感特征,在判定所述情感类别的过程中提取四个语义特征,并采用所述语义特征,将每个缺陷的多个评论情感特征看作一个序列,采用门控循环单元GRU构成的循环神经网络来提取用于修复时间的高层情感特征,对于每个缺陷报告,将用于情感分析的评论个数记作b,每个评论的情感特征向量维度是4,输入向量维度为b×4,GRU模型的隐藏状态维度设置为64,则经过最大池化操作后,输出长度为64的一维向量;
所述缺陷语义利用缺陷报告中的文本语义对缺陷修复时间进行预测。
所述情感特征分为:积极、消极和中立三类。
所述语义特征分为:Sim_pos、Sim_neg、Sim_neu三个客观语义相似度和Sim_sub一个主观相似度。
所述缺陷报告模块中的文本包括摘要、描述、评论,摘要和描述分别以不同粒度对当前缺陷进行介绍,包括缺陷发生时的错误症状、相关的错误信息,以及可能出错的组件或代码,所述缺陷语义通过摘要和描述的语义信息将缺陷本身的含义与缺陷修复时间建立关联,首先用Word2Vec对文本拆分后得到的词汇进行词嵌入,然后通过基于CNN的模型来提取文本语义,具体过程为将缺陷报告中摘要、描述以及评论的文本进行拼接,输入的词汇序列最大长度记作b。用Word2Vec训练词嵌入时,词向量的维度设置为200,第一个卷积层中,卷积窗口高度分别取2、3、4,且每种规格的卷积窗口对应128个不同的卷积核,第一个最大池化层的窗口大小为2,则第一次卷积池化操作完成后,输出向量的高度且输出的通道数为128,第二层卷积中,卷积窗口高度为3,卷积核为128个。第二次卷积池化操作完成后,将128个通道的输出拼接/>输入3层全连接网络,得到长度为64的一维向量。将三个64维向量拼接,通过三层全连接网络后,最终输出长度为64的一维向量。
所述评论包括对缺陷错误状态及相关信息的问询、对缺陷错误原因的分析、以及对缺陷修复策略的建议和讨论。
所述源代码分析引入的开销模块采用基于源代码依赖关系的高维特征来表示缺陷,以反映开发人员在缺陷修复过程中对源代码投入的开销,应用引用热度区间的方法,通过定制化的蚁群算法获得每个文件的引用热度,并将文件的热度区间个数nHI设置为1024,生成1024维的引用热度区间向量,将该向量输入3层全连接网络后,最终输出长度为64的一维向量。
所述引用热度区间向量具体方法为,首先,对于应用所有源代码文件中包含的词汇,根据如下公式:
为每个词汇生成一个nHI维的向量,其中,N为所有源代码的词汇空间大小,tij表示第i个词汇在第j维的值,fs(i)表示第i个词汇在源代码文件s中出现的次数,s∈[1,nsrc],nsrc为源代码文件总数,指示源代码文件s,即srcs是否属于第j个引用热度区间,ti表示第i个词汇的RefHI词汇向量,生成词汇的RefHI向量能够让每个词汇继承所属源代码文件的引用热度特征。
通过公式
计算出缺陷报告r的RefHI向量,即每个缺陷报告的RefHI。
向量为所述摘要和描述中词汇的加权RefHI向量,且文本中相同词汇并不重复进行加权计算,词汇i的权重wi通过TF-IDF计算,fr(i)代表缺陷报告r中词汇i的个数,(i)表示以所有源代码文件为文档合集时词汇i的IDF值,
通过这种方式,为缺陷报告生成1024维的引用热度区间向量,将该向量输入三层的多层感知器模型,输出长度为64的一维向量。
最后,将上述四个子模型的输出向量拼接,通过由4个全连接层构成的MLP网络学习特征之间的高阶关联关系并降维,最终输出缺陷修复时间。
本发明所要实现的技术效果在于:
(1)融合影响缺陷修复时间的多种因素,针对不同的数据类型,分别设计神经网络模型来提取特征,并将提取的特征融入用于缺陷修复时间预测的统一化模型,从而提高预测的准确性。
(2)刻画修复过程中源代码分析引入的开销,提出了一种基于源代码依赖关系的源代码分析开销量化方法。
附图说明
图1软件缺陷修复时间的智能化预测方法总体框架;
图2缺陷报告中的活动日志示例
图3本发明中具体神经网络结构图
具体实施方式
以下是本发明的优选实施例并结合附图,对本发明的技术方案作进一步的描述,但本发明并不限于此实施例。
本发明提出了一种软件缺陷修复时间的智能化预测方法。总体框架如图1所示。BuFTNN中的四个子模块分别用于提取不同类型的特征:开发人员活动的依赖关系(Activity4Time)、开发人员情感状态(Senti4Time)、缺陷语义(Text4Time)、源代码分析引入的开销(Src4Time)。最后,通过一个定制化的多层感知器来融合高层特征,并将四种特征通过最佳的方式结合,进行缺陷修复时间的预测。
下面将分别介绍每个子模块。
开发人员活动(Activity4Time)
缺陷报告中的活动日志记录了开发人员在缺陷生命周期中的活动以及相应的缺陷状态,图2为活动日志的示例。从活动日志提取开发人员活动时,本专利采用同现有方法类似的方法,即分别从参与、沟通、缺陷状态三个方面进行分析和提取。
表1列出了具体采用的活动类型和描述。
参与:包含的活动主要反映了缺陷生命周期中涉及的人员类型,“报告”反映了缺陷报告提交者的经验,包括的状态有新手(N)、具有一定经验的提交者(M)和经验较丰富的提交者(E)。缺陷提交后会被指派给特定的开发人员或由开发人员自愿对其修复。表中“分派”对这两种状态分别用A和R进行表示。缺陷指派不仅能反映出缺陷之间的关联关系,还能反映开发人员在调试活动中形成的关系网络。对于“抄送”,现有方法将一定时间间隔内缺陷被抄送的开发人员个数作为缺陷修复时间预测模型的特征。
沟通:开发人员与开发人员、开发人员与缺陷提交者之间的沟通能够反映缺陷修复过程中参与者付出的努力以及当前的缺陷修复进展。因此,表1中分别通过文件(F)和公告板(W)的交互来体现这一特征。
缺陷状态:与缺陷状态相关的活动中,设置里程碑反映了开发人员对当前缺陷修复的目标。缺陷的重要性也是辅助开发人员进行任务安排和资源分配的依据,可以通过缺陷报告的两个属性来反映:缺陷严重性和缺陷优先级。研究发现,重要性提高的缺陷平均修复时间要低于重要性降低的缺陷平均修复时间。因此,本专利在提取开发人员活动时,对缺陷重要性变化进行了细化,即对重要性等级被调整为更高级别(SU、PU)还是被降低为较低级别(SD、PD)加以区分。此外,考虑到缺陷之间可能存在的关联关系,本专利提取了与该属性相关的活动。若当前缺陷有赖于其他缺陷的解决(D),或其他缺陷有赖于当前缺陷的解决(B),活动将被标记。实际情况中,需要根据有限的开发人员活动来预测缺陷所需的修复时间。因此,与现有方法不同,本专利并未采用“Resolution”类型的活动。因此,根据表1对开发人员活动的定义,从图2所示的活动日志中提取的开发人员活动序列为[E,C,A,D,T]。
表1开发人员活动类型
利用表1中开发人员活动的定义和活动日志中的时间戳,可以提取与开发人员相关的缺陷活动序列。从本质上来看,调试过程中发生的活动遵循缺陷生命周期的潜在演化规律。因此,Activity4Time采用循环神经网络(recurrent neural network,RNN)来处理活动序列。特别地,考虑到序列中间隔较远的活动之间的依赖关系,本专利采用门控循环单元(gated recurrent unit,GRU)作为RNN的基本组成单元。进一步,将提取的活动序列输入RNN,从而提取开发人员活动依赖关系的特征。
开发人员情感
开发人员情感中,对于每个缺陷的评论,首先按照评论发布的时间戳进行排序,然后通过情感分析工具Senti4SD来提取每条评论的情感特征。Senti4SD的输出情感分为三类:积极(positive)、消极(negative)和中立(neutral)。在判定情感类别的过程中,Senti4SD提取四个语义特征:三个客观语义相似度(Sim_pos、Sim_neg、Sim_neu)和一个主观相似度(Sim_sub)。为了保留更多的特征信息并防止过拟合,开发人员情感并未直接使用Senti4SD输出的情感类别,而采用每个语料的四个语义特征。与一般的商品评论或影视评论不同,缺陷的多条评论均围绕当前缺陷展开,且评论之间具有顺序性及较强的逻辑关系。因此,开发人员情感将每个缺陷的多个评论情感特征看作一个序列,并采用门控循环单元GRU构成的循环神经网络来提取用于修复时间的高层情感特征。
缺陷语义
缺陷语义利用缺陷报告中的文本(包括摘要、描述、评论)语义对缺陷修复时间进行更好的预测。缺陷报告中的摘要和描述分别以不同粒度对当前缺陷进行了介绍,包括缺陷发生时的错误症状、相关的错误信息,以及可能出错的组件或代码。缺陷语义试图通过摘要和描述的语义信息将缺陷本身的含义与缺陷修复时间建立关联。缺陷报告中的评论是开发人员在调试过程中进行沟通的主要方式,评论可能是对缺陷错误状态及相关信息的问询、对缺陷错误原因的分析、以及对缺陷修复策略的建议和讨论。评论不仅包含了缺陷本身的客观信息,还包含了开发人员参与软件开发活动的一些主观信息。缺陷语义中,首先用Word2Vec对文本拆分后得到的词汇进行词嵌入,然后通过基于CNN的模型来提取文本语义,该模型与文献提出的CNN模型类似。
源代码分析开销
除缺陷报告外,源代码也是影响缺陷修复时间的重要因素。源代码对缺陷修复时间的影响主要体现在对错误原因的分析和修复策略的制定(包括修复补丁的生成)。一方面,开发人员需要分析代码诊断出错误的根本原因,并确定具体出错的代码位置。另一方面,开发人员对修复策略的制订也依赖于源代码。例如,开发人员需要衡量当前缺陷所引发的失效是否值得对源代码进行一些复杂的逻辑更改,需要考虑源代码文件的规模、复杂度等因素。并且,不同类型的代码变更所需的缺陷修复时间也有所不同。虽然并非所有的缺陷最终都通过修改源代码得以解决,但源代码依然是确定最终解决方案的重要依据。因此,对缺陷修复时间进行预测时,不应该也不能忽视调试过程中源代码带来的潜在开销。对源代码和修复时间的关系进行建模时,直接使用源代码文件的代码行数、圈复杂度等浅层特征容易造成过拟合。并且,考虑到调试过程中通常不止涉及一个源代码文件,因此源代码分析开销采用了一种基于源代码依赖关系的高维特征来表示缺陷,以反映开发人员在缺陷修复过程中对源代码投入的开销。
引用热度区间:首先,基于应用的源代码构建类依赖图,然后通过定制化的蚁群算法获得每个文件的引用热度(reference heat,RefHeat),即每个类被引用的频次。该算法基于类依赖图中每个节点(类)的出入度属性,而每只蚂蚁在依赖图上选择下一步时决于该类的出节点,所以该算法能够有效地反映类之间的依赖关系。由于文件引用热度值(RefHeat)较为离散,且随着应用的不同,值域范围变化较大,所以将应用中所有文件引用热度值取自然对数后的值域等分成区间,称作引用热度区间(reference heat interval,RefHI),区间个数记作nHI。为了使模型具有较好的泛化能力,适用于不同的应用,本专利将文件的热度区间个数nHI设置为1024,且该区间个数已在实验中得到验证。进而,每个源代码文件所属的RefHI为该文件的引用热度值取对数后落入的区间。
引用热度区间向量:下一步,通过缺陷报告与源代码文件中的词汇对两者建立关联,并对缺陷报告进行表示。首先,对于应用所有源代码文件中包含的词汇,根据公式(1)–(3)为每个词汇生成一个nHI维的向量。其中,N为所有源代码的词汇空间大小,tij表示第i个词汇在第j维的值,fs(i)表示第i个词汇在源代码文件s中出现的次数(s∈[1,nsrc],nsrc为源代码文件总数)。指示源代码文件s(即srcs)是否属于第j个引用热度区间(公式(2))。然后,tij正规化为t'ij,则第i个词汇的RefHI词汇向量被表示为ti(公式(3))。生成词汇的RefHI向量能够让每个词汇继承所属源代码文件的引用热度特征。
进一步,由公式(4)计算出缺陷报告r的RefHI向量。即每个缺陷报告的RefHI
向量为缺陷报告文本(摘要和描述)中词汇的加权RefHI向量,且文本中相同词汇并不
重复进行加权计算。词汇i的权重wi可通过TF-IDF计算。fr(i)代表缺陷报告r中词汇i的个数。表示以所有源代码文件为文档合集时词汇i的IDF值。
报告进行表示,从源代码的角度反映了解决当前缺陷的复杂性和关联性,并建立起源代码分析引入的开销和修复时间之间的关联。
模型实现
图3展示了BuFTNN的具体网络结构。下面将分别介绍每个子模块的具体模型设计和实现。
Activity4Time输入的活动序列最大长度(即活动个数)记作a,Embedding层的维度和GRU中隐藏状态的维度均设置为64,经过最大池化操作后,Activity4Time将输出长度为64的一维向量。
Senti4Time对于每个缺陷报告,将用于情感分析的评论个数记作b,每个评论的情感特征向量维度是4,则输入向量维度为b×4。GRU模型的隐藏状态维度设置为64,则经过最大池化操作后,模型输出长度为64的一维向量。Text4Time将缺陷报告中摘要、描述以及评论的文本进行拼接,输入的词汇序列最大长度记作c。用Word2Vec训练词嵌入时,词向量的维度设置为200。第一个卷积层中,卷积窗口高度分别取2、3、4,且每种规格的卷积窗口对应128个不同的卷积核,第一个最大池化层的窗口大小为2,则第一次卷积池化操作完成后,输出向量的高度且输出的通道数为128。第二层卷积中,卷积窗口高度为3,卷积核为128个。第二次卷积池化操作完成后,将128个通道的输出拼接
输入3层全连接网络,得到长度为64的一维向量。将三个64维向量拼接,通过三层全连接网络后,Text4Time最终输出长度为64的一维向量。
Src4Time根据公式(4)可为缺陷报告生成1024维的引用热度区间向量。将该向量输入三层的多层感知器(MLP)模型,输出长度为64的一维向量。
最后,将上述四个子模型的输出向量拼接,通过由4个全连接层构成的MLP网络学习特征之间的高阶关联关系并降维,最终输出缺陷修复时间。

Claims (5)

1.一种软件缺陷修复时间的智能化预测方法,其特征在于:采用四个子模型分别提取不同类型的特征:开发人员活动模块、开发人员情感状态模块、缺陷语义模块、源代码分析引入的开销模块,最后,通过一个定制化的多层感知器来融合高层特征,并将四种特征通过最佳的方式结合,进行缺陷修复时间的预测;
具体地,所述开发人员活动模块,利用活动日志记录的开发人员在缺陷生命周期中的活动以及相应的缺陷状态,从活动日志提取开发人员活动时,分别从参与、沟通、缺陷状态三个方面进行分析和提取;实现中开发人员活动个数记作a,Embedding层的维度和GRU中隐藏状态的维度均设置为64,经过最大池化操作后,输出长度为64的一维向量;
所述开发人员情感模块对于每个缺陷的评论,首先按照评论发布的时间戳进行排序,然后通过情感分析工具Senti4SD来提取每条评论的情感特征,在判定所述情感类别的过程中提取四个语义特征,并采用所述语义特征,将每个缺陷的多个评论情感特征看作一个序列,采用门控循环单元GRU构成的循环神经网络来提取用于修复时间的高层情感特征,对于每个缺陷报告,将用于情感分析的评论个数记作b,每个评论的情感特征向量维度是4,输入向量维度为b×4,GRU模型的隐藏状态维度设置为64,则经过最大池化操作后,输出长度为64的一维向量;
所述缺陷语义模块利用缺陷报告中的文本语义对缺陷修复时间进行预测;所述缺陷报告中的文本包括摘要、描述、评论,摘要和描述分别以不同粒度对当前缺陷进行介绍,包括缺陷发生时的错误症状、相关的错误信息,以及可能出错的组件或代码,所述缺陷语义通过摘要和描述的语义信息将缺陷本身的含义与缺陷修复时间建立关联,首先用Word2Vec对文本拆分后得到的词汇进行词嵌入,然后通过基于CNN的模型来提取文本语义,具体过程为将缺陷报告中摘要、描述以及评论的文本进行拼接,输入的词汇序列最大长度记作c;用Word2Vec训练词嵌入时,词向量的维度设置为200,第一个卷积层中,卷积窗口高度分别取2、3、4,且每种规格的卷积窗口对应128个不同的卷积核,第一个最大池化层的窗口大小为2,则第一次卷积池化操作完成后,输出向量的高度 且输出的通道数为128,第二层卷积中,卷积窗口高度为3,卷积核为128个;第二次卷积池化操作完成后,将128个通道的输出拼接/> 输入3层全连接网络,得到长度为64的一维向量;将三个64维向量拼接,通过三层全连接网络后,最终输出长度为64的一维向量;
所述源代码分析引入的开销模块采用基于源代码依赖关系的高维特征来表示缺陷,以反映开发人员在缺陷修复过程中对源代码投入的开销,应用引用热度区间的方法,通过定制化的蚁群算法获得每个文件的引用热度,并将文件的热度区间个数nHI设置为1024,生成1024维的引用热度区间向量,将该向量输入3层全连接网络后,最终输出长度为64的一维向量;
最后,将所述开发人员活动、开发人员情感状态、缺陷语义、源代码分析引入的开销四个子模型的输出向量拼接,通过由4个全连接层构成的MLP网络学习特征之间的高阶关联关系并降维,最终输出缺陷修复时间。
2.如权利要求1所述的一种软件缺陷修复时间的智能化预测方法,其特征在于:所述参与反映缺陷生命周期中涉及的人员的活动类型,分为报告、分派、抄送三种数据类型,报告反映缺陷报告提交者的经验,包括新手、具有一定经验的提交者和经验较丰富的提交者三种分类;缺陷提交后会被指派给特定的开发人员或由开发人员自愿对其修复,分派标记缺陷确认后被分派给指定开发者和缺陷确认后等待开发者自愿修复两种状态;抄送标记抄送的开发人员个数等于1和大于1两种分类。
3.如权利要求2所述的一种软件缺陷修复时间的智能化预测方法,其特征在于:所述沟通反映缺陷修复过程中参与者付出的努力以及当前的缺陷修复进展,通过文件和公告板交互来体现;
所述缺陷状态,里程碑反映了开发人员对当前缺陷修复的目标,缺陷重要性变更反映了缺陷报告重要性(缺陷严重性和缺陷优先级)的升级和降级,关系反映了当前缺陷与其他缺陷的关联关系,若当前缺陷有赖于其他缺陷的解决,或其他缺陷有赖于当前缺陷的解决,活动将被标记。
4.如权利要求3所述的一种软件缺陷修复时间的智能化预测方法,其特征在于:所述缺陷语义利用缺陷报告中的文本语义对缺陷修复时间进行预测;
所述情感特征分为:积极、消极和中立三类;
所述语义特征分为:Sim_pos、Sim_neg、Sim_neu三个客观语义相似度和Sim_sub一个主观相似度;
所述评论包括对缺陷错误状态及相关信息的问询、对缺陷错误原因的分析、以及对缺陷修复策略的建议和讨论。
5.如权利要求4所述的一种软件缺陷修复时间的智能化预测方法,其特征在于:所述引用热度区间向量具体方法为,首先,对于应用所有源代码文件中包含的词汇,根据如下公式:
为每个词汇生成一个nHI维的向量,其中,N为所有源代码的词汇空间大小,tij表示第i个词汇在第j维的值,fs(i)表示第i个词汇在源代码文件s中出现的次数,s∈[1,nsrc],nsrc为源代码文件总数,指示源代码文件s,即srcs是否属于第j个引用热度区间,ti表示第i个词汇的RefHI词汇向量,生成词汇的RefHI向量能够让每个词汇继承所属源代码文件的引用热度特征;
通过公式
计算出缺陷报告r的RefHI向量,即每个缺陷报告的RefHI;
向量为所述摘要和描述中词汇的加权RefHI向量,且文本中相同词汇并不重复进行加权计算,词汇i的权重wi通过TF-IDF计算,fr(i)代表缺陷报告r中词汇i的个数,(i)表示以所有源代码文件为文档合集时词汇i的IDF值,通过这种方式,为缺陷报告生成1024维的引用热度区间向量,将该向量输入三层的多层感知器模型,输出长度为64的一维向量。
CN202111110642.3A 2021-09-18 2021-09-18 一种软件缺陷修复时间的智能化预测方法 Active CN113835739B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111110642.3A CN113835739B (zh) 2021-09-18 2021-09-18 一种软件缺陷修复时间的智能化预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111110642.3A CN113835739B (zh) 2021-09-18 2021-09-18 一种软件缺陷修复时间的智能化预测方法

Publications (2)

Publication Number Publication Date
CN113835739A CN113835739A (zh) 2021-12-24
CN113835739B true CN113835739B (zh) 2023-09-26

Family

ID=78968952

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111110642.3A Active CN113835739B (zh) 2021-09-18 2021-09-18 一种软件缺陷修复时间的智能化预测方法

Country Status (1)

Country Link
CN (1) CN113835739B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117369864B (zh) * 2023-12-05 2024-03-22 深圳市光子跃动科技有限公司 一种基于人工智能的集成化软件开发处理方法及系统

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8881095B1 (en) * 2012-03-30 2014-11-04 Sprint Communications Company L.P. Software defect prediction
CN107066389A (zh) * 2017-04-19 2017-08-18 西安交通大学 基于集成学习的软件缺陷重新打开的预测方法
CN112181428A (zh) * 2020-09-28 2021-01-05 北京航空航天大学 一种基于抽象语法树的开源软件缺陷数据分类方法及系统

Family Cites Families (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117951701A (zh) * 2016-04-22 2024-04-30 谭琳 用于确定软件代码中的缺陷和漏洞的方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8881095B1 (en) * 2012-03-30 2014-11-04 Sprint Communications Company L.P. Software defect prediction
CN107066389A (zh) * 2017-04-19 2017-08-18 西安交通大学 基于集成学习的软件缺陷重新打开的预测方法
CN112181428A (zh) * 2020-09-28 2021-01-05 北京航空航天大学 一种基于抽象语法树的开源软件缺陷数据分类方法及系统

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
面向单个文件的个性化缺陷预测方法;陈恒;刘文广;高东静;彭鑫;赵文耘;;计算机科学(第04期);全文 *

Also Published As

Publication number Publication date
CN113835739A (zh) 2021-12-24

Similar Documents

Publication Publication Date Title
EP3872626B1 (en) Utilizing artificial intelligence and machine learning models to reverse engineer an application from application artifacts
CN113138920B (zh) 基于知识图谱与语义角色标注的软件缺陷报告分派方法及装置
CN113835739B (zh) 一种软件缺陷修复时间的智能化预测方法
Qiao et al. Deep feature learning to quantitative prediction of software defects
US11790210B1 (en) Heirarchical prediction models for unstructured transaction data
Shamshiri et al. Text mining and natural language processing in construction
Bibyan et al. Bug severity prediction using LDA and sentiment scores: A CNN approach
Mozannar et al. When to show a suggestion? integrating human feedback in ai-assisted programming
CN115292167A (zh) 生命周期预测模型构建方法、装置、设备及可读存储介质
Jubair et al. A multi‐agent K‐means with case‐based reasoning for an automated quality assessment of software requirement specification
KASSEM et al. Software effort estimation using hierarchical attention neural network
JP2023527276A (ja) データ要素の所与のセットのデータ要素のソート
Veitía et al. User Stories identification in software's issues records using natural language processing
Balogh et al. Capturing expert knowledge to guide data flow and structure analysis of large corporate databases
Mahfoodh et al. Word2vec duplicate bug records identification prediction using tensorflow
Uddin et al. BSDRM: a machine learning based bug triaging model to recommend developer team
Sembhoo et al. A SLR on Deep Learning Models Based on Textual Information For Effort Estimation in Scrum
US10169074B2 (en) Model driven optimization of annotator execution in question answering system
Gupta et al. A meta level data mining approach to predict software reusability
CN116611519B (zh) 一种基于生产链全周期事理图谱的时间规划方法及系统
CN117852553B (zh) 基于聊天记录提取元器件交易场景信息的语言处理系统
CN110580261B (zh) 针对高科技公司的深度技术追踪方法
Banujan et al. Classification of Product Backlog Items in Agile Software Development: A Deep Learning-Based Approach.
Zhang et al. Confidence Evaluation Algorithm of Aerospace Software Based on Deep Auto-Encoding Network
Yau Investigate the challenges and opportunities of MLOps

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant