CN108345544B - 一种基于复杂网络的软件缺陷分布影响因素分析方法 - Google Patents
一种基于复杂网络的软件缺陷分布影响因素分析方法 Download PDFInfo
- Publication number
- CN108345544B CN108345544B CN201810255695.6A CN201810255695A CN108345544B CN 108345544 B CN108345544 B CN 108345544B CN 201810255695 A CN201810255695 A CN 201810255695A CN 108345544 B CN108345544 B CN 108345544B
- Authority
- CN
- China
- Prior art keywords
- software
- network
- node
- feature
- function
- 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/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software 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
本发明提出一种基于复杂网络的软件缺陷分布影响因素分析方法,属于软件缺陷分析领域,包括:步骤1根据软件的修改模块,分析软件修改度量参数与缺陷分布的相关性;步骤2基于软件函数调用网络,分析软件网络结构度量参数与缺陷分布的相关性;步骤3基于机器学习算法,获得影响软件缺陷分布的最优特征子集;通过以上三大步骤可以获得用来分析软件缺陷分布情况的最优特征子集和相应的机器学习算法,一方面为软件缺陷预测的研究提供的数据基础和方法支持,也可作为软件可靠性相关工作的参考,另一方面也可以对软件测试领域提供指导作用。
Description
技术领域
本发明应用于软件缺陷分析领域,是一种基于复杂网络理论和方法,分析影响软件缺陷分布的因素的方法。
背景技术
随着计算机技术快速的发展,软件的应用已经遍布在社会生活的方方面面,随之也带来了软件规模和复杂度的持续显著增长,根据数据显示,在过去的40年的时间里,软件的大小呈现出指数增长形式。然而,在软件的开发过程中,资源分配、开发工程师的开发经验以及项目进度安排等现实的客观原因的存在,软件缺陷的出现是一个不可避免的问题,进而会导致一些软件失效和软件故障的发生,带来了巨大的经济损失甚至是安全问题。因此如何保障软件的可靠性,提高软件的质量引起了软件行业的广泛关注,2000年美国国家科学基金支持并成立的软件工程中心根据全世界专家研讨结果,总结出软件缺陷对软件项目成败所带来的影响以及缺陷分布和缺陷检测的相关问题,并且越来越多的研究人员投入到了软件缺陷分布和软件缺陷预测方面的研究。然而这些研究仍然存在一些方面的不足。首先,当前关于缺陷方面的研究大部分停留在文件和类模块,虽然能够为软件工程师们提供缺陷潜在的位置信息,然而无法提供粒度更小、更加精确的位置信息。其次现有的研究更多的分析了软件代码级别的度量和软件结构方面的度量,而忽略了软件的开发过程是一个动态的过程,忽略了软件版本迭代过程中的修改情况对于软件缺陷分布的影响。
近年来,研究人员将软件的模块,如包、文件、类以及函数等,抽象为网络节点,将模块之间的关系,如继承、调用等,抽象为网络的边,构建软件网络,来更全面、更科学的探索软件系统。利用软件的网络特征作为度量信息,可以从全局和局部的多角度分析软件的结构特性,为分析软件系统提供了有力的工具。
发明内容
本发明针对于软件缺陷的存在严重影响软件的质量,并导致软件测试资源浪费的现状,提出了一种基于复杂网络的软件缺陷分布影响因素分析方法。通过引入复杂网络的理论和方法,分别针对软件的修改属性和结构属性对软件缺陷分布的影响程度进行分析,并基于机器学习算法,获取影响软件缺陷分布的最优特征子集。
本发明提出的一种基于复杂网络的软件缺陷分布影响因素分析方法,首先对待分析软件的每个版本建立软件函数调用网络,然后基于软件函数调用网络,执行以下步骤:
步骤1:根据软件的修改情况,分析软件修改度量参数与缺陷分布的相关性;
为软件中的函数设置软件修改度量参数,并添加到网络节点的属性中,通过对比前后两个版本的软件函数调用网络,设置各节点的软件修改度量参数的状态值;然后采用逻辑回归模型对软件修改度量参数与缺陷分布之间的相关性进行分析,获得与缺陷分布相关的软件修改度量参数。
步骤2:基于软件函数调用网络,分析软件网络结构度量参数与缺陷分布的相关性;
基于软件函数调用网络,计算节点的整网度量参数;构建每个节点的自我网络,获得衡量每个节点的局部结构特性的自我网络度量参数。提取函数节点的缺陷信息,采用逻辑回归模型分析每个网络结构度量参数与软件缺陷分布的相关性,获得了和软件缺陷分布相关的软件网络结构度量参数。
步骤3:基于机器学习算法,获得影响软件缺陷分布的最优特征子集;
对步骤1和2获得的与缺陷分布相关的修改度量参数和结构度量参数,本发明采用一种结合聚类和排序的特征选择方法,获取影响软件缺陷分布的最优特征子集。
所述的结合聚类和排序的特征选择方法通过特征聚类,将初始特征集划分为高内聚低耦合的若干特征簇,然后对特征簇中的特征进行排序获得有序的特征集合,最后基于四种机器学习算法,对有序的特征集合进行子集搜索获得最优子集。
本发明与现有技术相比,具有以下明显优势:
(1)本发明提出的软件缺陷分布影响因素分析方法,不仅将软件修改度量参数引入到对软件缺陷分布的影响因素的研究中,并有别于其他传统的方法,针对于函数级别对软件的修改属性与软件缺陷之间的相关性进行了分析,发现了过程性度量即软件版本迭代过程中的变化情况是影响软件缺陷分布的重要因素,扩展了软件缺陷度量参数;
(2)本发明方法通过引入复杂网络和节点自我网络的构建,分别从整体和局部的角度把握了软件的结构特性,研究了软件结构特性对缺陷分布的影响,获得了影响软件缺陷分布的软件网络结构度量参数;
(3)本发明方法针对于软件的个性化和机器学习算法模型对于数据敏感程度的差异性,对影响软件缺陷分布的特征进行选择,获得了最优参数集合;
(4)本发明方法能够实现自动化的分析工作,一方面能够为软件缺陷分布的分析研究提供数据支持和方法支持,另一方面也可以对软件测试领域提供指导作用。
附图说明
图1是本发明基于复杂网络的软件缺陷分布影响因素分析方法的整体步骤示意图;
图2是本发明自我网络构建示意图;
图3是本发明的基于机器学习的特征选择方法的流程示意图。
具体实施方式
为了便于本领域普通技术人员理解和实施本发明,下面结合附图对本发明作进一步的详细描述。
本发明针对于软件开发过程中,软件缺陷的存在严重影响软件质量这一现状,且由于软件网络结构服从复杂网络特性。通过复杂网络的理论和方法,提出了一种基于复杂网络的软件缺陷分布影响因素分析方法。综合考虑软件修改属性以及软件结构特性和软件缺陷分布之间的相关性,分别对软件修改度量参数和软件网络结构度量参数与缺陷分布之间的相关性进行分析,并基于机器学习算法,对影响软件缺陷分布的特征进行选择,从而获得用来分析软件缺陷分布倾向性的最优特征集合。
本发明基于复杂网络的软件缺陷分布影响因素分析方法,如图1所示,主要包括三个步骤:软件修改度量参数与缺陷分布的相关性分析,软件网络结构度量参数与缺陷分布的相关性分析,以及基于机器学习的软件缺陷分布影响因素选择,下面详细介绍每一步骤。
首先,在对待分析软件的每个版本,将软件中的函数作为网络中的节点,将函数之间的依赖关系抽象为边,建立软件函数调用网络。然后进行下面步骤分析。
步骤1:软件修改度量参数与缺陷分布的相关性分析,由于软件开发是一个动态的过程,软件版本迭代过程中软件的修改情况直接影响软件的质量高低。基于软件的代码变更情况和软件的状态变更情况,综合修改模块的历史修改信息,分析软件不同类型的修改特性包括软件函数代码的变更和软件状态变更,和软件缺陷分布之间的相关性,获取了和软件缺陷分布相关的修改度量参数。
在对软件修改度量参数与缺陷分布的相关性分析中,考虑到软件函数代码变更和软件状态变更,对软件修改度量信息的挖掘以及修改度量参数的定义如下,各参数作为函数节点的属性:
(1)新函数的定义,定义为“AD”。通过将每个版本的软件函数调用网络与前一个版本的网络进行对比,如果某节点只存在于当前版本而不存在于其前一版本,则代表该节点所对应的函数是当前版本新定义的函数。此时,标记该函数节点的“AD”属性状态值为1,否则标记为0,代表该节点对应的函数不是新定义的函数。
(2)函数内容的修改,定义为“MC”。提取软件函数调用网络每个节点所代表函数内容对应的“MD5”值,通过与前一版本该节点的“MD5”值进行对比,如果“MD5”值不同,则该节点所对应的函数内容在当前版本被修改。此时标记函数调用网络中该节点的“MC”状态值为1,否则为0,表示该节点对应函数的内容没有被修改。
(3)调用该函数的函数集合变更,定义为“Deg-In”。将每个版本的软件函数调用网络与前一版本的网络进行对比,如果指向某个节点的边的集合发生了变化,则表示该节点所对应的函数被新的函数调用或者不再被某些函数调用,反映了一种软件代码结构的变化。此时标记函数调用网络中该节点的“Deg-In”状态值为1,否则为0,代表调用该函数的函数集合没有发生变更。
(4)该函数调用的函数集合变更,定义为“Deg-Out”。类似于软件“Deg-In”信息的挖掘方法,将每个版本的软件函数调用网络与前一版本的网络进行对比,若当前版本中某个节点指向其它节点的边的集合不同于其前一个版本的网络,则标志着该节点所代表的函数调用了新的函数或者不再调用某些函数,也标志着一种软件代码结构的变化。此时标记函数调用网络中该节点的“Deg-Out”状态值为1,否则为0,代表该函数调用的函数集合没有发生变更。
(5)函数的调用关系变更,定义为“Deg-Ch”。如果一个函数的调用关系发生了变更,则意味了调用该函数的函数集合发生了变更或者该函数调用的函数集合发生了变更。所以,对于每个版本的函数调用网络,如果某一节点的“Deg-In”或者“Deg-Out”被标记为1,则表示该节点所对应的函数的调用关系发生了变化,同样标志着一种软件代码结构的变更。此时标记函数调用网络中该节点的“Deg-Ch”状态值为1,否则为0,代表该函数的调用关系没有发生变更。
(6)函数寿命:定义为Time,是某节点所对应的函数从其被定义的版本到其被删除的版本之间所经历的版本总数。
(7)函数历史修改次数:定义为DiffCount,是某节点所对应的函数在历史中各种代码修改次数的累积加和。
(8)历史缺陷状态,定义为HisBug,是某节点所对应的函数在历史版本中是否出现过缺陷。
上述软件修改度量参数中,AD、MC、Deg-In、Deg-Out、Deg-Ch为软件代码修改度量参数,Time,Diffcount,HisBug为软件状态变更度量参数。
基于软件获取的软件修改信息,采用逻辑回归算法,对软件修改度量参数与缺陷分布之间的相关性进行分析,逻辑回归模型如公式所示:
其中,xi(i=1,2,..,n)为自变量,此处即软件的修改度量参数,θj(j=0,1,2,..,n)是通过对模型进行似然最大化得到的回归系数,Y取值+1或-1,分别代表存在缺陷或没有缺陷,Pr(Y=1|x1,x2,…,xn)代表函数存在缺陷的概率,当概率大于某一阈值时,即认为该函数存在缺陷。分别对软件缺陷和代码变更类型进行单变量逻辑回归分析。
并采用逻辑回归中的比值比Odds ratio和似然比检验时的p值来评价每个软件修改度量参数与缺陷分布是否相关。其中如果Odds ratio为1表示软件修改度量参数与缺陷分布不相关,如果Odds ratio大于1,则两者之间是正相关,否则为负相关。对于p值,如果其小于显著性水平,则证明两个变量是具有相关性的,否则不具有相关性。
通过步骤1分析每个软件修改度量参数与软件缺陷分布的相关性,获得了和软件缺陷分布相关的软件修改度量参数。
步骤2:软件网络结构度量参数与缺陷分布之间的相关性分析。软件网络作为软件系统的网络化抽象符合复杂网络特性,可以完整地表征软件系统的整体结构信息,是研究复杂软件系统的有力工具。因此利用复杂网络的结构度量参数表征软件的结构特性,用来分析结构特征对软件缺陷分布的影响。由于软件函数的结构特性不仅体现在其在整个软件系统中的位置,也与和它紧密相连的函数相关。因此,不仅考虑软件网络的整网度量参数,还通过建立每个节点的自我网络,分析了软件的自我网络度量参数。
考虑到软件函数的整体结构特性和局部结构特性,选取了用来表征结构复杂度、节点中心性程度和重要程度相关的12个整网结构度量参数来衡量软件的结构特性,如表1所示
表1:软件整网度量参数
针对于软件网络中的每一个节点,以该节点为中心节点,提取这个节点的邻居节点以及中心节点和邻居节点以及邻居节点和邻居节点之间的边构建每个函数节点的自我网络,如图2所示。如图2所示,节点a~g为中心节点EGO的邻居节点,这些节点和边构建成中心节点EGO的自我网络。
基于每个节点的自我网络,获取了每个节点的全部12个自我网络结构度量参数用来表征节点的局部结构特性,表2是对12个自我网络的结构度量参数的说明。
表2:软件自我网络结构度量参数
同样,与步骤一类似,利用公式(1)的逻辑回归模型,自变量为软件的网络结构度量参数。分别对各网络结构度量参数进行单变量逻辑回归分析。
采用逻辑回归对软件网络结构度量参数与缺陷分布之间的相关性进行分析,并采用逻辑回归中的比值比Odds ratio和似然比检验时的p值来评价每个软件网络结构度量参数与缺陷分布是否相关。其中如果Odds ratio为1表示软件网络结构度量参数与缺陷分布不相关,如果Odds ratio大于1,则两者之间是正相关,否则为负相关。对于p值,如果其小于显著性水平,则证明两个变量是具有相关性的。
通过步骤2分析每个网络结构度量参数与软件缺陷分布的相关性,获得了和软件缺陷分布相关的软件网络结构度量参数。
步骤3:基于机器学习的软件缺陷分布影响因素选择,基于前面对软件修改度量参数与缺陷分布的相关性分析以及软件网络结构度量参数与缺陷分布的相关性分析,针对于软件缺陷分布的影响因素之间存在的高维度问题,基于机器学习算法对特征进行选择。
本发明提出一种结合聚类和排序的特征选择方法,通过对特征进行聚类,并同时考虑特征之间的相关性以及特征和类标之间的相关性进行排序,来高效的减少传统过滤方法存在的特征之间的关联冗余影响,基于排序顺序构建特征序列进行特征搜索,应用机器学习算法进行分类性能评估以获取较高的分析预测精度又同时避免特征子集爆炸带来的性能影响。从而获得影响软件缺陷分布的最优特征子集。
如图3所示,基于机器学习的特征选择主要包括特征聚类,特征排序,以及特征选择三个部分组成。首先基于特征之间的相关性,将初始特征集进行聚类,将初始特征集划分为高内聚低耦合的若干特征簇;然后综合特征簇中特征与类标之间的相关性以及特征之间的相关性结果,对聚类簇中的特征进行排序,获得有序的特征集合;最后基于四种机器学习算法,根据优先簇间和簇内排序顺序的有序序列进行子集搜索,进行特征选择,获得最优子集。下面将对特征聚类、特征排序以及特征选择进行详细介绍。
步骤3.1,特征聚类。
特征聚类是根据特征之间的相关性将其分成不同的特征簇的过程,聚类的目的是,簇内的特征之间具有比较高的相关性,簇间的特征之间相关性较小,以此来发现特种功能之间的冗余信息。
对于特征间的相关性分析,采用最大信息系数来衡量两个参数特征之间的关系。最大信息系数是一种基于互信息的相关性度量方法,能够探索软件缺陷影响因素间存在的潜在关联。根据特征间相关性分析的结果选取谱聚类方法对特征进行聚类,谱聚类是一种基于图论的聚类方法,具体将每个特征都作为图中的一个节点,将特征间的相关性作为节点边的权重,因此所构成的是一个完全图。相关性比较强的两个点之间边的相关性较大,相关性比较弱的两个点之间边的相关性较小。尝试将整个图划分为若干个子图,使得每个子图的内部权重最大,子图间的边的权重最小,以获得聚类的结果。
将影响软件缺陷的两个特征间的最大信息系数作为两个节点间的权重,将最大信息系数矩阵作为谱聚类中的相关性矩阵W,其中矩阵中的各个元素为第i个特征与第j个特征的最大信息系数Wij,显然,相关性矩阵是一个对称矩阵,其对角线上的元素均为1。对每个特征节点,该特征节点的度Di定义为和它相连的所有边的权重之和:
Di=∑Wij (2)
于是各特征节点的度Di组成一个对角矩阵,称为度矩阵D。根据相关性矩阵W和度矩阵D,可以得到拉普拉斯矩阵L和特征矩阵。使用K-Means方法来对特征矩阵进行聚类,每个特征向量是特征矩阵的列,而每行当成一个聚类样本。选择组内平方和作为衡量聚类效果好坏的标准,效果好的聚类,聚类子集组内平方和应该更小,因此选取组内平方和最小时作为聚类的结果。
步骤3.2,特征排序。
通过特征聚类,将关联性很高的特征分到了同一个簇中,而不同的簇的特征之间的关联性很小,因此需要从不同的簇中筛选特征以降低最终所选特征子集的冗余。而对于不同簇中的特征,希望选取和类标关联性大并且所选取的特征之间关联性越小越好,所以,综合考虑特征之间的相关性以及特征和类标之间的相关性将不同簇中的特征进行排序。
对于每个特征簇,将每个簇中与缺陷相关性最大的特征作为该子集的中心特征并排名在该簇特征中优先级第一,其余特征的排名根据优先性系数α确定,其中优先性系数α计算如公式:
α=relevance/correlation (3)
relevance为特征与缺陷的相关性,correlation为特征与中心特征的关联性。α越大,特征在簇中的优先性名次越高,根据α的大小,对簇内特征排序。
步骤3.3,特征选择。
根据获得的具有优先性排名的有序特征子集,采用优先簇间的前向选择(SFS,Sequential Forward Selection)每次选择一个特征x加入特征子集X来生成搜索特征子集,对每一个搜索特征子集,基于机器学习算法进行分类性能评估,当分类的性能最好时,停止搜索,此时对应的搜索子集即为最优特征子集。
其中对于分类性能的评估,于机器学习算法和每一个搜索特征子集,对软件缺陷分布的倾向性进行预测分析,选取AUC(ROC曲线线下面积)作为分类性能评估指标,AUC越大,分类性能越好。
通过以上三大步骤得到的基于复杂网络的软件缺陷分布影响因素分析方法适用于软件缺陷分布的分析中。通过使用该方法对软件的缺陷分布影响因素进行分析,可以获的用来分析软件缺陷分布情况的最优特征子集和相应的机器学习算法,为软件缺陷预测的研究提供的数据基础和方法支持。
下面通过实例验证来说明本发明基于复杂网络的软件缺陷分布影响因素分析方法的有效性。通过对实验软件的缺陷分布影响因素进行分析,获得了用于分析软件缺陷分布倾向性的最优特征子集和响应的分析算法,并根据分类性能可以判断,可判断该方法的准确性和可行性,具体的实例验证步骤如下:
A.数据的准备。
1)开源软件实验对象的选取。从Github开源软件网站中选取了代码搜索工具the_silver_searcher,网络监视工具Nagioscore,文本编辑器Gedit,数据库软件Redis以及代理服务器Nginx作为主要实验软件进行实例验证,选取的开源软件基本信息如表3所示。
表3:实验软件基本信息表
软件名称 | 软件语言 | 版本数量 | Commit(缺陷)数量 |
the_silver_searcher | C | 46 | 612 |
Nagioscore | C | 98 | 2665 |
Gedit | C | 355 | 15690 |
Redis | C | 190 | 6137 |
Nginx | C | 477 | 6040 |
B.软件修改度量参数和软件网络结构度量参数与缺陷分布的相关性分析。
基于五个实验软件,分别构建了其软件函数调用网络,并挖掘了其修改度量信息和网络结构度量信息,通过对其与软件缺陷分布的相关性分析,获得了包括4个软件代码变更度量和3个软件状态变更度量的7个对软件缺陷分布倾向性有影响的修改度量参数和包括9个软件整网度量和8个自我网络度量的17个和软件缺陷分布相关的软件网络结构度量参数。具体的参数如表4所示:;
表4:影响软件缺陷分布的度量参数
C.基于机器学习的特征选择
以Nagioscore软件为例进行特征选择的过程和结果展示,首先基于Nagioscore软件前期,中期和后期选取了四个版本v1.1,v3.0,v3.4.2和v4.2,分别对四个版本软件的修改度量信息和网络结构度量信息进行了挖掘,获取了对其缺陷分布有影响的24个软件度量参数,四个版本软件的具体信息如表5所示:
表5:Nagioscore软件四个版本的信息
版本 | 函数总数 | 缺陷总数 |
V1.1 | 890 | 38 |
V3.0 | 955 | 22 |
V3.4 | 6447 | 11 |
V4.2 | 1381 | 40 |
基于获取的度量参数特征,进行特征选择,分别针对于四个版本获得了分析其缺陷分布倾向性的最优特征子集和相应的机器学习算法,其结果如表6所示:
表6:最优特征子集和机器学习算法
其中,LR为Logistic回归算法,SVM为支持向量机,DT为决策树。
D.实验结果评价
根据表6所示,四个版本的分类性能指标AUC(Area under curve)均大于0.9,即都有较高的分类性能,因此本发明分析得到的影响缺陷分布的因素在分析软件缺陷分布倾向性中具有较高的准确性,通过该实例验证说明基于复杂网络的软件缺陷分布影响因素分析方法是可行的。利用本发明方法得到的缺陷分布影响因素可以为软件缺陷分布的分析和软件缺陷预测提供数据支持,该软件缺陷分布影响因素分析方法也可作为软件可靠性相关工作的参考。
Claims (6)
1.一种基于复杂网络的软件缺陷分布影响因素分析方法,对待分析软件的每个版本建立软件函数调用网络,其特征在于,基于软件函数调用网络进行下面步骤:
步骤1:根据软件的修改模块,分析软件修改度量参数与缺陷分布的相关性;
为软件中的函数设置软件修改度量参数,并添加到网络节点的属性中,通过对比前后两个版本的软件函数调用网络,设置各节点的软件修改度量参数的状态值;然后采用逻辑回归模型对软件修改度量参数与缺陷分布之间的相关性进行分析,获得与缺陷分布相关的软件修改度量参数;
步骤2:基于软件函数调用网络,分析软件网络结构度量参数与缺陷分布的相关性;
基于软件函数调用网络,计算节点的整网结构度量参数;构建每个节点的自我网络,获得衡量每个节点的局部结构特性的自我网络结构度量参数;提取函数节点的缺陷信息,采用逻辑回归模型分析每个网络结构度量参数与软件缺陷分布的相关性,获得与缺陷分布相关的结构度量参数;
步骤3:基于机器学习算法,获得影响软件缺陷分布的最优特征子集;
将步骤1和2获得的与缺陷分布相关的修改度量参数和结构度量参数结合作为初始特征集,采用结合聚类和排序的特征选择方法,获取影响软件缺陷分布的最优特征子集;
所述的结合聚类和排序的特征选择方法通过特征聚类,将初始特征集划分为高内聚低耦合的若干特征簇,然后对特征簇中的特征进行排序获得有序的特征集合,最后基于四种机器学习算法,对有序的特征集合进行子集搜索获得最优子集。
2.根据权利要求1所述的方法,其特征在于,步骤1中所述的软件修改度量参数包括:
(1)新函数的定义AD,将每个版本的软件函数调用网络与前一个版本的网络进行对比,如果某节点只存在于当前版本而不存在于其前一版本,则代表该节点所对应的函数是当前版本新定义的函数,设置AD的状态值为1,否则标记为0;
(2)函数内容的修改MC,提取当前版本的软件函数调用网络某节点所代表函数内容对应的MD5值,通过与前一版本该节点的MD5值进行对比,如果MD5值不同,则该节点所对应的函数内容在当前版本被修改,此时标记当前版本的软件函数调用网络中该节点的MC的状态值为1,否则为0;
(3)调用函数的函数集合变更Deg-In,将每个版本的软件函数调用网络与前一版本的网络进行对比,如果指向某个节点的边的集合发生了变化,则表示该节点所对应的函数被新的函数调用或者不再被某些函数调用,此时标记当前版本的软件函数调用网络中该节点的Deg-In的状态值为1,否则为0;
(4)函数调用的函数集合变更Deg-Out,将每个版本的软件函数调用网络与前一版本的网络进行对比,若当前版本中某个节点指向其它节点的边的集合不同于其前一个版本的网络,则标志着该节点所代表的函数调用了新的函数或者不再调用某些函数,此时标记当前版本中该节点的Deg-Out的状态值为1,否则为0;
(5)函数的调用关系变更Deg-Ch,对于每个版本的软件函数调用网络,如果某节点的属性Deg-In或者Deg-Out被标记为1,则表示该节点所对应的函数的调用关系发生了变化,此时标记当前版本的软件函数调用网络中该节点的Deg-Ch的状态值为1,否则为0;
(6)函数寿命Time,代表某节点所对应的函数从其定义的版本到其被删除的版本之间所经历的版本总数;
(7)函数历史修改次数DiffCount,表示某节点所对应的函数在历史中各种代码修改次数的累积加和;
(8)历史缺陷状态HisBug,表示某节点所对应的函数在历史版本中是否出现过缺陷。
4.根据权利要求1所述的方法,其特征在于,所述的步骤2中,构建每个节点的自我网络,具体是:对网络中的每一个节点,以该节点为中心节点,提取该节点的邻居节点以及中心节点和邻居节点以及邻居节点和邻居节点之间的边,构建该节点的自我网络。
5.根据权利要求1或4所述的方法,其特征在于,所述的步骤2中,获得的自我网络度量参数包括:
(1)规模Size,表示中心节点连接的节点数;
(2)关系总数Ties,表示自我网络中节点成员之间的关系总数,不包括各个成员与自我的关系;
(3)理论关系数Pairs,表示自我网络中各个成员之间在理论上所有可能存在的关系总和,Pairs=Size×(Size-1);
(4)个体网络密度Density,Density=Ties/Pairs;
(5)自我网络中弱元素的数量nWeakComp;
(6)平均弱元素量pWeakComp,pWeakComp=nWeakComp/Size;
(7)自我网络中2链路内的节点数2StepReach;
(8)平均2链路内的节点数2StepPct,2StepPct=2StepReach/(Size-1);
(9)节点的影响度ReachEffic;
(10)没有直接相连的关系数目Broker;
(11)自我网络中三节点网络结构的个数nClosed;
(12)中心节点在自我网络中的介数Ego Betweenness。
6.根据权利要求1所述的方法,其特征在于,所述的步骤3中的结合聚类和排序的特征选择方法,具体实现步骤包括:
步骤3.1,特征聚类;采用最大信息系数来衡量两个参数特征之间的关系,选取谱聚类方法对特征进行聚类;
谱聚类时,将每个参数特征作为图中的一个节点,将两个参数特征间的最大信息系数作为两个节点间的权重;在获得特征矩阵后,使用K-Means方法对特征矩阵进行聚类,选取组内平方和最小时作为聚类的结果;
步骤3.2,特征排序;对每个特征簇,将每个簇中与缺陷相关性最大的特征作为该子集的中心特征并排名在该簇特征中优先级第一,其余特征的排名根据优先性系数α确定,优先性系数α=relevance/correlation;其中,relevance为特征与缺陷的相关性,correlation为特征与中心特征的关联性;α越大,特征在簇中的优先性名次越高,根据α的大小,对簇内特征排序;
步骤3.3,特征选择;根据簇内特征优先性排名,采用优先簇间的前向选择每次选择一个特征加入特征子集来生成搜索特征子集,对每一个搜索特征子集,利用机器学习算法进行分类性能评估,当分类的性能最好时,停止搜索,此时对应的搜索子集就是最优特征子集。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810255695.6A CN108345544B (zh) | 2018-03-27 | 2018-03-27 | 一种基于复杂网络的软件缺陷分布影响因素分析方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201810255695.6A CN108345544B (zh) | 2018-03-27 | 2018-03-27 | 一种基于复杂网络的软件缺陷分布影响因素分析方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN108345544A CN108345544A (zh) | 2018-07-31 |
CN108345544B true CN108345544B (zh) | 2020-07-03 |
Family
ID=62956731
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201810255695.6A Active CN108345544B (zh) | 2018-03-27 | 2018-03-27 | 一种基于复杂网络的软件缺陷分布影响因素分析方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN108345544B (zh) |
Families Citing this family (14)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109271319B (zh) * | 2018-09-18 | 2022-03-15 | 北京航空航天大学 | 一种基于面板数据分析的软件故障的预测方法 |
CN109522192B (zh) * | 2018-10-17 | 2020-08-04 | 北京航空航天大学 | 一种基于知识图谱和复杂网络组合的预测方法 |
CN109783387A (zh) * | 2019-01-18 | 2019-05-21 | 深圳壹账通智能科技有限公司 | 穿线测试方法、装置、计算机设备及存储介质 |
CN111831541B (zh) * | 2019-04-22 | 2022-10-28 | 西安邮电大学 | 一种基于风险轨迹的软件缺陷定位方法 |
CN110825615A (zh) * | 2019-09-23 | 2020-02-21 | 中国科学院信息工程研究所 | 基于网络嵌入的软件缺陷预测方法及系统 |
CN111445992B (zh) * | 2020-01-21 | 2023-11-03 | 中国医学科学院肿瘤医院 | 建立预测模型的方法、装置、介质及设备 |
CN111338950A (zh) * | 2020-02-25 | 2020-06-26 | 北京高质系统科技有限公司 | 一种基于谱聚类的软件缺陷特征选择方法 |
CN111523034B (zh) * | 2020-04-24 | 2023-08-18 | 腾讯科技(深圳)有限公司 | 一种应用程序的处理方法、装置、设备及介质 |
CN113821945B (zh) * | 2020-06-19 | 2023-09-05 | 山东建筑大学 | 基于区域缺陷敏感度差异的网壳结构随机稳定性优化方法 |
CN112115045B (zh) * | 2020-08-19 | 2022-03-18 | 北京航空航天大学 | 一种复杂软件系统失效预测方法 |
CN113051314A (zh) * | 2021-03-25 | 2021-06-29 | 东北林业大学 | 基于数据采集分析的松材线虫传播因子确定装置及其方法 |
CN113792187B (zh) * | 2021-09-30 | 2024-05-14 | 中国人民解放军国防科技大学 | 群智软件开发贡献质量评估方法、装置、设备及介质 |
CN116991745B (zh) * | 2023-09-21 | 2023-12-29 | 清华大学 | 一种面向软件变更的适应性弱点检测方法 |
CN118550557B (zh) * | 2024-07-23 | 2024-10-29 | 深圳市本特利科技有限公司 | 电子控制模块软件刷新方法及系统 |
-
2018
- 2018-03-27 CN CN201810255695.6A patent/CN108345544B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN108345544A (zh) | 2018-07-31 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN108345544B (zh) | 一种基于复杂网络的软件缺陷分布影响因素分析方法 | |
Prabha et al. | Software defect prediction using machine learning techniques | |
US9037915B2 (en) | Analysis of tests of software programs based on classification of failed test cases | |
CN108683530B (zh) | 多维度数据的数据分析方法、装置及存储介质 | |
CN110825644A (zh) | 一种跨项目软件缺陷预测方法及其系统 | |
US8326783B2 (en) | Method and system for optimizing configuration classification of software | |
US12013770B2 (en) | Smart selection of test scripts for commodity testing on manufacturing floor | |
CN107967485A (zh) | 用电计量设备故障分析方法及装置 | |
CN111459799A (zh) | 一种基于Github的软件缺陷检测模型建立、检测方法及系统 | |
CN110442523B (zh) | 一种跨项目软件缺陷预测方法 | |
CN113610225A (zh) | 质量评估模型训练方法、装置、电子设备及存储介质 | |
CN113157564A (zh) | 一种基于特征分布对齐和邻域实例选择的跨项目缺陷预测方法 | |
CN114706780B (zh) | 一种基于Stacking集成学习的软件缺陷预测方法 | |
CN115034278A (zh) | 性能指标异常检测方法、装置、电子设备和存储介质 | |
CN113672506B (zh) | 基于机器学习的动态比例测试用例排序选择方法及系统 | |
Grishma et al. | Software root cause prediction using clustering techniques: A review | |
Duan et al. | Process mining of duplicate tasks: A systematic literature review | |
CN117743803A (zh) | 一种基于进化特征构建的工作量感知即时缺陷预测方法 | |
Nagwani et al. | A data mining model to predict software bug complexity using bug estimation and clustering | |
US11797578B2 (en) | Technologies for unsupervised data classification with topological methods | |
Liu et al. | AutoSlicer: Scalable Automated Data Slicing for ML Model Analysis | |
Sandhu et al. | A density based clustering approach for early detection of fault prone modules | |
CN111913872A (zh) | 一种基于缺陷预测的软件静态检查警告排序优化方法 | |
Devi | Software fault prediction with metric threshold using clustering algorithm | |
CN118761688B (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 |