CN107391369B - 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 - Google Patents

一种基于数据筛选和数据过采样的跨项目缺陷预测方法 Download PDF

Info

Publication number
CN107391369B
CN107391369B CN201710571098.XA CN201710571098A CN107391369B CN 107391369 B CN107391369 B CN 107391369B CN 201710571098 A CN201710571098 A CN 201710571098A CN 107391369 B CN107391369 B CN 107391369B
Authority
CN
China
Prior art keywords
software module
project
cross
data
historical
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.)
Expired - Fee Related
Application number
CN201710571098.XA
Other languages
English (en)
Other versions
CN107391369A (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.)
Wuhan University WHU
Original Assignee
Wuhan University WHU
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 Wuhan University WHU filed Critical Wuhan University WHU
Priority to CN201710571098.XA priority Critical patent/CN107391369B/zh
Publication of CN107391369A publication Critical patent/CN107391369A/zh
Application granted granted Critical
Publication of CN107391369B publication Critical patent/CN107391369B/zh
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs
    • G06F11/3608Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种基于数据筛选和数据过采样的跨项目缺陷预测方法,设计了合理的数据筛选和数据不平衡处理策略,利用层次聚类算法筛选出真正和本项目模块数据相似的跨项目历史软件模块数据,使跨项目软件缺陷预测模型避免受到不相关跨项目历史软件模块数据的影响,然后利用过采样方法增加有缺陷的软件模块数据得到分类相对平衡的新数据集,使跨项目软件缺陷预测模型避免受到不平衡的训练数据集的影响。本发明的技术方案具有简单高效的特点,能够较好地提高跨项目软件缺陷预测模型的性能。

Description

