一种基于关联规则的网络软件缺陷预测方法
2020-03-16徐思婕
徐思婕
(哈尔滨工程大学计算机科学与技术学院 黑龙江省哈尔滨市 150001)
由于信息技术的不断发展和进步,每天都有大量的软件问世,软件复杂程度也不断提升,在互联网技术的支持之下,基本上所有软件都可以联网,网络虽然给软件的使用带来了诸多便利,但是其弊端即软件缺陷也逐渐暴露出来了,软件缺陷对人们生活的方方面面都产生了极为深刻的影响。为了降低软件缺陷对软件使用效果产生的影响,为广大用户提供更加便捷优质的服务,文章尝试对一种基于关联规则的网络软件缺陷预测方法进行分析和论述。该研究是建立在前人理论与实践分析基础之上提出来的。据相关学者研究表明,当前对软件缺陷进行研究的主要是基于统计分析学方法、神经网络的软件缺陷预测模型、机器学习算法等。在具体的测试过程中不同的研究方法所产生的作用效果有着较大的差异。而本文在深入总结前人研究的基础之上,认为可以运用关联规则对网络软件缺陷进行分析和预测,当前关联规则广泛应用于商业、移动通信以及网络安全等领域,其以数据为基础,通过深入的分析和挖掘网络数据之间潜在的联系,对可能存在的缺陷进行分析。
1 网络软件缺陷预测存在的问题
软件缺陷预测技术对于提高软件质量,保证软件可靠性有着重要的意义。从上述国内外的研究现状可以看出,目前研究者已经在软件缺陷预测领域取得了丰硕的研究成果,但是仍存在一些不足,主要体现在以下两点。
(1)类不平衡问题和维度爆炸影响软件缺陷预测模型的精度。特征选择是解决维度爆炸问题的一种有效手段,通过特征选择筛除冗余特征和无关特征,选取最优特征子集,提高软件缺陷预测模型的效果。但当前的研究方法中在特征选择阶段未考虑到软件缺陷数据集中的类不平衡问题,类不平衡问题会导致预测模型在缺陷模块的识别率较低,在一定程度上阻碍了软件缺陷预测模型的效果。
(2)软件漏洞是一种特殊的软件缺陷,其成因与程序语义信息密切相关。传统的软件缺陷预测技术利用软件度量等专家定义的特征来构建机器学习模型实现软件缺陷预测,然而软件度量仅是对软件规模和性质的量化,未考虑源代码中函数调用关系、数据流等语义信息,不能准确的刻画漏洞的行为模式,因此并不适用于软件漏洞预测。深度学习算法在代码的语义特征提取和表达方面表现优越,但不擅长分类问题,因此难以达到很好的漏洞预测效果。
2 网络软件缺陷预测
2.1 网络软件缺陷预测概述
图1:网络软件缺陷预测架构
图2
网络软件缺陷预测过程中,由于数据分布、数据特征、软件质量等多种因素的影响,可能会导致预测算法或者是模型与实际预算存在显著差异。在实际测试过程中,为了保证测试的准确性,通常会将所选取的数据样本分为有效数据样本与失效数据样本两大类,而在测试过程中重点就在于分析失效数据样本,明确数据失效的原因,是了解缺陷发生原因、特征以及规律的关键所在。
当前在进行软件缺陷预测分析时,主要有神经网络算法、贝叶斯网络、机器学习法、迁移学习等。在该领域有所研究的学者和专家借助这些研究方法取得了诸多研究成果。但是,这些预测方法在应用的时候却并没有充分的考虑到外部环境中影响软件质量、可靠性等不确定性因素,对于这些因素考虑少,势必会降低缺陷预测结果的准确性,如软件的内部缺陷就难以有效的被上述预测方法预测出来。基于关联规则的网络软件预测缺陷方法,其运用优势就在于其不再只是单独的对有效数据样本进行预测分析,同时其也充分的考虑到了失效数据样本,注重对两种数据样本同时进行分析和预测,这样做的优势在于可以有效的降低预测偏差,优化预测结果。
2.2 网络软件缺陷预测架构
一般来说,网络软件缺陷预测模型的架构可以分为缺陷数据采集、缺陷数据预处理、引入预测算法、预测模型构建、预测模型测试与验证五个部分,其模型架构如图1 所示。
在对目标软件的源代码或者是缺陷软件数据库中的样本进行采集、然后统一分析和处理,将关联规则算法引入到数据样本分析之中,对数据样本内容进行有效的计算和分析,然后快速的生成预测模型。在具体的预测过程中可以尝试多种参数值,反复预测,以便获得更加真实的数据结果,提高预测的准确性,减少外界因素对预测产生的干扰。
3 关联规则及关联分类器
3.1 关联分类法
分类关联规则可以全面真实的反映出数据的描述性关联特性以及可以用于分类的特征。如关联规则X=>Y,其中X 为前置事件,表示数据描述性关联规则,Y 为后置事件,表示分类特征。如“respect>0.5127oravg>0.2563=>result=1”中,前置事件为“respect>0.5127oravg>0.2563”,后置事件为“result=1”。关联分类法应用的基本过程中,可以分为以下几个步骤,即对所收集到的数据进行离散化处理;在离散化处理完毕之后,获取关联分类规则;然后再采用分类器构建算法构造分类器;最后利用构造的分类器进行更加深入的研究和实验。
3.2 关联规则生成算法
在应用关联规则的生成算法时,可以将Apriori 算法或者是FPTree 算法融入其中,借助该算法对可以生出更加具有规则性的集合,其中,置信度由c 表示、支持度由s 表示,前置的相关定理如下所示:
定理1 假设x 和y 是数据集中的项目集中的项目集,如果x∈y,同时y 为大项目集的情况下,那么就说明X 也是大项目集,反之相关关系则不成立。
定理2 假设x=>y,那么对应的项目集则是x∪y,这种情况下也一定是一个大项目集,反之则说明大项目集不成立。
在缺陷预测期间,通过对数据的分析记录,对各个激励进行关联规则的计算,最终形成一个结论集,通过该结论集为后期的分类关联规则生成奠定良好的基础。
4 实验过程
为了更好的验证基于关联规则的网络软件缺陷预测方法的有效性:文章尝试以具体的案例作为实验研究对象,本案例研究由以下三个步骤组成。如图2 为基于CAT 静态分析工具的检索结果。
(1)缺陷检索。图2 左上角显示了一个C#的源代码文件,包含了循环结构和选择结构。通过静态分析,可以注意到有四个缺陷,并且给出相关的语法规则。如果用户选择一个缺陷,该工具将显示该缺陷的详细信息。在这一部分中可以发现这个缺陷的一些属性,如目标,身份,位置等。对用户来说更意外的是,该工具提供了这个缺陷的解决方案,以便于调试方便用户。
(2)错误分类,通过基于CAT 的静态分析,发现了一些缺陷。为了调试这些缺陷,用户需要知道缺陷属于哪个类型。因此,有必要进行分类过程,根据缺陷规则,这些缺陷被分类。例如,缺陷“arg(字符串)”(缺陷的实名)被安排为类型二,和类型三(非可执行节点)。因为其他缺陷不符合缺陷规则,所以它们被归类为其他缺陷。
(3)反馈。为了提高缺陷检索的准确性,识别这些缺陷是很重要的。因此,需要邀请一些有经验的开发人员来决定这些缺陷的真相。当开发人员单击按钮(评级)时,就可以选择相关的项目来判断所选缺陷的真实性。
5 结论
现如今,人们的生产生活可以说已经离不开网络软件了,许多网络软件上还包含有用户的各种隐私信息,如果软件存在有多种缺陷,那么用户的人身以及财产安全就将会因此而受到影响。所以说,对网络软件缺陷进行预测就显得极为有必要了。当前,用于网络软件缺陷预测的方法多种多样,而相较于其他的预测方法来说,关联规则的优势就在于其使得预测的精确度更高,可以对软件进行全方面的分析和评估,在对缺陷进行准确预测之后,可以有针对性的对软件存在的不足予以优化和调整,进而给予用户更好的软件使用体验。