软件缺陷预测方法及装置与流程

文档序号:12801973阅读:241来源:国知局
软件缺陷预测方法及装置与流程

本发明涉及软件质量技术领域,尤其涉及一种软件缺陷预测方法及装置。



背景技术:

随着信息技术的发展,软件复杂程度不断提高、软件规模不断增大,良好的软件质量控制和预测机制,不但可以帮助企业开发出高质量的软件产品,减少产品生产和维护成本,而且在提高客户满意度,建立良好的企业形象和增强企业在市场上的竞争力等方面都有着重要的意义。另外,软件系统的质量问题极有可能会导致严重后果。因此,软件质量越来越受重视,如何预测软件质量及提高软件质量成为当今研究的热点之一。

软件缺陷预测是通过统计学方法对与软件质量有关的数据进行处理从而对软件模块是否存在缺陷进行估计,这样就能在软件开发的早期根据软件的有关数据,对软件的质量进行预测和控制,从而预测出软件可能出现的质量问题,进而提高和控制软件的质量。传统的软件缺陷预测方法主要包括基于统计学方法的预测模型和基于神经网络的预测模型等。其中,神经网络由于其训练不需要完全知道系统的具体细节,并且具有良好的非线性映射逼近性能和自学习能力,在软件缺陷预测中得到了广泛应用。

然而在实际应用中,由于软件失效的概率相比正常的概率较低,实际得到的软件缺陷分布基本上都是不均衡的,软件失效模块占软件模块总数相对较少。并且,由于软件缺陷预测模型输入的各种度量数据的计算方法不同,取值范围和含义也各不相同,会导致质量评价方法产生偏向性,这些因素都会严重影响软件缺陷预测模型的准确性。当这些软件失效模块被错误预测为无缺陷时,一旦投入实际使用,所带来的经济损失和社会损失是不可估量的。



技术实现要素:

基于此,有必要提供一种提高软件缺陷预测准确性的软件缺陷预测方法及装置。

一种软件缺陷预测方法,包括:

对待预测软件的软件模块源代码进行静态度量,构建缺陷向量;

将所述缺陷向量通过预设投影矩阵映射到几何空间中得到映射缺陷向量;所述预设投影矩阵为在训练获得经过训练的预测模型的过程中,使得样本向量集的样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵,所述样本缺陷子集包括有缺陷子集和无缺陷子集;

将所述映射缺陷向量输入到所述经过训练的预测模型中,通过所述经过训练的预测模型,将所述映射缺陷向量与所述样本缺陷子集的马氏距离最小的样本缺陷子集所对应的类别,作为所述待预测软件对应的缺陷预测结果。

一种软件缺陷预测装置,包括:

缺陷向量构成模块,用于对待预测软件的软件模块源代码进行静态度量,构建缺陷向量;

缺陷向量映射模块,用于将所述缺陷向量通过预设投影矩阵映射到几何空间中得到映射缺陷向量;所述预设投影矩阵为在训练获得经过训练的预测模型的过程中,使得样本向量集的样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵,所述样本缺陷子集包括有缺陷子集和无缺陷子集;

预测结果确定模块,用于将所述映射缺陷向量输入到所述经过训练的预测模型中,通过所述经过训练的预测模型,将所述映射缺陷向量与所述样本缺陷子集的马氏距离最小的样本缺陷子集所对应的类别,作为所述待预测软件对应的缺陷预测结果。

上述软件缺陷预测方法及装置,对待预测软件的缺陷向量进行几何空间映射,所述预设投影矩阵为在训练获得经过训练的预测模型的过程中,使得样本向量集的样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵,所述样本缺陷子集包括有缺陷子集和无缺陷子集。如此可以实现软件缺陷数据的优化去噪,保证了数据分布的合理性,因此将映射得到的映射缺陷向量输入至经过训练的预测模型中,通过所述经过训练的预测模型,将所述映射缺陷向量与所述样本缺陷子集的马氏距离最小的样本缺陷子集所对应的类别,作为所述待预测软件对应的缺陷预测结果,从而,可以得到准确性更高的待预测软件对应的预测结果。

附图说明

图1为第一个实施例的软件缺陷预测方法的流程图;

图2为第二个实施例的软件缺陷预测方法的流程图;

图3为第三个实施例的软件缺陷预测方法的流程图;

