一种基于复杂网络的软件缺陷分布影响因素分析方法技术

技术编号:18575786 阅读:36 留言:0更新日期:2018-08-01 10:47
本发明专利技术提出一种基于复杂网络的软件缺陷分布影响因素分析方法,属于软件缺陷分析领域,包括:步骤1根据软件的修改模块,分析软件修改度量参数与缺陷分布的相关性;步骤2基于软件函数调用网络,分析软件网络结构度量参数与缺陷分布的相关性;步骤3基于机器学习算法,获得影响软件缺陷分布的最优特征子集;通过以上三大步骤可以获得用来分析软件缺陷分布情况的最优特征子集和相应的机器学习算法,一方面为软件缺陷预测的研究提供的数据基础和方法支持,也可作为软件可靠性相关工作的参考,另一方面也可以对软件测试领域提供指导作用。

An analysis method for influencing factors of software defect distribution based on complex network

This invention proposes a method of analyzing the influence factors of software defect distribution based on complex network, which belongs to the domain of software defect analysis, including step 1, according to the software modification module, the correlation between the software modification parameters and the defect distribution is analyzed; step 2 is based on the software function adjustment network, and the software network structure metric parameter is analyzed. The correlation between the number and the defect distribution; step 3, based on the machine learning algorithm, obtains the optimal subset of the software defect distribution; through the above three steps, the optimal subset and the corresponding machine learning algorithm can be obtained to analyze the software defect distribution, and one side is the number of software defect prediction research. According to the basis and method support, it can also be used as a reference for software reliability related work, on the other hand, it can also provide guidance for the field of software testing.

【技术实现步骤摘要】
一种基于复杂网络的软件缺陷分布影响因素分析方法
本专利技术应用于软件缺陷分析领域,是一种基于复杂网络理论和方法,分析影响软件缺陷分布的因素的方法。
技术介绍
随着计算机技术快速的发展,软件的应用已经遍布在社会生活的方方面面,随之也带来了软件规模和复杂度的持续显著增长,根据数据显示,在过去的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”。将每个版本的软件函数调用网络与前一版本的网络进行对比,如果指本文档来自技高网
...

【技术保护点】
1.一种基于复杂网络的软件缺陷分布影响因素分析方法,对待分析软件的每个版本建立软件函数调用网络,其特征在于,基于软件函数调用网络进行下面步骤:步骤1:根据软件的修改模块,分析软件修改度量参数与缺陷分布的相关性;为软件中的函数设置软件修改度量参数,并添加到网络节点的属性中,通过对比前后两个版本的软件函数调用网络,设置各节点的软件修改度量参数的状态值;然后采用逻辑回归模型对软件修改度量参数与缺陷分布之间的相关性进行分析,获得与缺陷分布相关的软件修改度量参数;步骤2:基于软件函数调用网络,分析软件网络结构度量参数与缺陷分布的相关性;基于软件函数调用网络,计算节点的整网结构度量参数;构建每个节点的自我网络,获得衡量每个节点的局部结构特性的自我网络结构度量参数;提取函数节点的缺陷信息,采用逻辑回归模型分析每个网络结构度量参数与软件缺陷分布的相关性,获得与缺陷分布相关的结构度量参数;步骤3:基于机器学习算法,获得影响软件缺陷分布的最优特征子集;将步骤1和2获得的与缺陷分布相关的修改度量参数和结构度量参数结合作为初始特征集,采用结合聚类和排序的特征选择方法,获取影响软件缺陷分布的最优特征子集;所述的结合聚类和排序的特征选择方法通过特征聚类,将初始特征集划分为高内聚低耦合的若干特征簇,然后对特征簇中的特征进行排序获得有序的特征集合,最后基于四种机器学习算法,对有序的特征集合进行子集搜索获得最优子集。...

【技术特征摘要】
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,表示某节点...

【专利技术属性】
技术研发人员:艾骏王菲苏文翥杨益文郭皓然王飞
申请(专利权)人:北京航空航天大学
类型:发明
国别省市:北京,11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1