当前位置: 首页 > 专利查询>南京大学专利>正文

基于多目标优化的软件缺陷定位方法技术

技术编号:16885820 阅读:52 留言:0更新日期:2017-12-27 03:37
本发明专利技术公开了基于多目标优化的软件缺陷定位方法,包括:整理软件项目的代码文件、BUG报告以及开发人员信息;提取代码文件和BUG报告中的关键词,基于词袋模型计算代码文件和BUG报告的文本相似度函数;基于代码文件的结构特征度量,计算代码文件的结构复杂度函数;基于代码文件的开发人员信息,计算人员生疏度函数;给定BUG报告,基于上相似度函数、结构复杂度函数和开发人员生疏度函数函数,采用基于多目标优化的二阶段排序方法对代码文件进行排序,输出高缺陷怀疑率的代码文件。本发明专利技术计算简单,扩展性强,能快速有效地定位缺陷代码,可用于不同类型的代码文件,适用于大规模软件产品的开发和维护过程。

Software defect location method based on multi-objective optimization

The invention discloses a software fault localization based on multi-objective optimization, including the code file, finishing the software project with BUG report and the development of personnel information; keyword extraction code files and the BUG report, text similarity function to calculate the code file and the BUG report based on the bag of words model; feature code file based on the metric structure, structure the calculation code file complexity function; code file information developers based on the calculation of personnel unfamiliar function; given the BUG report, the complex functions and developers unfamiliar function function similarity function, based on the structure, using two stage multi-objective optimization scheduling method based on the code files are sorted, the output of high defect doubt code rate. The invention is simple in computation, strong in expansibility, fast and effective in locating defect codes, and can be applied to different types of code files, and is suitable for developing and maintaining large-scale software products.