图4为第一个实施例的软件缺陷预测装置的结构图;

图5为第二个实施例的软件缺陷预测装置的结构图;

图6为第三个实施例的软件缺陷预测装置的结构图。

具体实施方式

为了便于理解本发明,下面将参照相关附图对本发明进行更全面的描述。附图中给出了本发明的较佳的实施例。但是,本发明可以以许多不同的形式来实现,并不限于本文所描述的实施例。相反地,提供这些实施例的目的是使对本发明的公开内容的理解更加透彻全面。

除非另有定义,本文所使用的所有的技术和科学术语与属于本发明的技术领域的技术人员通常理解的含义相同。本文中在本发明的说明书中所使用的术语只是为了描述具体的实施例的目的,不是旨在于限制本发明。本文所使用的术语“或/及”包括一个或多个相关的所列项目的任意的和所有的组合。

请参阅图1,一实施例的软件缺陷预测方法,包括:

s110:对待预测软件的软件模块源代码进行静态度量,构建缺陷向量。

对待预测软件的各个软件模块的源代码进行静态度量,从而构建待预测的缺陷向量。其中,对各个软件模块的源代码进行静态度量的方式包括halstead度量(霍尔斯特德度量)、macabe度量(麦克比度量)、khoshgoftaar度量(一种基于神经网络模型的度量方法)和ck度量(一种面向对象的度量方法)等。

s130:将缺陷向量通过预设投影矩阵映射到几何空间中得到映射缺陷向量;预设投影矩阵为在训练获得经过训练的预测模型的过程中,使得样本向量集的样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵,样本缺陷子集包括有缺陷子集和无缺陷子集。

s150:将映射缺陷向量输入到经过训练的预测模型中,通过经过训练的预测模型,将映射缺陷向量与样本缺陷子集的马氏距离最小的样本缺陷子集所对应的类别,作为待预测软件对应的缺陷预测结果。

上述软件缺陷预测方法,对待预测软件的缺陷向量进行几何空间映射,预设投影矩阵为在训练获得经过训练的预测模型的过程中,使得样本向量集的样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵,样本缺陷子集包括有缺陷子集和无缺陷子集。如此可以实现软件缺陷数据的优化去噪,保证了数据分布的合理性,因此将映射得到的映射缺陷向量输入至经过训练的预测模型中,通过经过训练的预测模型,将映射缺陷向量与样本缺陷子集的马氏距离最小的样本缺陷子集所对应的类别,作为待预测软件对应的缺陷预测结果,从而,可以得到准确性更高的待预测软件对应的预测结果。

请参阅图2,在其中一个实施例中,将缺陷向量通过预设投影矩阵映射到几何空间中得到映射缺陷向量的步骤之前,还包括:

s121:对已知的样本软件的软件模块源代码进行静态度量,构成样本向量,各样本向量组成样本向量集。

假设对于样本软件中已知的n个模块,其中,无缺陷模块n1个,有缺陷模块n2个,n1+n2=n。

在其中一个具体实施例中,首先,对每一个模块i,i=1,2,...,n,分别对其是否存在缺陷进行标记,得到缺陷标记flagi。其中,flagi=1,表示该模块存在缺陷;flagi=0,表示该模块没有缺陷。

然后,对每一个模块i,i=1,2,...,n,分别对其源代码进行静态度量,假设共有d个具体的度量值,可以将这些度量数据分别标记为xi1,xi2,...,xid,则这些度量数据构成模块i的样本向量xi=[xi1,xi2,...,xid]。

最后,对于每一个样本向量xi,根据有无缺陷的缺陷标记flagi,将样本向量集划分为样本缺陷子集,样本缺陷子集包括有缺陷子集和无缺陷子集。无缺陷子集可表示为{x1i|i=1,2,...,n1};有缺陷子集可表示为{x2i|i=1,2,...,n2}。

s122:根据样本向量集的样本缺陷子集确定样本缺陷子集的协方差矩阵。

样本缺陷子集的协方差的计算公式为:

其中,σc表示样本缺陷子集的协方差矩阵,c=1或2。具体地,c=1时,σc表示无缺陷子集的协方差矩阵,c=2时,表示有缺陷子集的协方差矩阵。为样本缺陷子集{xci}的均值向量。

