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.一种基于复杂网络的软件缺陷分布影响因素分析方法,对待分析软件的每个版本建立软件函数调用网络,其特征在于,基于软件函数调用网络进行下面步骤:步骤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
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。