【技术实现步骤摘要】
基于多目标优化的软件缺陷定位方法
本专利技术涉及软件工程领域,尤其涉及基于多目标优化的软件缺陷定位方法。
技术介绍
软件缺陷在软件的开发和维护过程中不可避免,尤其随着软件规模不断扩大,缺陷数量也越来越庞大,例如,仅在2013年,针对EclipsePlatform就产生3389份BUG报告。软件调试的主要目的包括缺陷的发现、定位、理解和移除,软件企业内部的开发实践表明,缺陷定位在调试过程中是一项难度高且费时费力的重要活动。人工调试代码以达到缺陷定位的目的往往代价高昂而又效率低下,并且,人工调试往往依据开发或维护人员的个人经验,具有不可复用性。为高效定位缺陷,研究人员提出了许多自动调试方法。根据是否需要执行测试用例,可以将自动缺陷定位方法分为动态和静态两种类别,动态的缺陷定位方法需要分析被测试程序的内在结构,搜集测试用例的执行轨迹和结果,基于特定模型以确定缺陷代码的位置;静态的方法重点分析代码文件和程序的内部结构如控制依赖关系、数据依赖关系等,从中提取特征,利用机器学习方法等构建代码文件评分机制,输出高缺陷怀疑率的代码文件列表。现有的静态缺陷定位方法中,基于信息检索方法计算代码文件与BUG报告的文本相似度是一种主流思想,例如研究者提出的BUGLocator基于向量空间模型计算当前BUG报告与代码文件及历史BUG报告的文本相似度;BLUiR工具基于结构化信息检索为代码文件中类名、方法名等赋予不同权重。然而,现有方法需要历史数据,通过监督学习训练权重参数等,计算复杂度高,不适用于大规模软件的实时开发和维护过程。综上,现有技术中的缺陷定位方法计算复杂度高,不易于大规模软件开发和维护。
技术实现思路
本专利技术提供了基于多目标优化的软件缺陷定位方法,相比现有技术,计算方法简单,提高了调试效率,能够有效节约人力和时间成本。基于多目标优化的软件缺陷定位方法,包括:S1、采集待测软件的代码文件、BUG报告和开发人员经验信息,其中,代码文件对于面向对象语言是指面向对象的类文件,对于面向过程语言则指单个代码文件;BUG报告包含需要定位的软件缺陷数据;软件项目开发过程中的文档编写者数据包括开发人员经验信息;S2、所述代码文件和所述BUG报告加载关键词提取方法,得到代码文件关键词和BUG文件关键词;S3、将所述代码文件关键词和所述BUG文件关键词通过词袋模型构造出代码文件S和BUG报告R,根据所述代码文件S和所述BUG报告R定义相似度函数;S4、所述代码文件S的结构特征度量依据结构复杂度函数生成算法,得到所述代码文件S的结构复杂度函数;S5、根据所述开发人员经验信息,计算得到开发人员生疏度函数;S6、所述相似度函数、所述结构复杂度函数、所述开发人员生疏度函数采用基于多目标优化的二阶段排序方法对所述代码文件S进行排序,得到代码文件完整序列;S7、将所述代码文件完整序列中的top-k代码文件标记为高缺陷怀疑率的代码文件,即代码文件完整序列中的前k位,其中,k是正整数,k值可以根据软件缺陷的严重程度和复杂程度进行人工调整。进一步的,所述关键字提取方法包括:S21、将所述代码文件和所述BUG报告分解成由无序的标识符组成的集合;S22、过滤掉所述集合中的标点符号、操作数、操作符和编程语言中的保留字,得到过滤后的集合;S23、对于合成词组成的标识符,根据大写字母将所述标识符拆解成单个的词;S24、对所述过滤后的集合进行英文单词的词根化处理,由此得到所述代码文件和BUG文件的关键词集合。进一步的,所述S3包括:S31、根据所述代码文件关键词和所述BUG文件关键词构造语料库V;S32、所述语料库V应用词袋模型将所述代码文件和所述BUG报告分别表示为代码文件S和BUG报告R,所述代码文件S和所述BUG报告R是一维向量集合,其中,和为关键词t分别在所述代码文件S和所述BUG报告R中词频与逆向文件频率idft的乘积,计算公式如下:其中,为关键词t在文件d中出现的次数,d为所述代码文件S或所述BUG报告R,N表示文件d的总数目,Nt是包含关键词t的文件数目;S33、根据所述代码文件S和所述BUG报告R定义所述相似度函数,所述相似度函数为:其中,RTS为R与S的内积,T为向量转置,||R||和||S||分别为R与S的模,即所有元素平方和的平方根。进一步的,所述结构特征度量包括:代码行数(LOCLineofCode),代表代码文件中执行语句的总行数;最大McCabe环路复杂度(MAX_CC,MaxMcCabecomplexity),代表代码文件中方法/函数的最大McCabe环路复杂度;代码修改次数(NOCNumberofCorrect),代表代码文件被修改次数;依赖的文件数目(DFNDependedFileNumber)、代表代码文件所依赖的其他代码文件数目;非注释代码行数(NLCNoncommentedLinesofCode),代表代码文件中总行数减去注释行数。进一步的,所述结构复杂度函数生成算法包括:SS1、根据所述结构特征向量表示每个代码文件,Sa={a1,a2,a3,a4,a5},其中,a为特征度量;SS2、采用归一化方程统一所述特征度量的量纲,得到归一化特征度量,公式如下:其中,amin和amax表示特征度量的最小值和最大值,i=1,2,3,4,5;SS3、根据所述归一化的特征度量,定义所述代码文件的结构复杂度函数,所述结构复杂度函数为其中,a为特征度量,i=1,2,3,4,5。进一步的,所述S5包括:S51、根据开发人员从事开发工作的累计时间Yexp映射得到开发人员经验度量指标EXP;S52、根据所述开发人员经验度指标EXP定义所述开发人员生疏度函数,其中,SP表示所述代码文件S的开发人员集合,EXPi表示开发人员i的经验度量指标,i是正整数。进一步的,所述开发人员从事开发工作的累计时间Yexp和所述开发人员经验度量指标EXP的映射关系为:Yexp<0.5,EXP=1;0.5≤Yexp<1,EXP=2;1≤Yexp<3,EXP=3;Yexp≥3,EXP=5。进一步的,所述S6包括:S61、根据所述相似度函数SimR(S)、所述结构复杂度函数Comp(S)以及所述开发人员生疏度函数Rusd(S),定义一个多目标优化问题,公式如下:其中R为所述BUG报告,S为所述代码文件,三元组(y1,y2,y3)中的分量y1、y2和y3分别表示相似度函数、结构复杂度函数和开发人员生疏度函数的函数值,Γ为代码文件集合;Y为所述相似Y为所述相似度函数、所述结构复杂度函数和所述开发人员生疏度函数的解集度函数、所述结构复杂度函数和所述开发人员生疏度函数的解集;S62、所述代码文件集合Γ加载基于分层的快速非支配解排序方法,将所述代码文件集合Γ划分到不同的非支配层Fl中,l=1,2,…,m,将所述非支配层标记为第一阶段序列,其中,m是非支配层的数量,l值越小的Fl中的代码怀疑率越高;S63、所述非支配层Fl(l=1,2,...,m)的代码文件依据所述相似度函数SimR(S)进行由大到小二次排序,得到第二阶段序列;S64、拼接所述第一阶段序列和第二阶段序列,得到代码文件完整序列,其中,所述S62包括:S621、令代码文件Si∈Γ、Sj∈Γ,i≠j;使得SimR(Si)>S本文档来自技高网
...
基于多目标优化的软件缺陷定位方法