s123:根据样本缺陷子集的协方差矩阵,将样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵确定为预设投影矩阵。

根据样本缺陷子集的协方差矩阵可以确定样本缺陷子集之间的相对熵距离。也即,根据有缺陷子集的协方差矩阵及无缺陷子集的协方差矩阵,可以确定有缺陷子集与无缺陷子集之间的相对熵距离。

具体地,样本缺陷子集之间的相对熵距离的确定公式为:

其中,pc,表示样本缺陷子集{xci}的概率密度,可以选择高斯分布;c=c1或c2,c1不等于c2;tr(·)表示矩阵的迹,|·|=det(·)表示矩阵的行列式,需要说明的是,样本缺陷子集的个数为2,即一个有缺陷子集和一个无缺陷子集。

在其中一个实施例中,假设几何空间下的投影矩阵表示为w,原始样本x在几何空间中的投影可表示为:

y=wtx

则,在几何空间下样本缺陷子集之间的相对熵距离可表示为:

可以按照以下目标函数公式确定投影矩阵w的最优值为预设投影矩阵,使得样本缺陷子集之间的相对熵距离的几何均值最大。

其中,c为样本缺陷子集个数,其值为2,即样本缺陷子集包括有缺陷子集和无缺陷子集;qc,表示为样本缺陷子集{xci}的先验概率,c为c1、c2、m或n,通常取值为1/c或nc/n;可以理解地,c1、c2、m、n的取值为1或2。

进一步地,为了进一步提高预测的准确性,可以按照以下目标函数公式计算投影矩阵w的最优值,使得经过归一化的样本缺陷子集之间的相对熵距离几何均值最大,从而确定预设投影矩阵。

其中,ew(pc1||pc2)为经过归一化的样本缺陷子集之间的相对熵距离,

在其中一个实施例中,几何空间下的投影矩阵w的最优值,即预设投影矩阵可以确定为样本缺陷子集之间的相对熵距离几何均值最大和经过归一化的样本缺陷子集之间的相对熵距离几何均值最大的加权,如下式所示:

其中,α为权重因子。

在其中一个优选的实施例中,对上式进行推到,从而可以确定预设投影矩阵w*可表示为:

其中,w*为预设投影矩阵,c为样本向量集的样本缺陷子集的个数;dw(pc1||pc2)为在几何空间下的两个样本缺陷子集之间的相对熵距离;qc,表示为样本缺陷子集{xci}的先验概率,c为c1、c2、m或n,c1、c2、m、n的取值范围为1至c;α为权重因子。

请参阅图3,在其中一个实施例中,将映射缺陷向量输入到经过训练的预测模型中的步骤之前,即步骤s150之前,还包括:

s141:将样本向量集的样本缺陷子集通过预设投影矩阵映射到几何空间中,得到映射向量集。

利用预设投影矩阵w*,对样本向量集{xi|i=1,2,...,n}进行几何空间映射,得到映射向量集{yi|i=1,2,...,n},其中,yi=w*txi。

s142:根据样本缺陷子集对应的映射向量集的映射缺陷子集确定映射后的样本缺陷子集的协方差矩阵。

映射后的的样本缺陷子集xc的协方差矩阵σyc可以表示为:

σyc=w*tσcw*

s143:对映射后的样本缺陷子集的协方差矩阵进行特征分解,确定映射后的样本缺陷子集的协方差矩阵的特征值及特征向量。

式中,λc=diag[λc1,...,λcd],其中,λcj,j=1,...,d是协方差矩阵σyc的特征值。j=1,...,d是对应的特征向量,φc标准正交,

s144:根据映射后的样本缺陷子集的协方差矩阵的特征值及特征向量对预测模型进行特征分解,得到经过训练的预测模型。

得到经过训练的预测模型时,需先计算映射后的样本缺陷子集xc={xci|i=1,2....n1orn2}的均值

在其中一个实施例中,在经过训练的预测模型中映射缺陷向量与样本缺陷子集的马氏距离可以表示为:

dc(y,σc)表示映射缺陷向量与样本缺陷子集的马氏距离;λc=diag[λc1,...,λcd],其中,λcj,j=1,...,d是映射后的样本缺陷子集的协方差矩阵的特征值;其中,j=1,...,d是映射后的样本缺陷子集的协方差矩阵的特征向量;d为对软件模块源代码进行静态度量时的度量值的数量;为映射缺陷子集的均值;y为映射缺陷向量。

