CN112416789B - 一种面向演化软件的过程度量元评价方法 - Google Patents
一种面向演化软件的过程度量元评价方法 Download PDFInfo
- Publication number
- CN112416789B CN112416789B CN202011366121.XA CN202011366121A CN112416789B CN 112416789 B CN112416789 B CN 112416789B CN 202011366121 A CN202011366121 A CN 202011366121A CN 112416789 B CN112416789 B CN 112416789B
- Authority
- CN
- China
- Prior art keywords
- defect
- class
- change
- software
- classification
- 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
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3684—Test management for test design, e.g. generating new test cases
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
- G06F11/3672—Test management
- G06F11/3688—Test management for test execution, e.g. scheduling of test suites
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Software Systems (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明提出一种面向演化软件的过程度量元评价方法,构建过程度量元库;从软件历史仓库中提取出代码度量元,根据类模块在两个连续版本中的缺陷情况,确定后一个版本该类模块的缺陷情况变化;对于待评价的过程度量元,采用类相关性度量方法库中的类相关性度量方法,对该过程度量元的类相关性进行度量,得到该过程度量元的类相关性值;采用10次10折交叉验证方法结合分类算法库中的分类算法,计算分类模型的AUC作为该过程度量元的分类性能值。本发明通过比较分析各过程度量元对演化软件缺陷情况变化的影响程度,可以帮助理解软件缺陷产生的原因,发现软件开发过程中存在的问题,改善软件开发过程,提高后续软件开发的质量。
Description
技术领域
本发明属于软件测试和软件缺陷预测领域,具体涉及一种面向演化软件的过程度量元评价方法。
背景技术
在软件开发过程中,需求变更、性能改善、缺陷修复和代码重构均会导致软件演化。软件演化会产生很多软件版本,每个新版本都可能引入新缺陷或消除已有缺陷,软件持续演化的过程就是软件中不断引入缺陷和消除缺陷的过程。软件缺陷预测技术通过预测出可能有缺陷的软件模块,帮助我们有效地分配测试资源,可以提高软件测试的质量和效率。近年来,软件缺陷预测已经成为国内外学术界和工业界的研究热点之一。
软件度量元是对软件模块进行描述的一种工具,也是软件缺陷预测的输入变量,可以分为代码度量元和过程度量元。在早期,主要关注的是代码度量元,它们描述了软件模块的规模和复杂性。对于演化软件而言,软件演化产生的代码变更是导致缺陷产生的主要原因,而软件代码变更等软件模块开发过程的复杂性可以通过软件过程度量元反映出来,因此,近年来,过程度量元越来越引起研究人员的注意。不同过程度量元从不同角度反映了软件开发过程的相关信息,它们反映缺陷的能力不同,在进行软件缺陷预测时,应该选择哪些过程度量元作为输入变量仍是当前软件缺陷预测领域的研究热点之一。
已有的过程度量元的评价方法主要从三个方面出发,一是缺陷数目,二是缺陷倾向性,三是缺陷密度。但是,软件演化的过程就是软件中不断引入缺陷和消除缺陷的过程,对于演化软件而言,研究软件模块的缺陷情况变化,即软件模块是否引入缺陷或消除缺陷,更有意义。已有的过程度量元的评价方法未从演化软件缺陷情况变化的角度出发,未考虑过程度量元对缺陷情况变化的影响程度,各过程度量元对演化软件中缺陷引入和消除的影响程度尚不明确。
发明内容
本发明的目的在于提出一种面向演化软件的过程度量元评价方法。
实现本发明目的的技术解决方案为:一种面向演化软件的过程度量元评价方法,包括如下步骤:
步骤1,选择与软件缺陷相关的过程度量元,从软件历史仓库中提取出这些过程度量元的值,构建过程度量元库;
步骤2,从软件历史仓库中提取出代码度量元,根据类模块在两个连续版本中的缺陷情况,确定后一个版本该类模块的缺陷情况变化;
步骤3,构建类相关性度量方法库;
步骤4,对于待评价的过程度量元,提取当前版本所有类模块的该过程度量元的值,以及从前一版本到当前版本的缺陷情况变化,将缺陷情况变化作为类别,采用类相关性度量方法库中的类相关性度量方法,对该过程度量元的类相关性进行度量,得到该过程度量元的类相关性值;
步骤5,构建分类算法库;
步骤6,对于待评价的过程度量元,提取当前版本所有类模块的该过程度量元的值,以及所有类模块的代码度量元的值和缺陷情况变化,采用10次10折交叉验证方法结合分类算法库中的分类算法,计算分类模型的AUC作为该过程度量元的分类性能值。
进一步的,步骤1中,选择的过程度量元包括NR、NDC、NML、DCM、ANML,其中,NR是变更次数度量元,NDC是开发人员数目度量元,NML是代码变更行数度量元,DCM和ANML是常用的两种代码相对变更度量元,DCM是由代码变更行数除以代码总行数得到的代码相对变更度量元,以每行代码平均被修改的次数表示代码修改的程度,ANML是由代码变更行数与变更次数相除得到的代码相对变更度量元,以每次提交变更时所涉及的平均代码变更行数表示代码修改的程度。
进一步的,步骤2中,根据类模块在两个连续版本中的缺陷情况,确定后一个版本该类模块的缺陷情况变化,具体方法为:
对于已有类模块来说,若在前一版本Vt-1中无缺陷,在当前版本Vt中有缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“引入缺陷”,若在Vt-1中无缺陷,在Vt中也无缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“其他”,若在Vt-1中有缺陷,在Vt中无缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“消除缺陷”,若在Vt-1中有缺陷,在Vt中也有缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“其他”;
对于新增类模块,若在Vt中有缺陷,则将该新增类模块Vt版本的缺陷情况变化标记为“引入缺陷”,若在Vt中无缺陷,则将该新增类模块Vt版本的缺陷情况变化标记为“其他”。
进一步的,步骤3中,构建类相关性度量方法库,包括皮尔森相关系数方法、卡方检验方法、ReliefF算法、信息增益方法、增益率方法和对称不确定性方法。
进一步的,步骤5中,构建分类算法库,包括朴素贝叶斯算法、k近邻算法、逻辑回归算法、多层感知机算法和支持向量机算法。
进一步的,步骤6中,对于待评价的过程度量元,提取当前版本所有类模块的该过程度量元的值,所有类模块的所有代码度量元的值,以及从前一版本到当前版本的缺陷情况变化,将缺陷情况变化作为类别,采用10次10折交叉验证方法结合分类算法库中的分类算法,计算分类模型的AUC作为该过程度量元的分类性能值,具体方法为:
步骤6.1,提取当前版本所有类模块中待评价的过程度量元的值,所有类模块的所有代码度量元的值和从前一版本到当前版本的缺陷情况变化,构建成数据集;
步骤6.2,打乱数据集中实例的顺序,将数据集划分为10等份,将其中一份作为测试集,其余九份作为训练集,采用分类算法库中的一种分类算法,在训练集上训练分类模型,采用AUC作为性能评价指标,在测试集上评价分类模型的分类性能,包括对引入缺陷的分类性能和对消除缺陷的分类性能;
步骤6.3,重复步骤6.2,直至每一份数据集均被作为测试集进行测试,取10折的平均值作为该过程度量元的分类性能;
步骤6.4,重复步骤6.2至步骤6.3,共10次,以消除随机划分数据集带来的影响;
步骤6.5,重复步骤6.1至步骤6.4,直至所有过程度量元的分类性能均分析完毕;
步骤6.6,比较各过程度量元的分类性能大小。
一种面向演化软件的过程度量元评价系统,基于所述的方法评价面向演化软件的过程度量元。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的方法评价面向演化软件的过程度量元。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法评价面向演化软件的过程度量元。
本发明与现有技术相比,其显著优点为:1)比较各过程度量元与缺陷情况变化之间的相关性,得出与缺陷情况变化最相关的过程度量元,这些过程度量元更适合作为面向演化软件的缺陷预测的输入变量,在这些过程度量元的基础上构建的缺陷预测模型的性能会更好;2)比较各过程度量元对缺陷引入和消除的分类性能,得出对缺陷引入和消除的分类性能最好的过程度量元,这些过程度量元更适合作为面向演化软件的缺陷预测的输入变量,在这些过程度量元的基础上构建的缺陷预测模型的性能会更好;3)通过比较分析各过程度量元对演化软件缺陷情况变化的影响程度,可以帮助理解软件缺陷产生的原因,发现软件开发过程中存在的问题,改善软件开发过程,提高后续软件开发的质量。
附图说明
图1是本发明面向演化软件的过程度量元评价方法的整体框架图;
图2是图1中S1所示的构建过程度量元库的流程图;
图3是图1中S2所示的演化软件缺陷情况变化示意图;
图4是图1中S3所示的构建类相关性度量方法库的流程图;
图5是图1中S4所示的过程度量元的类相关性分析流程图;
图6是图1中S5所示的构建分类算法库的流程图;
图7是图1中S6所示的过程度量元的分类性能分析流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本发明从两个角度来比较分析各过程度量元对演化软件缺陷情况变化的影响程度,一个角度是各过程度量元与缺陷情况变化之间的相关性,也就是将缺陷情况变化作为类别,进行过程度量元的类相关性分析,比较各过程度量元的类相关性大小,另一个角度是各过程度量元对缺陷引入和消除的分类性能,也就是将缺陷情况变化作为分类类别,进行过程度量元的分类性能分析,比较各过程度量元的分类性能大小。
图1是本发明面向演化软件的过程度量元评价方法的整体框架图。一种面向演化软件的过程度量元评价方法主要分为六个阶段:S1是构建过程度量元库;S2是提取代码度量元及缺陷情况变化;S3是构建类相关性度量方法库;S4是过程度量元的类相关性分析;S5是构建分类算法库;S6是过程度量元的分类性能分析。
图2是构建过程度量元库的流程图,采用软件工程领域中常用的过程度量元,或根据软件开发过程信息,设计与软件缺陷相关的过程度量元,并从软件历史仓库中提取出这些过程度量元的值,来构建过程度量元库。常用的过程度量元包括NR、NDC、NML、DCM、ANML,其中,NR是变更次数度量元,NDC是开发人员数目度量元,NML是代码变更行数度量元,DCM和ANML是常用的两种代码相对变更度量元,DCM是由代码变更行数除以代码总行数得到的代码相对变更度量元,以每行代码平均被修改的次数表示代码修改的程度。ANML是由代码变更行数与变更次数相除得到的代码相对变更度量元,以每次提交变更时所涉及的平均代码变更行数表示代码修改的程度。特别地,该过程度量元库不仅包含以上五种过程度量元,其具有可更新性,可实现过程度量元的增加、修改和删除功能。
图3是演化软件缺陷情况变化示意图,从软件历史仓库中提取出代码度量元,根据类模块在两个连续版本中的缺陷情况,得出后一个版本该类模块的缺陷情况变化,共有以下三类:“消除缺陷”、“引入缺陷”和“其他”。具体来说,对于已有类模块来说,若在前一版本Vt-1中无缺陷,在当前版本Vt中有缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“引入缺陷”,若在Vt-1中无缺陷,在Vt中也无缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“其他”,若在Vt-1中有缺陷,在Vt中无缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“消除缺陷”,若在Vt-1中有缺陷,在Vt中也有缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“其他”。新增类模块若在Vt中有缺陷,则将该新增类模块Vt版本的缺陷情况变化标记为“引入缺陷”,若在Vt中无缺陷,则将该新增类模块Vt版本的缺陷情况变化标记为“其他”。
图4是构建类相关性度量方法库的流程图,经典的类相关性度量方法可以分为三类,第一类是基于统计理论的度量,如皮尔森相关系数方法、卡方检验方法;第二类是基于实例的度量,如ReliefF算法;第三类是基于信息熵理论的度量,如信息增益方法、增益率方法和对称不确定性方法。采用经典的类相关性度量方法或设计新的类相关性度量方法,并设置类相关性度量方法的参数,来构建类相关性度量方法库,其中,经典的类相关性度量方法包括皮尔森相关系数方法、卡方检验方法、ReliefF算法、信息增益方法、增益率方法和对称不确定性方法,覆盖了三类类相关性度量方法,充分分析各过程度量元与缺陷情况变化之间的相关性。特别地,该类相关性度量方法库不仅包含以上六种类相关性度量方法,其具有可更新性,可实现类相关性度量方法的增加、修改和删除功能。
图5是过程度量元的类相关性分析流程图,从S1得到的过程度量元库中选取一个待评价的过程度量元,提取出Vt版本所有类模块的该过程度量元的值,通过S2得到所有类模块从Vt-1到Vt的缺陷情况变化,并将缺陷情况变化作为类别,采用S3构建的类相关性度量方法库中的类相关性度量方法,对该过程度量元的类相关性进行度量,得到该过程度量元的类相关性值。类相关性度量方法库中经典的类相关性度量方法包括皮尔森相关系数方法、卡方检验方法、ReliefF算法、信息增益方法、增益率方法和对称不确定性方法。
皮尔森相关系数方法通过计算过程度量元与缺陷情况变化之间的线性相关性,来评估过程度量元的类相关性,过程度量元X和缺陷情况变化Y之间的皮尔森相关系数的计算公式如式①所示:
其中,n表示Vt版本的类模块数目。皮尔森相关系数取值范围为[-1,1],-1表示二者是完全负相关关系,1表示二者是完全正相关关系,0表示二者之间没有关系,相关系数越大,二者越相关。
卡方检验方法是一种用于验证过程度量元是否与缺陷情况变化的分布相关的非参数统计方法,其零假设是该过程度量元和缺陷情况变化的分布无关,通过计算观测值与零假设成立时的期望值之间的距离来衡量零假设成立的可能性,观测值与期望值之间的距离越大,原假设成立的可能性越低,即过程度量元和缺陷情况变化的相关性越大,观测值与期望值之间距离的计算方法如式②所示:
其中,r表示过程度量元的取值数目,nc表示类别数目,这里为3,Oi,j表示类别j中过程度量元的值为i的Vt版本的类模块数目,即观测值的大小,Ei,j表示零假设成立时,类别j中过程度量元的值为i的Vt版本的类模块数目,即期望值的大小。
ReliefF算法根据过程度量元区分不同缺陷情况变化的近邻类模块的能力,来衡量过程度量元与缺陷情况变化之间的相关性。首先,从所有类模块中随机选出一个类模块x;然后,在与类模块x具有相同分类的类模块中,取出k个最近邻类模块Nj(j=1,2,...,k),在与类模块x具有不同分类的类模块中,也取出k个最近邻类模块Dj(c)(j=1,2,...,k);最后,根据式③求出每个过程度量元的权重,重复上述过程m次,不断更新每个过程度量元的权重,权重越大的过程度量元与缺陷情况变化越相关。
其中,diff(f,R1,R2)表示类模块R1和R2在过程度量元f上的差值,p(c)表示类别为c的类模块所占的比例,p(class(x))表示与x具有相同分类的类模块所占的比例。
信息增益方法根据过程度量元给缺陷情况变化带来的信息量大小来评价过程度量元与缺陷情况变化之间的相关性。
过程度量元f划分数据集DATA后得到的信息增益的计算公式如式④所示:
IG(DATA|f)=H(DATA)-H(DATA|f) ④
其中,H(DATA)表示数据集的不确定程度,H(DATA|f)表示过程度量元对数据集的划分信息熵。
增益率方法在信息增益方法的基础上引入了分裂信息,以消除过程度量元取值数目的影响,信息增益率的计算公式如式⑤所示:
其中,IG(DATA|f)表示信息增益,SplitE(f)表示分裂信息。
对称不确定性方法是一种非线性相关性度量方法,通过计算过程度量元与缺陷情况变化之间的分布差异性来度量它们之间的相关性,计算公式如式⑥所示:
图6是构建分类算法库的流程图,采用经典的分类算法或设计新的分类算法,并设置分类算法的参数,来构建分类算法库,其中,经典的分类算法有朴素贝叶斯算法、k近邻算法、逻辑回归算法、多层感知机算法和支持向量机算法。特别地,该分类算法库不仅包含以上五种分类算法,其具有可更新性,可实现分类算法的增加、修改和删除功能。
图7是过程度量元的分类性能分析流程图,过程度量元的分类性能分析就是指针对各过程度量元对缺陷引入和消除的分类性能进行比较分析。从S1得到的过程度量元库中选取一个待评价的过程度量元,提取出Vt版本所有类模块的该过程度量元的值,通过S2得到所有类模块的代码度量元的值和Vt-1到Vt的缺陷情况变化,将所有类模块的该过程度量元、所有代码度量元和缺陷情况变化组成数据集,将缺陷情况变化作为分类类别,采用S5构建的分类算法库中的分类算法,采用10次10折交叉验证方法,在数据集上构建分类模型,采用AUC作为性能评价指标,来评价各过程度量元对缺陷引入和消除的分类性能,比较各过程度量元的分类性能大小。
经典的分类算法有朴素贝叶斯算法、k近邻算法、逻辑回归算法、多层感知机算法和支持向量机算法。
朴素贝叶斯算法假设各过程度量元之间相互独立,通过式⑦计算类模块x属于缺陷情况变化ci的概率。
其中,{f1,f2,...,fd}代表由d个过程度量元表示的类模块x,c={c1,c2,c3}表示缺陷情况变化,朴素贝叶斯算法将概率最大的类别预测为类模块x所属的类别。
k近邻算法是一种基于实例的分类算法,首先,通过计算待测类模块与训练类模块之间的距离来度量它们之间的相似性;然后,根据相似性大小找出与待测类模块最近的k个训练类模块;最后,预测待测类模块的类别为这k个最近邻的训练类模块的类别中出现次数最多的类别。
对于数据集DATA={(x1,y1),(x2,y2),…,(xi,yi),…,(xn,yn)},xi=(fi,1,fi,2,…,fi,j,…,fi,d)∈Rd,逻辑回归算法利用式⑧来预测待测类模块的类别。
多层感知机算法是一种前馈人工神经网络算法,由输入层、隐藏层和输出层组成,输入层经过第一层神经元运算后得到第一层的输出,然后由第一层的输出作为第二层的输入,运算后得到第二层的输出,每个隐藏层依次进行计算,直到到达输出层,得到最终的分类结果。
支持向量机算法通过寻找一个使不同类别的数据点之间的距离最大化的超平面来进行分类。
10次10折交叉验证方法的步骤如下:首先,将数据集随机划分为10等份;然后,从中选取九份作为训练集,构建分类模型,剩下的一份作为测试集,用于测试分类模型的性能,得到性能值,分别将每一份作为测试集,得到10个性能值,取10个性能值的平均值作为一次的性能值;最后,重复上述过程10次,以消除随机划分数据集给分类性能分析带来的影响。
AUC的取值范围为[0,1],AUC值越大,表示预测模型的性能越好。随机预测的AUC值为0.5,一般来说,预测模型的AUC值高于0.5时才有意义。
本发明还提出一种面向演化软件的过程度量元评价系统,基于所述的方法评价面向演化软件的过程度量元。
一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述的方法评价面向演化软件的过程度量元。
一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现所述的方法评价面向演化软件的过程度量元。
实施例
为了验证本发明方案的有效性,进行如下仿真实验。
一种面向演化软件的过程度量元评价方法的具体操作步骤如下所述。
Step 1:构建过程度量元库,采用常用的过程度量元或设计新的过程度量元,并从软件历史仓库中提取出Vt版本所有类模块的这些过程度量元的值,来构建过程度量元库,包括NR、NDC、NML、DCM、ANML五种常用的过程度量元,该过程度量元库不仅包含以上五种常用的过程度量元,其具有可更新性,可实现过程度量元的增加、修改和删除功能。
Step 1.1:设计过程度量元;
Step 1.2:从软件历史仓库中提取该过程度量元的值;
Step 1.3:继续增加过程度量元,重复步骤Step 1.1和步骤Step 1.2,直至所有过程度量元增加完毕;
Step 1.4:过程度量元库构建完毕。
Step 2:提取代码度量元及缺陷情况变化,提取出Vt版本所有类模块的代码度量元,对于已有类模块来说,根据Vt-1和Vt中该已有类模块的缺陷情况,将该已有类模块Vt版本的缺陷情况变化标记为“引入缺陷”、“消除缺陷”和“其他”,对于新增类模块来说,根据在Vt中该新增类模块的缺陷情况,将该新增类模块Vt版本的缺陷情况变化标记为“引入缺陷”或“其他”。
Step 2.1:从Vt版本库中选取一个类模块,提取出该类模块的代码度量元的值,包括代码行数度量元、McCabe度量元、Halstead度量元和CK度量元;
Step 2.2:如果该类模块是已有类模块,则分别获取该类模块在Vt-1和Vt中的缺陷情况,进入步骤2.3,如果该类模块是新增类模块,则获取该类模块在版本Vt中的缺陷情况,进入步骤2.4;
Step 2.3:若在Vt-1中无缺陷,在Vt中有缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“引入缺陷”,若在Vt-1中无缺陷,在Vt中也无缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“其他”,若在Vt-1中有缺陷,在Vt中无缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“消除缺陷”,若在Vt-1中有缺陷,在Vt中也有缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“其他”;
Step 2.4:若在Vt版本中有缺陷,则将该新增类模块Vt版本的缺陷情况变化标记为“引入缺陷”,若在Vt中无缺陷,则将该新增类模块Vt版本的缺陷情况变化标记为“其他”;
Step 2.5:重复步骤Step 2.1至步骤Step 2.4,直至获取到Vt版本所有类模块的代码度量元的值和缺陷情况变化。
Step 3:构建类相关性度量方法库,采用经典的类相关性度量方法或设计新的类相关性度量方法,并设置类相关性度量方法的参数,来构建类相关性度量方法库,包括皮尔森相关系数方法、卡方检验方法、ReliefF算法、信息增益方法、增益率方法和对称不确定性方法六种类相关性度量方法,该类相关性度量方法库不仅包含以上六种经典的类相关性度量方法,其具有可更新性,可实现类相关性度量方法的增加、修改和删除功能。
Step 3.1:设计类相关性度量方法;
Step 3.2:设置类相关性度量方法的参数;
Step 3.3:继续增加类相关性度量方法,重复步骤Step 3.1和Step 3.2,直至所有类相关性度量方法增加完毕;
Step 3.4:类相关性度量方法库构建完毕。
Step 4:过程度量元的类相关性分析,通过步骤Step 1和步骤Step 2提取出Vt版本所有类模块的过程度量元和缺陷情况变化,并将缺陷情况变化作为类别,通过步骤Step3度量各过程度量元与缺陷情况变化之间的相关性,比较各过程度量元的类相关性大小。
Step 4.1:从步骤Step 1得到的过程度量元库中选取一个待评价的过程度量元,提取出Vt版本所有类模块的该过程度量元的值,通过步骤Step 2提取出Vt版本的所有类模块从Vt-1到Vt的缺陷情况变化;
Step 4.2:采用步骤Step3构建的类相关性度量方法库中的每一种类相关性度量方法,度量该过程度量元与缺陷情况变化之间的相关性;
Step 4.3:重复步骤Step 4.1至步骤Step 4.2,直至所有过程度量元的类相关性均分析完毕;
Step 4.4:比较各过程度量元的类相关性大小。
还可以统计在每一种分类算法上该过程度量元的分类性能值,综合评价。
Step 5:构建分类算法库,采用经典的分类算法或设计新的分类算法,并设置分类算法的参数,来构建分类算法库。经典的分类算法有朴素贝叶斯算法、k近邻算法、逻辑回归算法、多层感知机算法和支持向量机算法。该分类算法库不仅包含以上五种分类算法,其具有可更新性,可实现分类算法的增加、修改和删除功能。
Step 5.1:设计分类算法;
Step 5.2:设置分类算法的参数;
Step 5.3:继续增加分类算法,重复步骤Step 5.1和Step 5.2,直至所有分类算法增加完毕;
Step 5.4:分类算法库构建完毕。
Step 6:过程度量元的分类性能分析,通过步骤Step 1和步骤Step 2提取出Vt版本所有类模块的过程度量元、所有代码度量元和缺陷情况变化,将它们组成数据集,将缺陷情况变化作为分类类别,采用Step 5构建的分类算法库中的分类算法,采用10次10折交叉验证方法构建分类模型,采用AUC作为性能评价指标,来评价各过程度量元对缺陷引入和消除的分类性能,比较各过程度量元的分类性能大小。
Step 6.1:从步骤Step 1得到的过程度量元库中选取一个待评价的过程度量元,提取出Vt版本所有类模块的该过程度量元的值,通过步骤Step 2提取出Vt版本所有类模块的所有代码度量元的值和从Vt-1到Vt的缺陷情况变化,构建成数据集;
Step 6.2:打乱数据集中实例的顺序,将数据集划分为10等份,将其中一份作为测试集,其余九份作为训练集,采用Step 5构建的分类算法库中的每一种分类算法,在训练集上训练分类模型,采用AUC作为性能评价指标,在测试集上评价分类模型的分类性能,包括对引入缺陷的分类性能和对消除缺陷的分类性能;
Step 6.3:重复步骤Step 6.2,直至每一份数据集均被作为测试集进行测试,取10折的平均值作为该过程度量元的分类性能;
Step 6.4:重复步骤Step 6.2至Step6.3共10次,以消除随机划分数据集带来的影响;
Step 6.5:重复步骤Step 6.1至Step 6.4,直至所有过程度量元的分类性能均分析完毕;
Step 6.6:比较各过程度量元的分类性能大小。
还可以统计在每一种分类算法上该过程度量元的分类性能值,综合评价。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。
Claims (9)
1.一种面向演化软件的过程度量元评价方法,其特征在于,包括如下步骤:
步骤1,选择与软件缺陷相关的过程度量元,从软件历史仓库中提取出这些过程度量元的值,构建过程度量元库;
步骤2,从软件历史仓库中提取出代码度量元,根据类模块在两个连续版本中的缺陷情况,确定后一个版本该类模块的缺陷情况变化;
步骤3,构建类相关性度量方法库;
步骤4,对于待评价的过程度量元,提取当前版本所有类模块的该过程度量元的值,以及从前一版本到当前版本的缺陷情况变化,将缺陷情况变化作为类别,采用类相关性度量方法库中的类相关性度量方法,对该过程度量元的类相关性进行度量,得到该过程度量元的类相关性值;
步骤5,构建分类算法库;
步骤6,对于待评价的过程度量元,提取当前版本所有类模块的该过程度量元的值,以及所有类模块的代码度量元的值和缺陷情况变化,采用10次10折交叉验证方法结合分类算法库中的分类算法,计算分类模型的AUC作为该过程度量元的分类性能值。
2.根据权利要求1所述的面向演化软件的过程度量元评价方法,其特征在于,步骤1中,选择的过程度量元包括NR、NDC、NML、DCM、ANML,其中,NR是变更次数度量元,NDC是开发人员数目度量元,NML是代码变更行数度量元,DCM和ANML是常用的两种代码相对变更度量元,DCM是由代码变更行数除以代码总行数得到的代码相对变更度量元,以每行代码平均被修改的次数表示代码修改的程度,ANML是由代码变更行数与变更次数相除得到的代码相对变更度量元,以每次提交变更时所涉及的平均代码变更行数表示代码修改的程度。
3.根据权利要求1所述的面向演化软件的过程度量元评价方法,其特征在于,步骤2中,根据类模块在两个连续版本中的缺陷情况,确定后一个版本该类模块的缺陷情况变化,具体方法为:
对于已有类模块来说,若在前一版本Vt-1中无缺陷,在当前版本Vt中有缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“引入缺陷”,若在Vt-1中无缺陷,在Vt中也无缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“其他”,若在Vt-1中有缺陷,在Vt中无缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“消除缺陷”,若在Vt-1中有缺陷,在Vt中也有缺陷,则将该已有类模块Vt版本的缺陷情况变化标记为“其他”;
对于新增类模块,若在Vt中有缺陷,则将该新增类模块Vt版本的缺陷情况变化标记为“引入缺陷”,若在Vt中无缺陷,则将该新增类模块Vt版本的缺陷情况变化标记为“其他”。
4.根据权利要求1所述的面向演化软件的过程度量元评价方法,其特征在于,步骤3中,构建类相关性度量方法库,所述类相关性度量方法库包括皮尔森相关系数方法、卡方检验方法、ReliefF算法、信息增益方法、增益率方法和对称不确定性方法。
5.根据权利要求1所述的面向演化软件的过程度量元评价方法,其特征在于,步骤5中,构建分类算法库,所述分类算法库包括朴素贝叶斯算法、k近邻算法、逻辑回归算法、多层感知机算法和支持向量机算法。
6.根据权利要求1所述的面向演化软件的过程度量元评价方法,其特征在于,步骤6中,对于待评价的过程度量元,提取当前版本所有类模块的该过程度量元的值,以及所有类模块的代码度量元的值和缺陷情况变化,采用10次10折交叉验证方法结合分类算法库中的分类算法,计算分类模型的AUC作为该过程度量元的分类性能值,具体方法为:
步骤6.1,提取当前版本所有类模块中待评价的过程度量元的值,所有类模块的所有代码度量元的值和从前一版本到当前版本的缺陷情况变化,构建成数据集;
步骤6.2,打乱数据集中实例的顺序,将数据集划分为10等份,将其中一份作为测试集,其余九份作为训练集,采用分类算法库中的一种分类算法,在训练集上训练分类模型,采用AUC作为性能评价指标,在测试集上评价分类模型的分类性能,包括对引入缺陷的分类性能和对消除缺陷的分类性能;
步骤6.3,重复步骤6.2,直至每一份数据集均被作为测试集进行测试,取10折的平均值作为该过程度量元的分类性能;
步骤6.4,重复步骤6.2至步骤6.3,共10次,以消除随机划分数据集带来的影响;
步骤6.5,重复步骤6.1至步骤6.4,直至所有过程度量元的分类性能均分析完毕;
步骤6.6,比较各过程度量元的分类性能大小。
7.一种面向演化软件的过程度量元评价系统,其特征在于,基于权利要求1-6任一项所述的方法评价面向演化软件的过程度量元。
8.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现权利要求1-6任一项所述的方法评价面向演化软件的过程度量元。
9.一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现权利要求1-6任一项所述的方法评价面向演化软件的过程度量元。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011366121.XA CN112416789B (zh) | 2020-11-29 | 2020-11-29 | 一种面向演化软件的过程度量元评价方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011366121.XA CN112416789B (zh) | 2020-11-29 | 2020-11-29 | 一种面向演化软件的过程度量元评价方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416789A CN112416789A (zh) | 2021-02-26 |
CN112416789B true CN112416789B (zh) | 2022-11-29 |
Family
ID=74842978
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011366121.XA Active CN112416789B (zh) | 2020-11-29 | 2020-11-29 | 一种面向演化软件的过程度量元评价方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416789B (zh) |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030076989A1 (en) * | 2001-10-24 | 2003-04-24 | Maayah Kais Jameel | Automated repetitive array microstructure defect inspection |
US20060114287A1 (en) * | 2004-11-30 | 2006-06-01 | Xerox Corporation | Real-time interlace adjustment based on predicted image quality |
CN107577605A (zh) * | 2017-09-04 | 2018-01-12 | 南京航空航天大学 | 一种面向软件缺陷预测的特征聚类选择方法 |
CN109947652A (zh) * | 2019-03-26 | 2019-06-28 | 中山大学 | 一种软件缺陷预测的改进排序学习方法 |
-
2020
- 2020-11-29 CN CN202011366121.XA patent/CN112416789B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20030076989A1 (en) * | 2001-10-24 | 2003-04-24 | Maayah Kais Jameel | Automated repetitive array microstructure defect inspection |
US20060114287A1 (en) * | 2004-11-30 | 2006-06-01 | Xerox Corporation | Real-time interlace adjustment based on predicted image quality |
CN107577605A (zh) * | 2017-09-04 | 2018-01-12 | 南京航空航天大学 | 一种面向软件缺陷预测的特征聚类选择方法 |
CN109947652A (zh) * | 2019-03-26 | 2019-06-28 | 中山大学 | 一种软件缺陷预测的改进排序学习方法 |
Non-Patent Citations (1)
Title |
---|
一种面向软件缺陷预测的可容忍噪声的特征选择框架;刘望舒等;《计算机学报》;20160229;第41卷(第3期);第506-520页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112416789A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
Xia et al. | Collective personalized change classification with multiobjective search | |
Xia et al. | Towards more accurate multi-label software behavior learning | |
Duan et al. | Root cause analysis approach based on reverse cascading decomposition in QFD and fuzzy weight ARM for quality accidents | |
KR20210107458A (ko) | 모델의 성능 테스트를 위한 컴퓨터 프로그램 | |
Tua et al. | Software defect prediction using software metrics with naïve bayes and rule mining association methods | |
Mahaweerawat et al. | Fault prediction in object-oriented software using neural network techniques | |
CN111090579A (zh) | 基于皮尔森相关性加权关联分类规则的软件缺陷预测方法 | |
CN111858328B (zh) | 一种基于有序神经网络的软件缺陷模块严重程度预测方法 | |
Pugelj et al. | Predicting structured outputs k-nearest neighbours method | |
Liu et al. | Root-cause analysis for time-series anomalies via spatiotemporal graphical modeling in distributed complex systems | |
Li et al. | Multi-objective particle swarm optimization for key quality feature selection in complex manufacturing processes | |
Ahsan et al. | Developing computational intelligence for smart qualification testing of electronic products | |
Alsmadi et al. | Evaluating the change of software fault behavior with dataset attributes based on categorical correlation | |
CN117472789B (zh) | 基于集成学习的软件缺陷预测模型构建方法和装置 | |
Abdelkarim et al. | Tcp-net: Test case prioritization using end-to-end deep neural networks | |
Sharma et al. | Hybrid Software Reliability Model for Big Fault Data and Selection of Best Optimizer Using an Estimation Accuracy Function | |
Roy et al. | Deep predictive coverage collection | |
CN112416789B (zh) | 一种面向演化软件的过程度量元评价方法 | |
Nikolova et al. | Parallel discovery of direct causal relations and markov boundaries with applications to gene networks | |
Pattnaik et al. | A survey on machine learning techniques used for software quality prediction | |
Hammami et al. | Weighted-features construction as a bi-level problem | |
Bolchini et al. | Machine learning-based techniques for incremental functional diagnosis: A comparative analysis | |
JP2016122332A (ja) | プロセス評価装置およびプロセス評価プログラム | |
Chakraborti et al. | Evidential reasoning based digital twins for performance optimization of complex systems | |
CN114139589A (zh) | 故障诊断方法、装置、设备与计算机可读存储介质 |
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 |