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报告和开发人员经验信息;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、根据所述归一化的特征度量,定义所述代码文件的结构复杂度函数,所述结构复杂度函数为
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。