本申请还提供一种与上述方法对应的装置。请参阅图4,一种软件缺陷预测装置,包括:

缺陷向量构成模块410,用于对待预测软件的软件模块源代码进行静态度量,构建缺陷向量;

缺陷向量映射模块430,用于将所述缺陷向量通过预设投影矩阵映射到几何空间中得到映射缺陷向量;所述预设投影矩阵为在训练获得经过训练的预测模型的过程中,使得样本向量集的样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵,所述样本缺陷子集包括有缺陷子集和无缺陷子集;

预测结果确定模块450,用于将所述映射缺陷向量输入到经过训练的预测模型中,通过经过训练的预测模型,将映射缺陷向量与样本缺陷子集的马氏距离最小的样本缺陷子集所对应的类别,作为待预测软件对应的缺陷预测结果。

上述软件缺陷预测装置,缺陷向量映射模块430对缺陷向量构成模块410根据待预测软件构成的缺陷向量进行几何空间映射,预设投影矩阵为在训练获得经过训练的预测模型的过程中,使得样本向量集的样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵,样本缺陷子集包括有缺陷子集和无缺陷子集。如此可以实现软件缺陷数据的优化去噪,保证了数据分布的合理性,因此预测结果确定模块450将映射得到的映射缺陷向量输入至经过训练的预测模型中,通过经过训练的预测模型,将映射缺陷向量与样本缺陷子集的马氏距离最小的样本缺陷子集所对应的类别,作为待预测软件对应的缺陷预测结,从而,可以得到准确性更高的待预测软件对应的预测结果。

请参阅图5,在其中一个实施例中,还包括:

样本向量集构建模块421,用于对已知的样本软件的软件模块源代码进行静态度量,构成样本向量,各所述样本向量组成样本向量集;

样本协方差确定模块422,用于根据所述样本向量集的样本缺陷子集确定所述样本缺陷子集的协方差矩阵;

投影矩阵确定模块423,用于根据所述样本缺陷子集的协方差矩阵,将所述样本缺陷子集之间的相对熵距离的几何均值最大的投影矩阵确定为所述预设投影矩阵。

请参阅图6,在其中一个实施例中,还包括:

样本向量映射模块441,用于将所述样本向量集通过所述预设投影矩阵映射到几何空间中,得到映射向量集;

映射协方差确定模块442,用于根据所述样本缺陷子集对应的所述映射向量集的映射缺陷子集确定映射后的所述样本缺陷子集的协方差矩阵;

矩阵特征分解模块443,用于对映射后的所述样本缺陷子集的协方差矩阵进行特征分解,确定映射后的所述样本缺陷子集的协方差矩阵的特征值及特征向量;

预测模型确定模块444,用于根据所述映射后的所述样本缺陷子集的协方差矩阵的特征值及特征向量对预测模型进行特征分解,得到所述经过训练的预测模型。

在其中一个实施例中,所述在经过训练的预测模型中所述映射缺陷向量与所述样本缺陷子集的马氏距离表示为:

dc(y,σc)表示映射缺陷向量与样本缺陷子集的马氏距离;λc=diag[λc1,...,λcd],其中,λcj,j=1,...,d是映射后的样本缺陷子集的协方差矩阵的特征值;其中,j=1,...,d是映射后的样本缺陷子集的协方差矩阵的特征向量;d为对软件模块源代码进行静态度量时的度量值的数量;为映射缺陷子集的均值;y为映射缺陷向量。

在其中一个实施例中,所述预设投影矩阵表示为:

其中,w*为预设投影矩阵,c为所述样本向量集的所述样本缺陷子集的个数;dw(pc1||pc2)为在几何空间下的两个所述样本缺陷子集之间的相对熵距离;qc,表示为样本缺陷子集{xci}的先验概率,c为c1、c2、m或n,c1、c2、m、n的取值范围为1至c;α为权重因子。

由于上述装置与上述方法对应,为节约篇幅,对于装置中与方法对应的细节技术特征,在此不作赘述。

以上实施例仅表达了本发明的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出多个变形和改进,这些都属于本发明的保护范围。因此,本发明专利的保护范围应以所附权利要求为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1