【技术实现步骤摘要】
一种基于区分子图挖掘的软件缺陷发现方法
[0001]本专利技术涉及软件工程
,尤其涉及一种基于区分子图挖掘的软件缺陷发现方法。
技术介绍
[0002]信息化时代的软件已经深入到日常生活的各个角落,各行各业都离不开软件,因此高质量的软件是必要的。软件的质量和软件中存在的缺陷数量有直接关系,软件中缺陷数量越少,软件质量越高。在软件开发过程中,软件缺陷的产生是不可避免的。开发人员对需求理解不正确以及开发经验不足可能引起性能或产品特征上的缺陷,程序员对逻辑路径或数据范围考虑不周到,如缺失某些边界条件,忽视系统崩溃后数据的异地备份和灾难性恢复等问题均可能产生软件缺陷。有缺陷的软件在运行时可能会出现意料之外的结果,严重时可能会对公司产生巨大的损失,甚至危害到生命安全,尤其是在航空、航天、金融证券和交通领域软件的质量问题更不可被忽视。研究发现,如果在需求阶段修复一个软件缺陷的代价是1的话,在设计阶段修复一个软件缺陷就是它的3到6倍,在编程阶段修复一个软件缺陷是它的大约10倍,而到了产品发布出去时,再去修复一个软件缺陷将会是40到1000倍,可以看出修复软件中一个缺陷的代价不是随时间线性增长,几乎是呈指数增长的。根据IBM的统计报告显示,在软件开发过程中,软件测试需要消耗整个软件开发和运维预算的50%到75%。这表明在软件开发周期中,通过软件测试尽可能减少软件中存在的缺陷是一项非常昂贵的活动。所以在软件开发周期能快速、精确的找到软件缺陷出现的位置是非常有价值,有意义的。
[0003]目前的软件缺陷检测方法一般可分为基于 ...
【技术保护点】
【技术特征摘要】
1.一种基于区分子图挖掘的软件缺陷发现方法,其特征在于:包括以下步骤:步骤1、从软件仓库中获取所需软件项目包,针对一个软件项目提取新旧两个版本的软件包,对新旧两个版本的软件包做相同数据预处理,构建程序的控制流图,并保存到文本文件中,获得两类图数据集,记为正类和负类;步骤2、对保存到文本文件的控制流图中的程序语句进行哈希转化,使每条程序语句在控制流图中被表示成一个数字,进而使控制流图用程序语句哈希转化后的数值来表示;步骤3、对步骤2得到的哈希转化后的两类图数据集G
+
和G-进行覆盖图挖掘,得到覆盖图集,具体方法为:步骤3.1、对哈希转化后的正类图数据集G
+
,设置支持度阈值为minSup,利用子图匹配算法计算正类图数据集中支持度大于支持度阈值的频繁子图g,得到频繁子图集G
F
,并保留频繁子图集G
F
中每个频繁子图的支持度sup(g,G
+
);步骤3.2、基于区分度度量函数挖掘频繁子图对应的区分子图;步骤3.3、设定距离阈值δ,对获取的区分子图集G
D
进一步挖掘,获取区分子图集G
D
对应的覆盖图集G
R
;步骤3.3.1、在区分子图集G
D
中,计算所有区分子图对应的δ-跳跃模式,并删除被δ-跳跃模式覆盖的区分子图;所述δ-跳跃模式为:对于区分子图集G
D
,d是D中任意一个区分子图,如果区分子图d在区分子图集G
D
中的跳跃值LV
s
(d)>δ,那么区分子图d是区分子图集G
D
里的δ-跳跃模式;所述区分子图d在区分子图集G
D
中的跳跃值LV
s
(d)定义为区分子图d和区分子图集G
D
中任意真超图之间的Jaccard距离的最小值,如下公式所示:其中,D(d,d
′
)为区分子图d在区分子图集G
D
中的任意真超图d
′
之间的Jaccard距离,如下公式所示:其中,T(d)是区分子图集G
D
中包含区分子图d的图集合,T(d
′
)是区分子图集G
D
中包含真超图d
′
的图集合;步骤3.3.2、在剩余的区分子图集中循环执行步骤3.3.1搜集覆盖信息,保留能够覆盖剩余区分子图的代表性区分子图构成覆盖图集G
R
;所述代表性区分子图为能够δ-覆盖区分子图集G
D
中任意一个区分子图的区分子图;给定两个区分子图d和d
″
,如果且D(d,d
″
)≤δ,那么就称区分子图d
″
δ-覆盖区分子图d;步骤4、将正负两类图数据集均按一定比例划分为训练集和测试集,并根据步骤3获取的覆盖图集G
R
对正负两类图数据集中的控制流图均进行数据向量化;步骤5、将正负两类图数据集划分的训练集中数据向量化后的控制流图作为特征训练数据来训练极限学习机ELM,采用投票机制得到训练模型,并通过测试集中数据向量化的控制流图对训练模型进行测试,进而通过测试后的训练模型对待测程序文件进行测试,发现软件缺陷。2.根据权利要求1所述的一种基于区分子图挖掘的软件缺陷发现方法,其特征在于:所
述步骤1的具体方法为:步骤1.1、针对一个项目从软件仓库中的软件项目包中提取新旧两个版本的软件包,采用递归算法对新旧两个版本的软件包提取程序源代码文件集;并且过滤掉与软件缺陷检测不相关的文件,以可编辑的文本存储程序源代码;步骤1.2、对获取的程序源代码文件集,提取软件项目中所有的方法;利用代码处理工具软件将软件项目中每个类中的方法提取出来,以可编辑的文本保存;步骤1.3、对步骤1.2获取的方法采用统一编码方式命名;步骤1.4、对采用统一编码方式命名后的方法进行降噪处理和方法过滤,删除冗余方法和空方法、仅保留有实际功能的方法集,删除程序中无修改痕迹的方法;步骤1.5、代码规范化;对降噪处理和方法过滤后的程序方法文件中的程序语句按照其语义统一表达,使程序语句的代码规范化;步骤1.6、将规范化后的程序方法文件中的程序语句构建控制流图CFG,保存到文本G中,进而得到两类图数据集,其中一类是旧版本程序文件对应的图数据集,即包含软件缺陷的图数据集,记为负类G-;另一类是新版本程序文件对应的图数据集,即不包含软件缺陷的图数据集,记为正类G
+
。3.根据权利要求2所述的一种基于区...
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。