CN108664402A - 一种基于软件网络特征学习的故障预测方法 - Google Patents

一种基于软件网络特征学习的故障预测方法 Download PDF

Info

Publication number
CN108664402A
CN108664402A CN201810455576.5A CN201810455576A CN108664402A CN 108664402 A CN108664402 A CN 108664402A CN 201810455576 A CN201810455576 A CN 201810455576A CN 108664402 A CN108664402 A CN 108664402A
Authority
CN
China
Prior art keywords
node
network
software
defect
degree
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.)
Granted
Application number
CN201810455576.5A
Other languages
English (en)
Other versions
CN108664402B (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 CN201810455576.5A priority Critical patent/CN108664402B/zh
Publication of CN108664402A publication Critical patent/CN108664402A/zh
Application granted granted Critical
Publication of CN108664402B publication Critical patent/CN108664402B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

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/3668Software testing
    • G06F11/3672Test management
    • G06F11/368Test management for test version control, e.g. updating test cases to a new software version
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3688Test management for test execution, e.g. scheduling of test suites
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3692Test management for test results analysis
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3696Methods or tools to render software testable

Abstract

本发明是一种基于软件网络特征学习的故障预测方法,属于软件复杂网络领域。本发明包括:获取目标软件各版本的源代码及缺陷信息,构建软件缺陷网络;设计针对软件缺陷网络节点内部特征、局部特征、全局特征的多层结构度量元,构建缺陷预测数据集;利用最大最小化方法和PCA降维方法,对缺陷预测数据集预处理;利用动态预测门限滤波算法的预测模型优选方法建立适合此软件的最佳缺陷预测模型,并给出缺陷预测效果及得分。本发明将复杂网络技术引入到缺陷预测中,利用复杂网络度量参数设计出一套能反映缺陷在软件局部和整体特征的度量元,并能选出目标软件最适合的缺陷预测模型,对目标软件进行缺陷故障预测最大限度减低了人力和时间成本。

Description

一种基于软件网络特征学习的故障预测方法
技术领域
本发明应用于软件复杂网络领域,是一种基于软件网络特征学习的故障预测方法。
背景技术
随着这几十年网络与信息技术的快速发展,软件作为计算机实现各项功能,辅助人们进 行各项活动的载体,在当今世界各行各业中发挥着重要的作用。高效、安全的软件系统高度 依赖于软件质量,而影响软件质量的软件缺陷是导致系统错误、失败、崩溃,甚至是灾难的 根本原因。因此,软件缺陷预测已成为近年来的热门研究领域。目前,开展大量的软件测试 是提高软件可靠性的重要手段,每年用于支持软件测试的研制费用都数以亿计。但随着软件 规模越来越大,复杂性越来越高,传统软件测试凸显出越来越多的弊端。国外的一些研究表 明使用缺陷预测模型获得的缺陷检测概率(PD)可以达到71%,高于软件代码审查的检查概 率(60%),更高于纯黑盒测试的检测率。近几年随着机器学习技术的逐渐成熟,已经让利用 历史缺陷信息和软件度量元进行缺陷预测变得更为有效。大量实例的研究表明,利用机器学 习中的关联规则、分类器算法、聚类算法等,取得了很好的缺陷高风险预测效果,并且建立 在缺陷预测之上的软件测试与普通的软件测试相比,显著的提高了缺陷检测率,减少了测试 用例的数量,缩短了测试时间,对于提高软件可靠性有着显著的作用。
软件是一种公认的人工复杂系统。若将软件系统中的类、子程序、构件等元素视为节点, 元素间的相互关系视为节点间的(有向)边,软件的结构实质上表现成为一种互连的复杂网 络拓扑。目前一些有关软件网络的研究,已经证明一些软件网络特征与软件质量存在直接或 间接的关系,很多软件网络的拓扑结构特征与缺陷密切相关,可以作为软件缺陷预测的度量 元使用。
设置新颖的与软件缺陷存在强相关性的度量元是故障预测的关键(参考文件[1])。周毓 明等人(参考文件[2])发现了类规模度量元在分析时存在潜在的混合效应,并会对缺陷预测 模型的性能产生影响,随后提出了一种基于线性回归的方法来移除这种混合效应(参考文件 [3]),并基于程序切片的内聚性度量元(参考文件[4])与程序模块缺陷间(参考文件[5])的 相关性进行了深入分析。Zimmermann(参考文件[6])通过分析二进制文件间的数据依赖关系 和调用依赖关系来预测模块部署后缺陷数(post‐releasedefects),并借助社交网络分析中的 网络中心度指标来识别出系统内的中心位置程序模块,指出模块的中心度指标与部署后缺陷 数存在相关性(参考文件[7])。Shin等人(参考文件[8])通过分析方法之间的调用关系来设 计度量元,认为一个文件含有的调用者和被调用者数量、与新方法之间的调用关系、内聚性 和修改频率等对缺陷都有较大影响。Hu等人(参考文件[9])对Bird等(参考文件[10])的socio‐technical网络中的关系强度与部署后缺陷数的相关性进行了分析,认为关系强度可以 有效地反映出模块之间以及模块与开发人员之间的耦合程度,一般来说耦合性越高意味着软 件设计越差。Moser等人(参考文件[11])从文件的修改次数、重构次数、缺陷修复次数、 修改涉及的开发人员数、修改的代码行数等角度出发,共设计了18种度量元,认为修改次 数、修改涉及文件数目和重构次数等与缺陷均存在较为密切的关系。Hassan(参考文件[12]) 还将修改代码的复杂性作为度量元,发现复杂的代码修改会显著的降低代码质量。Kim等人 (参考文件[13])借助版本控制系统获得某个文件的代码修改历史,借助机器学习方法从数 据集中学习出buggy代码修改和clean代码修改的修改模式,实现对代码修改的预测。
从现有的研究来看,目前大多数软件缺陷预测采用的度量元仍然采用的文件或类颗粒度 上的统计特征数据,例如某特征的数量、比例、中位数、均值、方差、变异系数和偏度等, 实质是从集合论的角度将软件程序元素离散化处理,从局部数据值分析处理的角度预测缺陷, 在一定程度上忽略了软件程序的宏观整体性,破坏了软件程序元素之间的相互影响,所以会 出现一些缺陷预测方法相对于NASA(美国国家航空航天局)或Promise数据集的效果好, 但在实际的软件项目中效果却不太理想的情况。
参考文献:
[1].陈翔,顾庆,刘望舒,刘树龙,倪超.静态软件缺陷预测方法研究.软件学报,2016,27(1):1-25. http:www.jos.org.cn/1000‐9825/4923.htm
[2].Zhou YM,Xu BW,Leung H.On the ability of complexity metrics topredict fault‐prone classes in object‐oriented systems.Journal of Systems andSoftware,2010,83(4):660-674.[doi: 10.1016/j.jss.2009.11.704]
[3].Zhou YM,Xu BW,Leung H,Chen L.An in‐depth study of the potentiallyconfounding effect of class size in fault prediction.ACM Trans.on SoftwareEngineering and Methodology, 2014,23(1):10:1-10:51.[doi:10.1145/2556777]
[4].Meyers TM,Binkley D.An empirical study of slice‐based cohesionand coupling metrics. ACM Trans.on Software Engineering and Methodology,2007,17(1):2:1-27.
[5].Yang YB,Zhou YM,Lu HM,Chen L,Chen ZY,Xu BW,Leung H,Zhang ZY.Areslice‐ based cohesion metrics actually useful in effort‐aware post‐releasefault‐proneness prediction? an empirical study.IEEE Trans.on SoftwareEngineering,2015,41(4):331-357.
[6].Zimmermann T,Nagappan N.Predicting subsystem failures usingdependency graph complexities.In:Proc.of the Int’l Symp.on SoftwareReliability.2007.227-236.[doi:10.1109/ISSRE.2007.19]
[7].Zimmermann T,Nagappan N.Predicting defects using network analysison dependency graphs.In:Proc.of the Int’l Conf.on Software Engineering.2008.531-540.[doi:10.1145/1368088.1368161]
[8].Shin Y,Bell RM,Ostrand TJ,Weyuker EJ.On the use of callingstructure information to improve fault prediction.Empirical SoftwareEngineering, 2012,17(4–5):390-423.[doi:10.1007/s10664‐011‐9165‐9]
[9].Hu W,Wong K.Using citation influence to predict softwaredefects.In: Proc.of the Working Conf.on Mining SoftwareRepositories.2013.419-428.[doi: 10.1109/MSR.2013.6624058]
[10].Bird C,Nagappan N,Gall H,Murphy B,Devanbu P.Putting it alltogether:Using socio‐ technical networks to predict failures.In:Proc.of theInt’l Symp.on Software Reliability Engineering.2009.109-119.[doi:10.1109/ISSRE.2009.17]
[11].Moser R,Pedrycz W,Succi G.A comparative analysis of theefficiency of change metrics and static code attributes for defectprediction.In: Proc.of the Int’l Conf.on Software Engineering.2008.181-190.[doi:10.1145/1368088.1368114]
[12].Hassan AE.Predicting faults using the complexity of codechanges.In: Proc.of the Int’l Conf.on Software Engineering.2009.78-88.
[13].Kim S,Whitehead Jr EJ,Zhang Y.Classifying software changes:Cleanor buggy.IEEE Trans.on Software Engineering,2008,34(2):181-196.
发明内容
本发明针对于现有的缺陷预测主要是通过分析软件代码或开发过程,采用与软件缺陷相 关的文件或类上的统计特征数据作为度量元,在一定程度上忽略了软件程序的宏观整体性、 局部缺陷与周边程序元素的相关性等问题,将复杂网络技术引入到缺陷预测中,通过建立软 件网络模型,利用复杂网络度量参数设计出一套能反映缺陷在软件局部和整体特征的度量元, 并提出一种基于动态预测门限滤波算法的预测模型优选方法。
本发明提出的一种基于软件网络特征学习的故障预测方法,首先对待分析的目标嵌入式 软件,获取该软件各版本的源代码和缺陷信息,构建各版本的软件缺陷网络,然后进行如下 步骤:
(1)设计软件缺陷网络的节点内部特征、局部特征和全局特征的度量元;其中,节点内 部特征的度量元包括节点内包含的函数个数Funcount、节点内部函数之间连接的个数 Insidelinks、节点的入度Indegree和节点的出度Outdegree;
(2)对每个软件缺陷网络,计算其中每个节点的各度量元值,构成缺陷预测数据集;
(3)由上面步骤获得训练集和测试集,利用动态预测门限滤波算法的预测模型优选方法 建立适合目标软件的最佳故障预测模型,也即缺陷预测模型,然后利用得到的最佳缺陷预测 模型对目标软件进行缺陷预测;
其中,所述的利用动态预测门限滤波算法的预测模型优选方法实现包括:
步骤3.1,设获得训练集L={G1,G2,…,Gm},m代表训练集中的软件缺陷网络数量,获得 测试集Gt;建立初始为空集的集合L1和L2;遍历训练集L,若其中的网络Gr中没有缺陷节 点,将Gr加入集合L1,否则加入集合L2;r=1,2,…,m;
步骤3.2,将集合L2中所有网络按照版本从小到大排序,选择最后的K个网络构成验证 版本集合VD,然后将集合L2中剩余的网络与集合L1进行合并构成新的集合H;K为正整数;
步骤3.3,从集合H的每个网络中挑选出有缺陷的节点,加入训练集合T,并记录T中的 节点个数count;
步骤3.4,挑选出集合H中版本最大的网络,设为G’,遍历G’中的每一个节点,选出无 缺陷的节点加入训练集合T,挑选的节点满足以下两个条件:(1)该节点必须在集合H的每 个网络中都存在且为无缺陷节点;(2)所挑选的节点数量总共不超过q*count;其中q为正整 数;
步骤3.5,利用训练集T和验证版本集合VD中每个网络构建的验证集,应用不同的机器 学习算法建立故障预测模型,并用AUC值作为模型评价指标;对每个验证集,不断改变各机 器学习算法的阈值,直到对应所建立的故障预测模型的AUC值不再变化为止,此时记录在各 验证集下每个机器学习算法取得的阈值;
步骤3.6,对每一个机器学习算法,在所有验证集中选择最小AUC取值对应的阈值作为 测试集Gt中该机器学习算法的阈值。
最后从所有建立故障预测模型中选取AUC值最大的作为最佳预测模型,该模型预测的结 果作为最终缺陷预测的结果。
本发明与现有技术相比,具有以下优势:
(1)本发明围绕软件元素之间的关联关系和演化关系,利用软件源程序,构建面向对象 软件类网络,利用复杂网络度量参数将软件程序的宏观拓扑结构与微观交联关系相结合设计 多层结构特征的度量元。所设计的度量元较为全面,包括了节点内部结构特征、局部结构特 征以及全局结构特征。
(2)本发明提出了一种基于动态预测门限滤波算法的预测模型优选方法,实现了训练数 据集的优化,门限值的优化以及预测模型的优化。该方法根据优化的训练集、优化的门限值, 采用不同的机器学习算法建立缺陷预测模型,从中选出适合该款软件最佳的缺陷预测模型。
(3)本发明方法整个缺陷预测过程都可在后台实现,建立在完全自动化的流程上,确保 最大限度减低人力和时间成本。
附图说明
图1是本发明的基于软件网络特征学习的故障预测方法的整体流程图;
图2是本发明TintBrowser软件某版本的缺陷类网络示意图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步的详 细和深入描述。
本发明的一种基于软件网络特征学习的故障预测方法,如图1,整体包括五个步骤:
步骤1,确定目标软件,获取其完整的软件源代码,并得到各版本的缺陷信息。
步骤2,利用静态代码扫描技术和缺陷融合技术,构建软件缺陷网络。如图2所示,是 为TintBrowser软件某版本构建的一个软件缺陷网络示意图。
步骤3,在步骤2的基础上,设计针对软件缺陷网络节点内部特征、局部特征、全局特 征的多层结构度量元,并构建缺陷预测数据集。
步骤4,在步骤3的基础上,利用最大最小化方法和PCA降维方法,对缺陷预测数据集 进行预处理。
步骤5,在步骤4的基础上,利用动态预测门限滤波算法的预测模型优选方法建立适合 此软件的最佳缺陷预测模型,并给出缺陷预测效果及得分。
为了更清晰的介绍本发明,以面向对象软件进行缺陷预测为例说明步骤3中所设计的多 层结构特征度量元以及步骤5中动态预测门限滤波算法的预测模型优选方法。对一个面向对 象软件,在步骤2中利用静态代码扫描技术抽取软件程序中不同的类以及它们之间的相互作 用关系,构建软件类网络,然后利用缺陷信息融合技术,将不同版本的缺陷信息植入网络, 构建面向对象软件的缺陷类网络。
软件缺陷类网络可表示为一个有向图G=(V,E),其中V=(v1,v2,...,vn)表示类网络节点集 合,其中的每个节点代表一个类,n代表节点总数;E=(eij|i,j=1,2,...,n,i≠j)表示有向边的 集合,eij表示节点vi指向vj的有向边,有向边代表类之间的调用和被调用关系。
在步骤3中,本发明所设计的多层结构特征度量元包括以下三个层面的度量元。所设计 的度量元不仅包括常用的Degree_centrality,Closeness_centrality,Betweenness_centrality等,还 包括了Katz_centrality,PageRank,Number_of_cliques等,特别的是针对软件类网络的实际情 况设计了表征节点内部结构的诸如InsideLinks等特征度量元。
步骤3.1,设计节点的内部结构特征度量元。内部结构特征度量元主要关注的是软件缺陷 类网络每个节点内部的结构特征,是本发明对网络微观结构的度量方式,对一个节点vi,主 要包括以下几个度量元:
Funcount,表示类网络节点vi内部所包含的函数的个数;
Outdegree,即节点的出度,表示这个类vi内部函数指向外部函数的有向边的个数;
Indegree,即节点的入度,表示外部函数指向这个类vi内部函数的有向边的个数;
Insidelinks,表示类节点vi内部函数之间连接的个数。
上面Funcount、Insidelinks、Indegree、OutDegree四个度量元代表的是软件类网络中每一 个节点内部的结构特征参数,其值越大,表明这个点在网络中越重要,这种微观层面的度量 参数在缺陷预测中是十分有用。
步骤3.2,设计节点的全局结构特征度量元。全局结构特征度量元主要关注的是软件缺陷 类网络每个节点在整个网络中的结构特征,是本发明对网络宏观结构的度量方式。对于节点 vi主要包括以下几个度量元:
Degree_centrality,表示度中心性,反映的是网络中一个节点与网络中所有其它节点的直 接联系程度。其值的范围从0.0到1.0,其中0.0表示该点与任何节点都没有联系,例如一个 孤点,1.0表示该点与每一个节点都有直接联系。节点vi的度中心性值CD(vi)可以用如下公式 计算:
其中,xij表示节点vi与节点vj之间是否存在有向边,如有则取值为1,否则取值为0。n 为软件网络中的节点总数。
Out_degree_centrality,表示出度中心性,反映的是网络中一个节点直接指向其它节点的 比例,取值范围从0.0到1.0。节点vi的出度中心性值COD(vi)可以用如下公式计算:
其中,xi→j表示是否存在节点vi指向节点vj的有向边,若存在xi→j的值为1,否则值为0。
In_degree_centrality,表示入度中心性,反映的是网络中一个节点被其它节点指向的比例, 取值范围从0.0到1.0。节点vi的入度中心性值CID(vi)可以用如下公式计算:
其中,xj→i表示是否存在节点vj指向节点vi的有向边,若存在xj→i的值为1,否则值为0。
上述三个参数都属于度中心性,这是网络分析中最直接的节点中心性度量。节点的中心 性值越高,表明节点在网络中越重要。
Closeness_centrality,用来度量网络中节点和其他节点之间的紧密程度,计算值定义为: 对节点vi,网络中其他节点到节点vi的最短路径距离之和的倒数。该度量元的值越大,表示 节点越靠近网络中心,其到达其他点的速度越快。节点vi的Closeness_centrality的值表示为 Cc(vi),计算公式为:
其中,|V|是网络中节点的总数,dji为网络中的节点vj到节点vi的最短路径长度。最短路 径(距离)dji是从节点vj出发,沿网络有向图的边到达节点vi所经过的最小路径中边数量的总 和。
Betweenness_centrality,表示网络中所有最短路径中经过该节点的路径的数目占最短路径 总数的比例。如果网络中任意两个节点的所有最短路径中有很多条都经过了节点vi,则表明 节点vi越重要。节点vi的Betweenness_centrality的值表示为CB(vi),计算公式为:
其中,σjk是网络中任意两个节点vj指向节点vk之间最短路径的数量,σjk(vi)是通过节 点vi的节点vj指向节点vk的最短路径的个数。
Eccentricity,表示从某节点vi到网络G中所有其他节点距离的最大值,值由节点vi指向 另一节点所经过的有向边数量来确定。该度量元的值越小,表示节点越靠近网络中心。
Communicability_centrality,表示的是从某节点vi出发,沿着图中的有向边走,最终又指 向节点vi的所有路径长度的总和,即节点vi的闭环路径的长度总和。
卡茨中心值Katz_centrality,用于度量节点的相对影响力,计算方法是:设Aij为节点vi和vj组成的邻接矩阵的特征值,则节点vi的Katz_centrality值xi为:xi=α∑jAijxj+β;其中, 参数α初始值是0.1,β的初始值是1.0。上述计算公式的矩阵表达式为:x=αAx+β,要计 算Katz_centrality,就要做逆矩阵计算,用迭代法来计算:x(t)=αAx(t-1)+β,t表示迭代次 数,最终计算公式可以变为:x=(I-αA)-1,I为单位矩阵,x为网络节点的Katz_centrality 值矩阵。
PageRank,基于输入链接的结构来计算网络G中的节点的排名。其值越大,表明节点越 受欢迎,并且连接越容易。
步骤3.3,设计节点的局部结构特征度量元。局部结构特征度量元主要关注的是软件缺陷 类网络每个节点在其周围局部网络中的结构特征,是本发明对网络局部结构的度量方式,对 网络中任一节点vi主要包括以下几个度量元:
Average_neighbor_degree,是每个节点的所有的邻居节点度的平均值。该值反映了每个节 点直接相邻节点的情况,并可以表现局部网络的特征。节点vi的Average_neighbor_degree值 表示为knn,i,可以根据下面公式计算:
其中,N(i)表示节点vi直接指向的节点的总数,kj是节点vj直接指向节点的度,即节点 vj出度和入度的和。
Clustering,用于度量图中的节点倾向于集聚在一起的程度。节点的Clustering值越大, 表明该节点的影响力越大。节点vi的Clustering值可以计算为:
其中,T(i)表示通过节点vi的三角形的个数,deg(i)是节点vi的度,即出度和入度的和。
Number_of_cliques,是对于每个节点来说,该节点所处的最大社团个数。
Core_numbe,对任一节点vi,计算该节点的k-核的最大值k。其中k-核是指最大子图, 在最大子图中每个节点的度值都大于等于k。
依据上面所设计的针对网络节点的度量元,计算所有软件缺陷网络的每个节点的度量元 的值。这样每个节点就对应一行多列的数据,每列数据就是该节点对应的度量元的值。将所 有节点组合在一起,就构成了多行多列的矩阵形式的缺陷预测数据集。
步骤4中的预处理,是指对缺陷预测数据集采用最大最小化方法进行处理和PCA降维处 理。
最大最小化的目的为了减小因度量元取值范围的差异对机器学习结果产生影响,而将所 有的度量元的取值范围都转化到[0,1]的区间中。
PCA降维处理的目的是因为步骤3所构建的缺陷预测数据集的维度过大,其中的冗余特 征过多。采用PCA降维处理可以让缺陷预测数据集中只保留与缺陷相关性较高的特征,可以 在模型的构建中节省很多时间和空间的资源。
本发明所设计的多层结构特征度量元比较全面,利用本发明所设计的度量元,可以有效 为工程人员快速准确找出软件系统中可能含有缺陷的模块,这对于软件测试、软件维护等方 面的工作都有一定的实际意义。
在步骤5中,本发明实现的动态预测门限滤波算法的预测模型优选方法。通过上面步骤, 由步骤4输出用于训练和测试的缺陷预测数据集。然后执行下面步骤。
设训练数据集表示为L={G1,G2,…,Gm},m代表训练用的软件缺陷网络数量,设测试数据 集表示为Gt。每个软件缺陷网络表示为一个由节点度量元值构成的多行多列矩阵。
步骤5.1,遍历训练集L,若其中的网络Gr中没有缺陷节点bug node,将Gr加入集合L1, 否则加入集合L2。r=1,2,…,m。
步骤5.2,将集合L2中所有网络按照版本从小到大排序,选择最后的K个网络构成验证 版本集合VD,将集合L2中剩余的网络与L1集合进行合并构成新的集合H。K可根据需要来 调整,默认设置为3。
步骤5.3,从集合H的每个网络中挑选出有缺陷的节点,加入训练集合T,并记录T中的 节点个数count。
步骤5.4,挑选出集合H中版本最大的网络,设为G’,遍历G’中的每一个节点,选出无 缺陷的节点加入训练集合T,所挑选的节点满足以下两个条件:(1)该节点必须在集合H的 每个网络Gr中都存在且为无缺陷节点;(2)所挑选的节点数量总共不超过m*count。在挑选 的过程中若无缺陷节点数量已满足q*count则停止遍历。其中q为正整数,可根据需要来调 整,默认设置为4。
步骤5.5,将训练集合T中所有节点数据当做训练集,将验证版本集合VD中每个网络的 所有节点数据构建K个验证集VD1,VD2,…,VDK。应用多种不同的机器学习算法建立故障预测 模型,并以AUC(Area Under Curve)值作为模型评价好坏的指标。
对每个验证集合VDK,所采用的每个机器学习算法都不断地改变阈值threshold,直到该 机器学习算法所建立的模型的AUC值不再变化为止,记录此时在验证集合VDK下每个机器 学习算法对应取得的阈值。
步骤5.6,上一步得到了每个验证集合中每个机器学习算法AUC最大时的阈值。对每一 个机器学习算法,在所有验证集合中选择最小AUC取值对应的阈值threshold’作为测试版本 网络节点集合Gt中该机器学习算法的阈值。
建模成功后,利用测试版本网络节点集合Gt中所有节点的数据作为测试集,将训练集合 T中所有节点数据当做训练集,采用多种不同的机器学习算法进行预测。输出每个机器学习 算法所建立模型的预测结果,即测试版本网络节点集合Gt中有缺陷的节点id,以及每个缺陷 预测模型的评价参数AUC值。
最后从所有建立缺陷预测模型中选取AUC值最大的作为最佳预测模型,此模型预测的结 果作为最终缺陷预测的结果。
本发明针对在实际工程项目中的问题,提出了一种基于动态预测门限滤波算法的预测模 型优选方法。该方法的创新点是利用给定的数据集本身实现了训练数据集的优化,门限值的 优化以及预测模型的优化。(1)训练集的优化。该方法会从输入的训练版本网络集合中,挑选 出所有缺陷的节点加入训练集,并挑选出在所有版本网络中都存在并且一直没有缺陷的节点 加入训练集,并可以动态的调节训练集中缺陷节点和非缺陷节点的比例。(2)门限值的优化。 该方法会从输入的训练版本网络集合中,挑选出m个适合的集合进行缺陷预测的预实验,以 此确定不同机器学习算法的最佳门限值。(3)预测模型的优化。该方法根据优化的训练集、 优化的门限值,采用不同的机器学习算法建立缺陷预测模型,从中选出适合该款软件最佳的 缺陷预测模型。该方法在实际的工程应用中具有很高的价值。

Claims (7)

1.一种基于软件网络特征学习的故障预测方法,首先对待分析的目标嵌入式软件,获取该软件各版本的源代码和缺陷信息;其特征在于,构建各版本的软件缺陷网络,然后进行下面步骤:
(1)设计软件缺陷网络的节点内部特征、局部特征和全局特征的度量元;其中,节点内部特征的度量元包括节点内包含的函数个数Funcount、节点内部函数之间连接的个数Insidelinks、节点的入度Indegree和节点的出度Outdegree;
(2)对每个软件缺陷网络,计算其中每个节点的各度量元值,构成缺陷预测数据集;
(3)由上面步骤获得训练集和测试集,利用动态预测门限滤波算法的预测模型优选方法建立适合目标软件的最佳故障预测模型,然后利用得到的最佳故障预测模型对目标软件进行缺陷预测;
其中,所述的利用动态预测门限滤波算法的预测模型优选方法实现包括:
步骤3.1,设获得训练集L={G1,G2,…,Gm},m代表训练集中的软件缺陷网络数量,获得测试集Gt;建立初始为空集的集合L1和L2;遍历训练集L,若其中的网络Gr中没有缺陷节点,将Gr加入集合L1,否则加入集合L2;r=1,2,…,m;
步骤3.2,将集合L2中所有网络按照版本从小到大排序,选择最后的K个网络构成验证版本集合VD,然后将集合L2中剩余的网络与集合L1进行合并构成新的集合H;K为正整数;
步骤3.3,从集合H的每个网络中挑选出有缺陷的节点,加入训练集合T,并记录T中的节点个数count;
步骤3.4,挑选出集合H中版本最大的网络,设为G’,遍历G’中的每一个节点,选出无缺陷的节点加入训练集合T,挑选的节点满足以下两个条件:(1)该节点必须在集合H的每个网络中都存在且为无缺陷节点;(2)所挑选的节点数量总共不超过q*count;其中q为正整数;
步骤3.5,利用训练集T和验证版本集合VD中每个网络构建的验证集,应用不同的机器学习算法建立故障预测模型,并用AUC值作为模型评价指标;对每个验证集,不断改变各机器学习算法的阈值,直到对应所建立的故障预测模型的AUC值不再变化为止,此时记录在各验证集下每个机器学习算法取得的阈值;
步骤3.6,对每一个机器学习算法,在所有K个验证集中选择最小AUC取值对应的阈值作为测试集Gt中该机器学习算法的阈值;
最后从所有的故障预测模型中选取AUC值最大的作为最佳预测模型,该模型预测的结果作为最终缺陷预测的结果。
2.根据权利要求1所述的基于软件网络特征学习的故障预测方法,其特征在于,所述的软件缺陷类网络,其中的每个节点代表软件程序中的一个类,节点之间的有向边代表类之间的调用和被调用关系;所述的软件缺陷类网络的构建方法是:先利用静态代码扫描技术抽取软件程序中不同的类以及它们之间的相互作用关系,构建不同版本的软件类网络,然后将对应版本的缺陷信息植入网络,构建软件缺陷类网络。
3.根据权利要求1或2所述的基于软件网络特征学习的故障预测方法,其特征在于,所述的软件缺陷网络表示为一个有向图,设vi为网络中任一节点;所述的节点全局特征的度量元包括:
度中心性Degree_centrality,度量节点vi与网络中其他节点的直接联系程度;
出度中心性Out_degree_centrality,度量节点vi直接指向网络中其它节点的比例;
入度中心性In_degree_centrality,度量节点vi直接被网络中其它节点指向的比例;
紧密程度Closeness_centrality,度量节点vi和网络中其他节点之间的紧密程度;
网络中经过节点vi的最短路径数量占最短路径总数的比例Betweenness_centrality;
节点vi到网络中其他节点的最大距离Eccentricity;
度量从节点vi出发最终又指向节点vi的所有路径长度的总和Communicability_centrality;
度量节点vi影响力的两个度量元:katz_centrality,PageRank。
4.根据权利要求1或2所述的基于软件网络特征学习的故障预测方法,其特征在于,所述的节点局部特征的度量元包括:
节点的所有的邻居节点度的平均值Average_neighbor_degree;
节点倾向于集聚在一起的程度Clustering;
节点的最大社团个数Number_of_cliques;
节点的k-核心的最大k值Core_numbe。
5.根据权利要求1或2所述的基于软件网络特征学习的故障预测方法,其特征在于,所述的缺陷预测数据集先进行预处理再执行过程(3),预处理包括:利用最大最小化方法将节点的各度量元的值转化到[0,1]区间;利用主成分分析法对缺陷预测数据集进行降维,去除冗余特征。
6.根据权利要求1所述的基于软件网络特征学习的故障预测方法,其特征在于,所述的步骤5.2中,设置K为3。
7.根据权利要求1所述的基于软件网络特征学习的故障预测方法,其特征在于,所述的步骤5.4中,设置q为4。
CN201810455576.5A 2018-05-14 2018-05-14 一种基于软件网络特征学习的故障预测方法 Active CN108664402B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810455576.5A CN108664402B (zh) 2018-05-14 2018-05-14 一种基于软件网络特征学习的故障预测方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810455576.5A CN108664402B (zh) 2018-05-14 2018-05-14 一种基于软件网络特征学习的故障预测方法

Publications (2)

Publication Number Publication Date
CN108664402A true CN108664402A (zh) 2018-10-16
CN108664402B CN108664402B (zh) 2020-05-26

Family

ID=63779323

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810455576.5A Active CN108664402B (zh) 2018-05-14 2018-05-14 一种基于软件网络特征学习的故障预测方法

Country Status (1)

Country Link
CN (1) CN108664402B (zh)

Cited By (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109240276A (zh) * 2018-11-09 2019-01-18 江南大学 基于故障敏感主元选择的多块pca故障监测方法
CN110147322A (zh) * 2019-04-19 2019-08-20 北京航空航天大学 一种基于软件网络的缺陷数据集构建与处理方法
CN110147321A (zh) * 2019-04-19 2019-08-20 北京航空航天大学 一种基于软件网络的缺陷高风险模块的识别方法
CN110275697A (zh) * 2019-06-28 2019-09-24 普元信息技术股份有限公司 分布式环境下基于拓扑结构的业务中台流程差异对比分析系统及方法
CN110297656A (zh) * 2019-05-23 2019-10-01 重庆金融资产交易所有限责任公司 基于配置模型评审代码的方法、装置及计算机设备
CN110674009A (zh) * 2019-09-10 2020-01-10 平安普惠企业管理有限公司 应用服务器性能监测方法、装置、存储介质及电子设备
US20200019654A1 (en) * 2018-07-12 2020-01-16 International Business Machines Corporation Verification algorithm engine selection
CN110705133A (zh) * 2019-11-06 2020-01-17 中国联合网络通信集团有限公司 一种预测性维护的方法及预测性维护设备
CN111290900A (zh) * 2020-01-16 2020-06-16 中山大学 一种基于微服务日志的软件故障检测方法
CN111782512A (zh) * 2020-06-23 2020-10-16 北京高质系统科技有限公司 基于不平衡噪声集的多特征软件缺陷综合预测方法
CN112115045A (zh) * 2020-08-19 2020-12-22 北京航空航天大学 一种复杂软件系统失效预测方法
CN112579463A (zh) * 2020-12-25 2021-03-30 北京信息科技大学 面向Solidity智能合约的缺陷预测方法
CN115964214A (zh) * 2022-12-30 2023-04-14 广州市华势信息科技有限公司 一种多终端零代码智能软件开发平台

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0513652A2 (en) * 1991-05-10 1992-11-19 Siemens Aktiengesellschaft Method for modelling similarity function using neural network
CN105808435A (zh) * 2016-03-08 2016-07-27 北京理工大学 一种基于复杂网络的软件缺陷评估模型的构建方法
CN107979602A (zh) * 2017-12-01 2018-05-01 西安交通大学 一种蜂窝网络中基于半监督统计的异常检测方法

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0513652A2 (en) * 1991-05-10 1992-11-19 Siemens Aktiengesellschaft Method for modelling similarity function using neural network
CN105808435A (zh) * 2016-03-08 2016-07-27 北京理工大学 一种基于复杂网络的软件缺陷评估模型的构建方法
CN107979602A (zh) * 2017-12-01 2018-05-01 西安交通大学 一种蜂窝网络中基于半监督统计的异常检测方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
于巧: "基于机器学习的软件缺陷预测方法研究", 《博士学位论文》 *

Cited By (20)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20200019654A1 (en) * 2018-07-12 2020-01-16 International Business Machines Corporation Verification algorithm engine selection
US10769331B2 (en) * 2018-07-12 2020-09-08 International Business Machines Corporation Verification algorithm engine selection
CN109240276A (zh) * 2018-11-09 2019-01-18 江南大学 基于故障敏感主元选择的多块pca故障监测方法
CN110147322A (zh) * 2019-04-19 2019-08-20 北京航空航天大学 一种基于软件网络的缺陷数据集构建与处理方法
CN110147321A (zh) * 2019-04-19 2019-08-20 北京航空航天大学 一种基于软件网络的缺陷高风险模块的识别方法
CN110297656A (zh) * 2019-05-23 2019-10-01 重庆金融资产交易所有限责任公司 基于配置模型评审代码的方法、装置及计算机设备
CN110297656B (zh) * 2019-05-23 2024-01-26 天航长鹰(江苏)科技有限公司 基于配置模型评审代码的方法、装置及计算机设备
CN110275697A (zh) * 2019-06-28 2019-09-24 普元信息技术股份有限公司 分布式环境下基于拓扑结构的业务中台流程差异对比分析系统及方法
CN110275697B (zh) * 2019-06-28 2022-11-22 普元信息技术股份有限公司 分布式环境下基于拓扑结构的业务中台流程差异对比分析系统及方法
CN110674009A (zh) * 2019-09-10 2020-01-10 平安普惠企业管理有限公司 应用服务器性能监测方法、装置、存储介质及电子设备
CN110705133B (zh) * 2019-11-06 2022-09-23 中国联合网络通信集团有限公司 一种预测性维护的方法及预测性维护设备
CN110705133A (zh) * 2019-11-06 2020-01-17 中国联合网络通信集团有限公司 一种预测性维护的方法及预测性维护设备
CN111290900A (zh) * 2020-01-16 2020-06-16 中山大学 一种基于微服务日志的软件故障检测方法
CN111290900B (zh) * 2020-01-16 2023-06-20 中山大学 一种基于微服务日志的软件故障检测方法
CN111782512B (zh) * 2020-06-23 2021-07-09 北京高质系统科技有限公司 基于不平衡噪声集的多特征软件缺陷综合预测方法
CN111782512A (zh) * 2020-06-23 2020-10-16 北京高质系统科技有限公司 基于不平衡噪声集的多特征软件缺陷综合预测方法
CN112115045A (zh) * 2020-08-19 2020-12-22 北京航空航天大学 一种复杂软件系统失效预测方法
CN112115045B (zh) * 2020-08-19 2022-03-18 北京航空航天大学 一种复杂软件系统失效预测方法
CN112579463A (zh) * 2020-12-25 2021-03-30 北京信息科技大学 面向Solidity智能合约的缺陷预测方法
CN115964214A (zh) * 2022-12-30 2023-04-14 广州市华势信息科技有限公司 一种多终端零代码智能软件开发平台

Also Published As

Publication number Publication date
CN108664402B (zh) 2020-05-26

Similar Documents

Publication Publication Date Title
CN108664402A (zh) 一种基于软件网络特征学习的故障预测方法
Hammouri et al. Software bug prediction using machine learning approach
Wang et al. Cloudranger: Root cause identification for cloud native systems
CN107832219B (zh) 基于静态分析和神经网络的软件故障预测技术的构建方法
Mahmoud et al. Hardnn: Feature map vulnerability evaluation in cnns
CN108345544A (zh) 一种基于复杂网络的软件缺陷分布影响因素分析方法
Yang et al. Defect prediction based on the characteristics of multilayer structure of software network
CN111143428A (zh) 一种基于关联分析法的保护异常告警处理方法
Avritzer et al. A multivariate characterization and detection of software performance antipatterns
CN110147322A (zh) 一种基于软件网络的缺陷数据集构建与处理方法
Delgado-Pérez et al. GiGAn: Evolutionary mutation testing for C++ object-oriented systems
Abdurazik et al. Coupling-based class integration and test order
Kishore et al. Evaluation of deep neural networks for advanced intrusion detection systems
Wong et al. Reverse engineering utility functions using genetic programming to detect anomalous behavior in software
Erman et al. Navigating information overload caused by automated testing-A clustering approach in multi-branch development
Khoshgoftaar et al. Predicting fault-prone modules in embedded systems using analogy-based classification models
Wu et al. DeepCov: Coverage Guided Deep Learning Framework Fuzzing
Zhang et al. Does socio-technical congruence have an effect on continuous integration build failures? An empirical study on 10 GitHub projects
Adamou et al. A bio-inspired deployment method for data collection networks in wide white areas
Li et al. Multi-granularity dynamic analysis of complex software networks
Rajkumari et al. Automatic test data generation using genetic algorithm and program dependence graph
ZA200601937B (en) System and methods for automated computer support
CN113392921B (zh) 一种数据驱动的风控策略规则生成方法及系统
CN117544423B (zh) 一种基于数据特征的api应用程序接口链路测绘方法
Escobar et al. Damage detection in a unidimensional truss using the firefly optimization algorithm and finite elements

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