【技术保护点】
基于多目标优化的软件缺陷定位方法,其特征在于,包括:S1、采集待测软件的代码文件、BUG报告和开发人员经验信息;S2、所述代码文件和所述BUG报告加载关键词提取方法,得到代码文件关键词和BUG文件关键词;S3、将所述代码文件关键词和所述BUG文件关键词通过词袋模型构造出代码文件S和BUG报告R,根据所述代码文件S和所述BUG报告R定义相似度函数;S4、所述代码文件S的结构特征度量依据结构复杂度函数生成算法,得到所述代码文件S的结构复杂度函数;S5、根据所述开发人员经验信息,计算得到开发人员生疏度函数;S6、所述相似度函数、所述结构复杂度函数、所述开发人员生疏度函数采用基于多目标优化的二阶段排序方法对所述代码文件S进行排序,得到代码文件完整序列;S7、将所述代码文件完整序列中的前k位代码文件标记为高缺陷怀疑率的代码文件,其中,k是正整数。

【技术特征摘要】
1.基于多目标优化的软件缺陷定位方法,其特征在于,包括:S1、采集待测软件的代码文件、BUG报告和开发人员经验信息;S2、所述代码文件和所述BUG报告加载关键词提取方法,得到代码文件关键词和BUG文件关键词;S3、将所述代码文件关键词和所述BUG文件关键词通过词袋模型构造出代码文件S和BUG报告R,根据所述代码文件S和所述BUG报告R定义相似度函数;S4、所述代码文件S的结构特征度量依据结构复杂度函数生成算法,得到所述代码文件S的结构复杂度函数;S5、根据所述开发人员经验信息,计算得到开发人员生疏度函数;S6、所述相似度函数、所述结构复杂度函数、所述开发人员生疏度函数采用基于多目标优化的二阶段排序方法对所述代码文件S进行排序,得到代码文件完整序列;S7、将所述代码文件完整序列中的前k位代码文件标记为高缺陷怀疑率的代码文件,其中,k是正整数。2.根据权利要求1所述的基于多目标优化的软件缺陷定位方法,其特征在于,所述关键字提取方法包括:S21、将所述代码文件和所述BUG报告分解成由无序的标识符组成的集合;S22、过滤掉所述集合中的标点符号、操作数、操作符和编程语言中的保留字,得到过滤后的集合;S23、对于合成词组成的标识符,根据大写字母将所述标识符拆解成单个的词;S24、对所述过滤后的集合进行英文单词的词根化处理,由此得到所述代码文件和BUG文件的关键词集合。3.根据权利要求1所述的基于多目标优化的软件缺陷定位方法,其特征在于,所述S3包括:S31、根据所述代码文件关键词和所述BUG文件关键词构造语料库V;S32、所述语料库V应用词袋模型将所述代码文件和所述BUG报告分别表示为代码文件S和BUG报告R,所述代码文件S和所述BUG报告R是一维向量集合,其中,和为关键词t分别在所述代码文件S和所述BUG报告R中词频与逆向文件频率idft的乘积,计算公式如下:其中,为关键词t在文件d中出现的次数,d为所述代码文件S或所述BUG报告R,N表示文件d的总数目,Nt是包含关键词t的文件数目;S33、根据所述代码文件S和所述BUG报告R定义所述相似度函数,所述相似度函数为:其中,RTS为R与S的内积,T为向量转置,||R||和||S||分别为R与S的模,即所有元素平方和的平方根。4.根据权利要求1所述的基于多目标优化的软件缺陷定位方法,其特征在于,所述结构特征度量包括:代码行数、最大McCabe环路复杂度、代码修改次数、依赖的文件数目、非注释代码行数。5.根据权利要求1所述的基于多目标优化的软件缺陷定位方法,其特征在于,所述结构复杂度函数生成算法包括:SS1、根据所述结构特征向量表示每个代码文件,Sa={a1,a2,a3,a4,a5},其中,a为特征度量;SS2、采用归一化方程统一所述特征度量的量纲,得到归一化特征度量,公式如下:其中,amin和amax表示特征度量的最小值和最大值,i=1,2,3,4,5;SS3、根据所述归一化的特征度量,定义所述代码文件的结构复杂度函数,所述结构复杂度函数为

【专利技术属性】
技术研发人员:吴芳芳顾庆陈道蓄
申请(专利权)人:南京大学
类型:发明
国别省市:江苏,32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1