【技术领域】
本发明涉及软件工程领域,特别涉及一种有效数据处理的软件缺陷检测方法。
背景技术:
软件是信息系统的灵魂,是各行各业实现信息化的基础和重要支柱,为适应于真是世界问题中纷繁复杂的应用需求,软件系统功能变得越来越多,其复杂性也越来越高。面对庞大复杂的软件系统,软件缺陷是计算机软件经常出现问题,在软件整个生命周期里,软件缺陷成为影响软件质量的一个重要因素,发现和排查软件缺陷是一项重要的工作,然而,发现和排除软件缺陷需要耗费大量的人力和物力。2006年,在与软件缺陷相关的费用方面,美国花费大约780亿美元。根据美国国防部的数据显示,用在与软件相关的工作上的资金大约占整个it产品的42%,据美国调查研究结果表示,在整个软件花费中,美国在软件测试上的花费就占了53%-87%。因此合理预测缺陷能够有助于及时找出未被发现但是真实存在的缺陷以及缺陷分布,因此,不仅可以节约大量的成本,提高产品质量,还能够客观地评价测试结果,让开发者合理的权衡潜在预测风险和测试成本之间的关系,便于科学的进行软件检测工作。虽然不同度元的数据采集方法不同,但是在预测算法中对不同的度量元并不区分处理,预测算法却具有通用性,现有技术中将字典学习方法用于软件缺陷检测中,但是常规的字典学习算法不能有效利用数据集中不同类型本的判别性质,同时在分类评估时没有考虑到算法中不对称性,因此,提供一种具有有效数据处理的软件检测方法势在必行。
技术实现要素:
本发明旨在提供一种有效数据处理的软件缺陷检测方法,能够通过在传统的字典学习模型中通过加入判别约束项、在分类器性能评估中考虑到不对称性,来提高数据性能,更好的完成软件检测。
技术方案为,.一种有效数据处理的软件缺陷检测方法,其特征在于,包括以下步骤:
步骤(1),对接收的软件模块进行检测;
步骤(2),获取原始软件度量数据集,对原始软件度量数据集的数据进行预处理;
步骤(3),将数据分为训练样本和测试样本;
步骤(4),对训练样本数据进行字典学习模型,并判别;
步骤(5),对所述步骤(4)中的数据进行结构化,
步骤(6),使用非对称分类器进行性能评估;
步骤(7),检测转入所述测试样本;
步骤(8),用模型对软件检测模块进行缺陷检测;
步骤(9),将评估结果反馈给测试者,完成检测。
进一步的,步骤(4)中的判别方法选用多元统计分析进行判别。
进一步的,步骤(5)包括步骤501,初始化字典集合d,对d每一列以随机矢量l1范式项进行初始化;步骤502,固定字典集合d,通过imp以迭代的形式进行求解系数集合x;步骤503,固定步骤502中的x,更新d,得到最终的结构化的字典。
其中,本发明与现有技术相比,本发明提供的软件检测方法,能够将建模过程、检测过程和软件模块开发过程融合,有效处理数据,将数据样本预处理和处理有效融合,同时利用不对称分类对数据处理结果进行性能评估,以提升整个过程的测试性能。
【附图说明】
图1为现有技术中对软件缺陷检测方法流程示意图。
图2为本发明软件检测方法工作流程示意图。
图3为本发明数据进行结构化的流程示意图。
【具体实施方式】
为了使本发明的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。根据结合附图进行的对示例性实施例的以下描述,上述和/或其他方面将变得清楚并且更容易被理解。
软件开发过程一般在需求分析、软件设计、程序模块编码过程后,将程序模块提交自动化软件质量辅助控制装置进行处理,并输出每个模块的缺陷情况,若尚有模块包含缺陷,则通知开发人员对其进行调试和修改,然后再对修改后的代码进行缺陷检测,直到没有模块包含缺陷,最后对外发布软件。现有自动化软件质量辅助控制装置一般是对模块进行缺陷检测之前,需要利用一定的数量的模块进行训练,建立缺陷检测模型。此处,对接收的软件模块进行检测,获取原始软件度量数据集的数据,对原始软件度量数据集的数据进行预处理,定义a=[a1,a2,a3……,ai,……,ac]为的训练样本集合,其中ai为第i类的子样本集合,定义x=[x1,x2,x3……,xi,……,xc]为a关于字典集合d的表示系数矩阵,对样本集合进行线性组合表示:
a≈dx
其中,xi是第i类样本ai关于d集合训练得到的表示系数。
基于上述内容,将数据分为训练样本和测试样本,此处为本领域中常用的技术方法,在此不在赘述。
建立字典判别项的学习模型,其数学模型如下:
p(d,x)=arg(d,x)min{r(a,d,x)+λ‖x‖1}
其中r(a,d,x)是判别精确项,其能够较好地衡量样本的判别能力,‖x‖1为稀疏表示系数,参数是一个平衡因子,对于某一类样本的稀疏表示系数xi可以表示为
判别字典学习模型首先需要使用整体字典集合d能够尽可能近似地表示出任一类样本集合a,因此需要满足下式:
其次,由于子字典di是关于第i类的,显然希望尽可能地使得第i类样本ai也能够由相应类的子字典di(非dj)进行近似表示,此时误差项
在此基础上,改善字典集合d的判别能力,在稀疏表示项中添加多元统计分析判别约束项f(x),以使得使用字典集合d对图像集a进行表示时有着较好的区分能力。因此可以定义表示系数矩阵x的类内、类间散度矩阵如下:
其中mi表示第i类表示系数的均值,xk表示第i类中一样本表示系数,m表示为总的样本,表示均值,ni是第i类样本的个数。
多元统计分析判别准则的目标函数可以简化为tr(sw(x))/tr(sb(x))的形式,其中tr()表示矩阵的迹。
判别后,通过固定字典集合d来更新系数矩阵x,然后通过固定系数矩阵x来更新字典集合d,通过这种模式来求解所需的结构化字典,及对数据进行元数据固定法来结构化。具体步骤如下:
步骤501,初始化字典集合d,对d每一列以随机矢量l1范式项进行初始化;
步骤502,固定字典集合,通过imp以迭代的形式进行求解系数集合x;迭代方式为本领域中常用的方法,在此不在扩展描述。
步骤503,固定步骤502中的x,通过下述更新d,得到最终的结构化的字典。更新d方法如下:
其中d为字典的元数据,稀疏系数x为系数矩阵,x=[β1,β2,…,βp],这里βj,j=1,2,……,p,是矩阵的行向量,逐个更新,当更新到dj时,其他字典集合d的列被固定,比如,dl,l≠j。然后,jd被转化为下述公式:
这里让c=a-∑l≠jdlβl,则上面等式变为:
使用拉格朗日乘子,
这里γ是一个可变量,积分
使用上面的程序,可以更新所有的dj的元数据。返回公式(1),一直到jd,x的迭代最大数已经达到,最后输出d。
对数据进行结构化后,一般情况使用src分类器对样本进行重构,本发明使用非对称分类器进行性能评,可以使数据分析更加准确。
对数据进行线性转换,执行子集上的回归,提取潜在变量,预测软件缺陷。第一步,首先执行非线性映射φ:
在软件缺陷检测中,
在类区r范围设定中心m和重叠参数ε,两个分类可以被表示为m+1-m-1=ε(r+1-r-1)。参数ε表示两个区域的重叠等级。如果重叠度高,特别数据设置已经是非线性可分开的。为了克服这种重叠问题,设定如下特征值等式:
φφtψψtτ=μτ(3)
这里φ、ψ分别定义为x空间的映射矩阵和y空间的映射矩阵,而x、y空间均在特征空间
这里ai是双重回归系数,可以从最小二乘法获得,
这里c1是第一得分τ1的位置,根据τ1计算中心值(m+1,m-1)和半径(r+1,r-1),τ可以根据等式(3)获得。
根据上述步骤,得到软件缺陷位置,用上述设计好的整套模型对软件检测模块进行缺陷检测;步骤将评估结果反馈给测试者,完成检测。
以上所述仅用以对本申请的技术方案进行了详细介绍,但以上实施例的说明只是用于帮助理解本发明的方法及其核心思想,不应理解为对本发明的限制。本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。