一种基于数据筛选和数据过采样的跨项目缺陷预测方法
技术领域
本发明属于软件缺陷预测技术领域,特别是涉及一种基于数据筛选和数据过采样的跨项目缺陷预测方法。
背景技术
(1)软件缺陷预测技术
软件已经成为影响国民经济、军事、政治乃至社会生活的重要因素。高可靠和复杂的软件系统依赖于其采用的软件的可靠性。软件的缺陷是导致相关系统出错、失效、崩溃甚至机毁人亡的潜在根源。所谓缺陷,到目前为止,学术界,产业界有很多相关的术语和定义,比如故障、缺陷、bug、错误、失误、失效、失败等。根据ISO 9000对缺陷的定义为:满足与预期或者规定用途有关的要求,缺陷是软件中已经存在的一个部分,可以通过修改软件而消除。然而软件技术发展至今,任何检验、验证手段都不可能发现并排除所有的缺陷,软件作为一种无形的产物,虽然不会磨损用坏,却随时可能因为我们不易查知的原因出现故障甚至失效。事实上,从第一个软件诞生,就伴随出现软件缺陷的检测和预测技术。检测技术在于发现缺陷,而预测技术则在于预测还未发现的缺陷。
20世纪70年代,出现了利用统计学习技术,根据历史数据以及已经发现的缺陷等软件度量数据预测软件系统的缺陷数目及类型。缺陷预测技术的目的在于统计计算机软件系统的缺陷数,以决定系统是否可以交付使用。缺陷预测技术为软件质量的提高和保证起着非常重要的作用,同时也促进了软件工程技术向前大大的发展了一步。
软件缺陷预测过程的第一步是收集和标注软件模块。一个软件模块能够被标记为有缺陷和无缺陷。第二步,抽取软件模块的度量属性。到目前为止,研究人员从不同的角度提出了许多软件度量属性,而与软件缺陷预测密切相关的度量属性主要有代码度量、McCabe度量和Halstead度量三种。代码度量是最直接、应用最普遍的度量属性。通过对程序进行简单的计数,可以得到相关代码的度量值。它包含总行数(LOC)、空白行数目(LOCb)、注释行数目(LOCc)、代码行数目(LOCe)和代码和注释总数目(LOCec)(文献1)。软件复杂性通过程序结构的复杂性表现出来,而程序结构的复杂性主要值的是模块内部程序的复杂性。MaCabe度量的正是模块内部程序的复杂性。它由三种度量组成,分别为环形复杂度(Cyclomatic Complexity)、基本复杂度(Essential Complexity)和设计复杂度(DesignComplexity)。Halstead度量不仅度量了程序长度,还描述了程序的最小实现和实际实现之间的关系,并据此阐述程序语言的等级高低。Halstead度量方法充分考虑了程序中出现的算子和操作数,它包括软件长度(N)、容量(V)、级别(L)、难度(D)、工作量(E)、时间(T)、误差估计(B)、程序消息(I)等度量。第三步,建立缺陷预测模型,缺陷预测模型本质上属于模式识别的范畴。而缺陷预测模型的建立过程就是通过一定的机器学习算法来搭建模型结构并确定度量属性之间依赖强度的过程,即为模型的结构学习和参数学习过程。第四步,通过模型预测结果,由于建立好的缺陷预测模型可以通过自身模型结构和模型参数来量化描述度量属性与预测结果之间的因果关系,这样给定一个软件模块的度量属性数据集,使用训练好的预测模型就可以得到该模块是否存在缺陷,即完成软件缺陷预测的过程。
(2)跨项目软件缺陷预测技术
到目前为止,许多高效的软件缺陷预测方法已经被提出,通常利用软件模块的历史数据并运用统计分析、机器学习以及机器学习联合统计分析等技术来进行预测。但它们通常仅限于本项目的缺陷预测。当有足够的历史数据可用来建立缺陷预测模型时,本项目的缺陷预测效果很好。但对于一些新的项目来说,项目内的历史数据是非常有限且不具有高可信度的,所以本项目缺陷预测很难顺利进行。跨项目软件缺陷预测是解决项目初期缺乏历史数据来构建模型的有效途径。它通过利用一个或多个已有的其他项目(称之为跨项目)数据来训练预测模型,然后将模型应用到本项目,从而解决本项目没有足够的历史数据来训练模型的问题。
文献:[1]包晓露,王小娟,贾有良、申来安。软件测试基础:方法与度量[M].北京:人民邮电出版社,2007:74-76.
发明内容
相对于国内外已有的跨项目软件缺陷预测方法,本发明针对跨项目软件缺陷预测中大量不相关的跨项目历史软件模块数据损害了跨项目软件缺陷预测模型性能的问题和跨项目历史软件模块数据类不平衡的问题,提出了一种基于数据筛选和数据过采样的跨项目缺陷预测方法。
本发明所采用的技术方案是:一种基于数据筛选和数据过采样的跨项目缺陷预测方法,其特征在于,包括以下步骤:
步骤1:抽取跨项目历史软件模块,标注所有的跨项目历史软件模块是否有缺陷,标记有缺陷的历史软件模块的类标号为Y,标记无缺陷的历史软件模块的类标号为N;
步骤2:提取跨项目历史软件模块的度量属性;
步骤3:抽取本项目待预测软件模块,标记为“?”;
步骤4:提取本项目待预测软件模块的度量属性;
步骤5:对所有跨项目历史软件模块数据和所有本项目待预测软件模块数据执行凝聚型层次聚类AGENES算法,获得筛选后的跨项目历史软件模块数据;
步骤6:对筛选后的跨项目历史软件模块数据进行过采样,使跨项目历史软件模块数据平衡;
步骤7:令通过步骤5产生的筛选后的跨项目历史软件模块数据和通过步骤6产生的新合成的软件模块数据为训练集D,基于训练集D训练出朴素贝叶斯预测模型;
步骤8:用训练得到的朴素贝叶斯预测模型预测本项目待预测软件模块X。
本发明设计了合理的数据筛选和数据不平衡处理策略,利用层次聚类算法筛选出真正和本项目模块数据相似的跨项目历史软件模块数据,使跨项目软件缺陷预测模型避免受到不相关跨项目历史软件模块数据的影响,然后利用过采样方法增加有缺陷的软件模块数据得到分类相对平衡的新数据集,使跨项目软件缺陷预测模型避免受到不平衡的训练数据集的影响。本发明的技术方案具有简单高效的特点,能够较好地提高跨项目软件缺陷预测模型的性能。
附图说明
图1本发明实施例的流程图。
图2本发明实施例的本项目待预测软件模块和跨项目历史软件模块在19维空间上的分布图。
图3本发明实施例的本项目待预测软件模块和跨项目历史软件模块聚类结果图。
图4本发明实施例的数据过采样后结果图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图及实施例对本发明作进一步的详细描述,应当理解,此处所描述的实施示例仅用于说明和解释本发明,并不用于限定本发明。
请见图1,本发明提供的一种基于数据筛选和数据过采样的跨项目缺陷预测方法,包括以下步骤:
步骤1:抽取跨项目历史软件模块;
在一个项目刚进行开发时,由于没有任何历史软件模块数据,不能训练本项目缺陷预测模型。因此需要借用跨项目历史软件模块数据。因此抽取有用的跨项目历史软件模块,软件模块粒度可根据实际应用场景,可设置为文件、包、类或函数。标注所有的跨项目历史软件模块是否有缺陷,标记有缺陷的软件模块的类标号为Y,标记无缺陷的软件模块的类标号为N。
步骤2:提取跨项目历史软件模块的度量属性;
提取了19个度量属性:加权方法数(wmc),继承树深度(dit),孩子数(noc),对象类之间的耦合度(cbo),类的响应(rfc),内聚缺乏度(lcom),传入耦合(ca),传出耦合(ce),公开方法数(npm),代码行数(loc),数据访问度量(dam),聚合度量(moa),功能抽象度量(mfa),方法间的内聚度(cam),继承耦合(ic),方法间耦合(cbm),平均方法复杂度(amc),最大McCabe环形复杂度(max_cc),平均McCabe环形复杂度(avg_cc)。其中,McCabe是一种度量内部程序的复杂性的方法。
在经过了步骤1和步骤2后,本实施例假设在提取度量属性和标记类标号后形成了25个跨项目模块数据,每个软件模块数据由一个19维的度量属性向量xi=(x1i,x2i,x3i,x4i,x5i,x6i,x7i,x8i,x9i,x10i,x11i,x12i,x13i,x14i,x15i,x16i,x17i,x18i,x19i)和该模块的类标号组成:
X1={(13,2,0,18,112,76,3,17,1,0.88,1000,1,1,0.4,0.3,1,1,75.8,10),Y},
X2={(10,3,0,11,17,33,3,11,9,0.56,79,1,0,0.67,0.267,1,1,6.7,3),Y},
X3={(13,1,0,66,13,78,66,1,13,2,13,0,0,0,0.369,0,0,0,1),Y},
X4={(17,1,0,84,17,136,80,7,17,2,17,0,0,0,0.222,0,0,0,1),N},
X5={(0,1,0,27,0,0,26,1,0,2,0,0,0,0,0,0,0,0,0),Y},
X6={(2,3,0,3,7,1,0,3,1,2,24,0,0,0.833333333,0.667,1,1,11,1),N},
X7={(5,3,0,8,31,2,1,8,3,0.5,122,1,1,0.8,0.4,0,0,23,3),N},
X8={(26,1,1,10,47,0,5,5,24,0.08,236,1,1,0,0.258,0,0,8.038,2),Y}
X9={(3,1,0,8,14,3,3,5,3,2,85,0,0,0,0.5,0,0,27.33333333,9),Y},
X10={(13,1,0,1,17,64,0,1,12,0.917,117,1,0,0,0.462,0,0,7.462,3),N},
X11={(4,1,0,4,4,6,2,2,4,2,4,0,0,0,1,0,0,0,1),Y},
X12={(10,1,0,6,31,1,0,6,9,0.5,156,1,1,0,0.355555556,0,0,14.4,1),N},
X13={(7,1,0,6,19,7,0,6,6,0.75,117.0,1,2,0,0.367,0,0,15.143,3),N};
X14={(38,1,0,30,155,485,0,30,34,0.9,1564,1,7,0,0.14,0,0,39.6,7),N},
X15={(25,1,0,13,74,0,0,13,23,0.444,901,1,2,0,0.2,0,0,34.92,1),Y},
X16={(13,1,0,19,56,54,0,19,11,0.9,224,1,4,0,0.17,0,0,15.54,4,),N},
X17={(7,4,4,48,12,19,47,1,6,0.94,44,0.33,0,0.867,0.458,0,0,4.86,1),N},
X18={(28,1,0,27,28,378.0,24.0,3.0,28,2,28,0.0,0.0,0.0,0.228571429,0,0,0),N},
X19={(4.0,2.0,0,1,10,4.0,0.0,1.0,4.0,0.66,49.0,1.0,0,0.8125,0.43,1.0,1.0,11.0),N},
X20={(5,3,0.0,1,41,2,0,1.0,2.0,0.8333,236.0,1.0,0,0.88,0.35,1.0,2.0,45.6,2.0),N},
X21={(12.0,1.0,0,6,12,66,3,3.0,12.0,2.0,12.0,0.0,0.0,0.0,0.333,0.0,0.0,0.0,1.0),N},
X22={(16.0,1.0,0.0,18.0,23.0,98.0,15.0,3.0,16,0.92,122,1,3,0,0.17,1,1,6.1,6.0),N},
X23={(3.0,1.0,0.0,2.0,5.0,3.0,0.0,2.0,3.0,2.0,11.0,0.0,0.0,0.0,0.5,0.0,0,2.66,1),N},
X24={(2.0,1.0,0.0,1.0,6.0,1.0,1.0,0.0,2.0,2.0,20.0,0.0,0.0,0.0,0.5,0.0,0.0,9.0,1,N},
X25={(2.0,1.0,0.0,5.0,2.0,1.0,3.0,2.0,2.0,2.0,2.0,0.0,0.0,0.0,1.0,0.0,0.0,0.0,1),N};
步骤3:抽取本项目待预测软件模块,软件模块粒度可根据实际应用场景,可设置为文件、包、类或函数,这些待预测软件模块标记为“?”;
步骤4:提取本项目待预测软件模块与步骤2中相同的19个度量属性;
在经过了步骤3和步骤4后,本实施例假设在提取度量属性和标记类标号后形成了5个本项目待预测软件模块数据:
X26={(7,1,0,4,7,21,2,2,7,2,7,0,0,0,0.357142857,0,0,0,1),?},
X27={(4,1,0,2,4,6,2,0,4,2,4,0,0,0,0.875,0,0,0,1),?},
X28={(35,1,0,29,12,0,373,0,29,31,0.9,1250,1,5,0,0.17,0,0,34.1,5),?},
X29={(8,1,0,16,21,14,13,3,8,0.81,111,1,0,0,0.35,1,1,12.5,7),?},
X30={(11,1,0,8,18,13,7,1,11,0.775,130,1,1,0,0.29,1,1,10.45,7),?}。
这5个本项目待预测软件模块数据和25个跨项目历史软件模块数据可以形成如图2的本项目待预测软件模块和跨项目历史软件模块在19维空间上的分布图,约定:“●”表示类标号为Y的跨项目历史软件模块,“○”表示类标号为N的跨项目历史软件模块,“□”表示本项目待预测软件模块。
步骤5:对所有跨项目历史软件模块数据和所有本项目待预测软件模块数据执行凝聚型层次聚类AGENES算法,获得筛选后的跨项目历史软件模块数据。执行以下子步骤:
步骤5.1:设置终止簇数目,将所有跨项目历史软件模块数据和所有本项目待预测软件模块数据中的每一个软件模块单独当作为一个簇。本实施例中,设置终止簇数目为3,初始阶段,共30个软件模块即30个簇,记为C1、C2、…、C30
步骤5.2:循环找到欧式距离最小的两个簇,合并成新簇,直到簇数达到终止簇数目的预设值;
本实施例中,首先找到距离最小的两个簇:C1={X1}与C3={X3},将两个簇合并成新簇C1’={X1,X3}。随后重复步骤再次找到距离最小的两个簇:C13={X13}与C30={X30},将两个簇合并成新簇C2’={X13,X30},最终,请见图3本发明实施例的本项目待预测软件模块和跨项目历史软件模块聚类结果图,本实施例中所有的本项目待预测软件模块数据和所有的跨项目历史软件模块数据最终被聚类为三个簇:C1={X1,X3,X8,X15,X16,X17,X19,X20,X23,X26,X29,X30},C2={X4,X10,X12,X22}和C3={X2,X5,X6,X7,X9,X11,X13,X14,X 18,X 21,X24,X 25,X27,X28};
步骤5.3:选择包含本项目待预测软件模块的簇中的所有跨项目历史软件模块数据,即为筛选后的跨项目历史软件模块数据;
请见图3,在本实施例中,簇C1包含本项目待预测软件模块X26,X29和X30,因此C1中的所有跨项目历史软件模块数据被选入,同理簇C3中,包含本项目待预测软件模块X27和X28,簇C3中的所有跨项目历史软件模块被选入。由于簇C2中没有包含本项目待预测软件模块,丢弃簇C2中所有跨项目历史软件模块数据。因此最终的筛选后的跨项目历史软件模块数据包含软件模块X1,X2,X3,X5,X6,X7,X8,X9,X11,X13,X14,X15,X16,X17,X 18,X19,X20,X 21,X23,X24,X 25
步骤6:对筛选后的跨项目历史软件模块数据进行过采样,使跨项目历史软件模块数据平衡。执行以下子步骤:
步骤6.1:搜索类标号为Y的筛选后的跨项目历史软件模块Xi在同一个簇中的k个类标号也为Y的近邻软件模块,记为Xi(near);
本实施例设k为3,以软件模块X8为例,搜寻X8的3个最近邻软件模块,尽管由图2可以看出,X8的3个最近邻软件模块分别为:X3、X5和X15。但是X5在层次聚类阶段被划分到不同的簇中,因此,X8在同一个簇中的3个类标号也为Y的近邻软件模块为X1,X3和X15,记为X8(near)={X1,X3,X15}。
步骤6.2:设定数据集的过采样倍率m(m<k),即从Xi的k个类标号也为Y的近邻Xi(near)中随机选取的m个软件模块进行插值操作合成新的软件模块。新的软件模块的19维的度量属性向量xinew=xi+rand(0,1)×(xi’-xi),其中,xi为Xi的19维的度量属性向量,rand(0,1)为0与1之间的某一随机数,xi’为从Xi的k个缺陷数目也大于0的近邻软件模块Xi(near)中随机选择的m个软件模块中的一个软件模块Xi’的19维的度量属性向量。新合成的软件模块Xinew的类标号为Y。
本实施例令过采样倍率m=1,即从X8的3个类标号也为Y的近邻X8(near)={X1,X3,X15}中随机选取1个软件模块进行插值操作合成新的软件模块。假设抽取的软件模块为X3,假设rand(0,1)函数取值为0.5,新的软件模块X31的19维的度量属性向量x31=x8+0.5×(x8-x3)=(19.5,1,0.5,38,30,39,36.5,3,18.5,1.04,124.5,0.5,0.5,0,0.3135,0,0,4.019,1.5)。新合成的软件模块X31的类标号为Y。
步骤6.3:对全部的T个类标号为Y的筛选后的跨项目历史软件模块重复步骤6.1和6.2的操作,共合成m×T个新的软件模块;
本实施例对全部的类标号为Y的筛选后的跨项目历史软件模块即X1,X2,X3,X5,X8,X9,X11,X15重复步骤6.1和6.2的操作,共合成了8个新的软件模块:
X31={(19.5,1,0.5,38,30,39,36.5,3,18.5,1.04,124.5,0.5,0.5,0,0.3135,0,0,4.019,1.5),Y},
X32={13.0,1.5,0.0,42.0,62.5,77.0,34.5,9.0,7.0,1.44,506.5,0.5,0.5,0.2,0.3345,0.5,0.5,37.9,5.5,Y},
X33={25.5,1.0,0.5,11.5,60.5,0.0,2.5,9.0,23.5,0.262,568.5,1.0,1.5,0.0,0.229,0.0,0.0,21.479,1.5,Y},
X34={19.0,1.5,0.0,15.5,93.0,38.0,1.5,15.0,12.0,0.662,950.5,1.0,1.5,0.2,0.25,0.5,0.5,55.36,5.5,Y},
X35={5.0,2.0,0.0,19.0,8.5,16.5,14.5,6.0,4.5,1.28,39.5,0.5,0.0,0.335,0.1335,0.5,0.5,3.35,1.5,Y},
X36={1.5,1.0,0.0,17.5,7.0,1.5,14.5,3.0,1.5,2.0,42.5,0.0,0.0,0.0,0.25,0.0,0.0,13.666666665,4.5,Y},
X37={3.5,1.0,0.0,6.0,9.0,4.5,2.5,3.5,3.5,2.0,44.5,0.0,0.0,0.0,0.75,0.0,0.0,13.666666665,5.0,Y},
X38={7.0,2.0,0.0,7.5,10.5,19.5,2.5,6.5,6.5,1.28,41.5,0.5,0.0,0.335,0.6335,0.5,0.5,3.35,2.0,Y};
这5个本项目待预测软件模块数据、21个筛选后的跨项目历史软件模块数据和5个新合成的软件模块可以形成如图4所示的在19维空间上的分布图。
步骤7:令通过步骤5产生的筛选后的跨项目历史软件模块数据和通过步骤6产生的新合成的软件模块数据为训练集D,基于训练集D训练出朴素贝叶斯预测模型;
由于软件模块属于有缺陷的类(Y)和无缺陷的类(N)的先验概率未知,则假定两个类是等概率的,因此训练朴素贝叶斯算法模型只需对训练集D计算类标号为Y的软件模块在每个度量属性Ak上的均值μkY和标准差σkY,计算类标号为N的软件模块在每个度量属性Ak上的均值μkN和标准差σkN。本实施例中D={X1,X2,X3,X5,X6,X7,X8,X9,X11,X13,X14,X15,X16,X17,X18,X19,X20,X 21,X23,X24,X 25,X31,X32,X 33,X34,X35,X 36,X37,X 38},求得类标号为Y的软件模块在第一个度量属性上的均值μ1Y=11.75和标准差σ1Y=8.67。同理求得类标号为N的软件模块在第一个度量属性上的均值μ1N和标准差σ1N,类标号为Y的软件模块在第二个度量属性上的均值μ2Y和标准差σ2Y,类标号为N的软件模块在第二个度量属性上的均值μ2N和标准差σ2N,…,类标号为Y的软件模块在第19个度量属性上的均值μ19Y和标准差σ19Y,类标号为N的软件模块在第19个度量属性上的均值μ19N和标准差σ19N
步骤8:用训练得到的朴素贝叶斯预测模型预测本项目待预测软件模块X;
步骤8.1:计算本项目待预测软件模块X有缺陷的后验概率:
Figure BDA0001349685500000081
其中xk为软件模块X在第k个度量属性上的值。
计算本项目待预测软件模块X无缺陷的后验概率:
Figure BDA0001349685500000091
本实施例预测待预测本项目待预测软件模块X26是否有缺陷,其第一个度量属性的值为7。按照公式计算出:
Figure BDA0001349685500000092
同样计算出:
P(x2|Y),…,P(x19|Y),P(x1|N),P(x2|N),…,P(x19|N);
于是:
Figure BDA0001349685500000093
Figure BDA0001349685500000094
步骤8.2:判定本项目待预测软件模块X是否有缺陷;
如果P(X|N)>P(X|Y),朴素贝叶斯分类方法判断其类标号为N,即该软件模块为无缺陷的软件模块;
如果P(X|N)<P(X|Y),朴素贝叶斯分类方法判断其类标记为Y,即该软件模块为有缺陷的软件模块。
本实施例步骤8.1中求得软件模块X26的P(X26|Y)=3.02567716543e-19,P(X26|N)=6.27606977667e-29,由于P(X26|Y)>P(X26|N),朴素贝叶斯分类方法判断其类标号为Y,即预测该软件模块为有缺陷的软件模块。
应当理解的是,本说明书未详细阐述的部分均属于现有技术。
应当理解的是,上述针对较佳实施例的描述较为详细,并不能因此而认为是对本发明专利保护范围的限制,本领域的普通技术人员在本发明的启示下,在不脱离本发明权利要求所保护的范围情况下,还可以做出替换或变形,均落入本发明的保护范围之内,本发明的请求保护范围应以所附权利要求为准。

Claims (4)

1.一种基于数据筛选和数据过采样的跨项目缺陷预测方法,其特征在于,包括以下步骤:
步骤1:抽取跨项目历史软件模块,标注所有的跨项目历史软件模块是否有缺陷,标记有缺陷的历史软件模块的类标号为Y,标记无缺陷的历史软件模块的类标号为N;
步骤2:提取跨项目历史软件模块的度量属性;
步骤3:抽取本项目待预测软件模块,标记为“?”;
步骤4:提取本项目待预测软件模块的度量属性;
步骤5:对所有跨项目历史软件模块数据和所有本项目待预测软件模块数据执行凝聚型层次聚类AGENES算法,获得筛选后的跨项目历史软件模块数据;
步骤5的具体实现包括以下子步骤:
步骤5.1:设置终止簇数目,将所有跨项目历史软件模块数据和所有本项目待预测软件模块数据中的每一个软件模块单独当作为一个簇;
步骤5.2:循环找到欧式距离最小的两个簇,合并成新簇,直到簇数达到终止簇数目的预设值;
步骤5.3:选择包含本项目待预测软件模块的簇中的所有跨项目历史软件模块数据,即为筛选后的跨项目历史软件模块数据;
步骤6:对筛选后的跨项目历史软件模块数据进行过采样,使跨项目历史软件模块数据平衡;
步骤6的具体实现包括以下子步骤:
步骤6.1:搜索类标号为Y的筛选后的跨项目历史软件模块Xi在同一个簇中的k个类标号也为Y的近邻软件模块,记为Xi(near);
步骤6.2:设定数据集的过采样倍率m,m<k,即从Xi的k个类标号也为Y的近邻Xi(near)中随机选取的m个软件模块进行插值操作合成新的软件模块;新的软件模块的19维的度量属性向量xinew=xi+rand(0,1)×(xi’-xi),其中,xi为Xi的19维的度量属性向量,rand(0,1)为0与1之间的某一随机数,xi’为从Xi的k个缺陷数目也大于0的近邻软件模块Xi(near)中随机选择的m个软件模块中的一个软件模块Xi’的19维的度量属性向量;新合成的软件模块Xinew的类标号为Y;
步骤6.3:对全部的T个类标号为Y的筛选后的跨项目历史软件模块重复步骤6.1和6.2的操作,共合成m×T个新的软件模块;
步骤7:令通过步骤5产生的筛选后的跨项目历史软件模块数据和通过步骤6产生的新合成的软件模块数据为训练集D,基于训练集D训练出朴素贝叶斯预测模型;
步骤8:用训练得到的朴素贝叶斯预测模型预测本项目待预测软件模块X;
步骤8的具体实现包括以下子步骤:
步骤8.1:计算本项目待预测软件模块X有缺陷的后验概率:
Figure FDA0002238240460000021
其中xk为软件模块X在第k个度量属性上的值;
计算本项目待预测软件模块X无缺陷的后验概率:
Figure FDA0002238240460000022
其中xk为软件模块X在第k个度量属性上的值;
其中,类标号为Y的软件模块在每个度量属性Ak上的均值为μkY和标准差为σkY,类标号为N的软件模块在每个度量属性Ak上的均值为μkN和标准差为σkN
步骤8.2:判定本项目待预测软件模块X是否有缺陷;
如果P(X|N)>P(X|Y),朴素贝叶斯分类方法判断其类标号为N,即该软件模块为无缺陷的软件模块;
如果P(X|N)<P(X|Y),朴素贝叶斯分类方法判断其类标记为Y,即该软件模块为有缺陷的软件模块。
2.根据权利要求1所述的基于数据筛选和数据过采样的跨项目缺陷预测方法,其特征在于:步骤1中,历史软件模块粒度根据实际应用场景,设置为文件、包、类或函数。
3.根据权利要求1所述的基于数据筛选和数据过采样的跨项目缺陷预测方法,其特征在于:步骤2中,提取了19个度量属性,分别为加权方法数wmc、继承树深度dit、孩子数noc、对象类之间的耦合度cbo、类的响应rfc、内聚缺乏度lcom、传入耦合ca、传出耦合ce、公开方法数npm、代码行数loc、数据访问度量dam、聚合度量moa、功能抽象度量mfa、方法间的内聚度cam、继承耦合ic、方法间耦合cbm、平均方法复杂度amc、最大McCabe环形复杂度max_cc、平均McCabe环形复杂度avg_cc。
4.根据权利要求1所述的基于数据筛选和数据过采样的跨项目缺陷预测方法,其特征在于:步骤7中,由于软件模块属于有缺陷的类和无缺陷的类的先验概率未知,则假定两个类是等概率的,因此训练朴素贝叶斯算法模型只需对通过步骤5产生的筛选后的跨项目历史软件模块数据和通过步骤6产生的新合成的软件模块数据为训练集D计算类标号为Y的软件模块在每个度量属性Ak上的均值μkY和标准差σkY,计算类标号为N的软件模块在每个度量属性Ak上的均值μkN和标准差σkN
CN201710571098.XA 2017-07-13 2017-07-13 一种基于数据筛选和数据过采样的跨项目缺陷预测方法 Expired - Fee Related CN107391369B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201710571098.XA CN107391369B (zh) 2017-07-13 2017-07-13 一种基于数据筛选和数据过采样的跨项目缺陷预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201710571098.XA CN107391369B (zh) 2017-07-13 2017-07-13 一种基于数据筛选和数据过采样的跨项目缺陷预测方法

Publications (2)

Publication Number Publication Date
CN107391369A CN107391369A (zh) 2017-11-24
CN107391369B true CN107391369B (zh) 2020-03-24

Family

ID=60339484

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201710571098.XA Expired - Fee Related CN107391369B (zh) 2017-07-13 2017-07-13 一种基于数据筛选和数据过采样的跨项目缺陷预测方法

Country Status (1)

Country Link
CN (1) CN107391369B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN107346286B (zh) * 2017-07-03 2020-05-12 武汉大学 一种基于核主成分分析和极限学习机的软件缺陷预测方法
CN107391365B (zh) * 2017-07-06 2020-10-13 武汉大学 一种面向软件缺陷预测的混合特征选择方法
CN107391370B (zh) * 2017-07-13 2020-05-12 武汉大学 一种基于数据过采样和集成学习的软件缺陷数目预测方法
CN108647138A (zh) * 2018-02-27 2018-10-12 中国电子科技集团公司电子科学研究院 一种软件缺陷预测方法、装置、存储介质及电子设备
CN109491914B (zh) * 2018-11-09 2021-11-30 大连海事大学 基于不平衡学习策略高影响缺陷报告预测方法
CN110515836B (zh) * 2019-07-31 2023-08-11 杭州电子科技大学 一种面向软件缺陷预测的加权朴素贝叶斯方法
CN110659207B (zh) * 2019-09-02 2020-09-08 北京航空航天大学 基于核谱映射迁移集成的异构跨项目软件缺陷预测方法
CN110825644B (zh) * 2019-11-11 2021-06-11 南京邮电大学 一种跨项目软件缺陷预测方法及其系统
CN111367801B (zh) * 2020-02-29 2024-07-12 杭州电子科技大学 一种面向跨公司软件缺陷预测的数据变换方法
CN111367808B (zh) * 2020-03-05 2023-05-02 中山大学 一种针对跨版本软件缺陷预测的数据噪声处理方法
CN111581116B (zh) * 2020-06-16 2023-12-29 江苏师范大学 一种基于分层数据筛选的跨项目软件缺陷预测方法
CN111966586A (zh) * 2020-08-05 2020-11-20 南通大学 一种基于模块选择和权重更新的跨项目缺陷预测方法
CN113157564B (zh) * 2021-03-17 2023-11-07 江苏师范大学 一种基于特征分布对齐和邻域实例选择的跨项目缺陷预测方法
CN113176998A (zh) * 2021-05-10 2021-07-27 南通大学 基于源选择的跨项目软件缺陷预测方法

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528417A (zh) * 2016-10-28 2017-03-22 中国电子产品可靠性与环境试验研究所 软件缺陷智能检测方法和系统

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106528417A (zh) * 2016-10-28 2017-03-22 中国电子产品可靠性与环境试验研究所 软件缺陷智能检测方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
Empirical evaluation of the effects of mixed project data on learning defect predictors;Burak Turhan et al.;《Information and Software Technology》;20131231;正文第1101-1118页 *
基于半监督学习的软件缺陷预测方法研究;廖胜平;《中国优秀硕士学位论文全文数据库》;20170315;正文第6-50页 *

Also Published As

Publication number Publication date
CN107391369A (zh) 2017-11-24

Similar Documents

Publication Publication Date Title
CN107391369B (zh) 一种基于数据筛选和数据过采样的跨项目缺陷预测方法
Ni et al. A cluster based feature selection method for cross-project software defect prediction
Ma et al. Empirical analysis of network measures for effort-aware fault-proneness prediction
US11580560B2 (en) Identity resolution for fraud ring detection
CN111782512B (zh) 基于不平衡噪声集的多特征软件缺陷综合预测方法
CN110335168B (zh) 基于gru优化用电信息采集终端故障预测模型的方法及系统
CN113935497A (zh) 智能运维故障处理方法、装置、设备及其存储介质
CN107168995B (zh) 一种数据处理方法及服务器
CN107247666B (zh) 一种基于特征选择和集成学习的软件缺陷个数预测方法
CN107391370B (zh) 一种基于数据过采样和集成学习的软件缺陷数目预测方法
US11704186B2 (en) Analysis of deep-level cause of fault of storage management
CN111859047A (zh) 一种故障解决方法及装置
CN111400198A (zh) 一种自适应的软件测试系统
CN114757468B (zh) 一种面向流程挖掘中流程执行异常的根源分析方法
Lal et al. LogOptPlus: Learning to optimize logging in catch and if programming constructs
CN113723555A (zh) 异常数据的检测方法及装置、存储介质、终端
CN116414717A (zh) 基于流量回放的自动测试方法、装置、设备、介质及产品
CN111522736A (zh) 一种软件缺陷预测方法、装置、电子设备及计算机存储介质
Chen et al. A novel test case prioritization approach for black‐box testing based on K‐medoids clustering
CN110532122B (zh) 故障分析方法及系统、电子设备、存储介质
CN112416800A (zh) 智能合约的测试方法、装置、设备及存储介质
Sandhu et al. A density based clustering approach for early detection of fault prone modules
CN112749003A (zh) 系统优化的方法、设备及计算机可读存储介质
Bodhe et al. Diagnostic Fail Data Minimization Using an $ N $-Cover Algorithm
Shao et al. Research on Cross‐Company Defect Prediction Method to Improve Software Security

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
CF01 Termination of patent right due to non-payment of annual fee
CF01 Termination of patent right due to non-payment of annual fee

Granted publication date: 20200324

Termination date: 20210713