一种无监督的软件复杂度评估方法技术

技术编号:23024791 阅读:36 留言:0更新日期:2020-01-03 16:48
本发明专利技术涉及一种本发明专利技术一种无监督的软件复杂度评估方法,其中,包括:步骤一、针对软件程序复杂度的度量,总结提炼常用的程序复杂度度量元;步骤二、基于高斯混合模型的度量元概率归一化,包括:首先,针对数据中的各个度量元的频率分布,使用无监督的最大期望算法进行高斯混合建模,拟合该度量元的概率密度函数,基于该度量元的概率密度函数计算其累积分布函数,使用累积分布函数的值作为该度量元的归一化处理后的数值;步骤三、评估基于AOV网络的软件复杂度。

An unsupervised software complexity evaluation method

【技术实现步骤摘要】
一种无监督的软件复杂度评估方法
本专利技术涉及软件复杂度评估技术,特别涉及无监督的软件复杂度评估方法。
技术介绍
软件复杂度度量作为软件工程的重要组成部分,可为软件的控制和降解、软件测试的资源分配和高质量软件的研制提供支撑。软件复杂性度量作为软件度量的重要分支,可以有效评估软件产品的复杂性。通过复杂性度量对软件复杂性进行预警,可以帮助人们客观地分析和评估软件生命周期不同阶段的复杂度情况,并采取一定的复杂度控制和降解措施,来降低软件缺陷率,提高软件质量。软件复杂度度量元数据是一种客观存在的集合,如何针对客观数据,制定无监督的综合评估模型,成为现阶段软件工程领域的难题。当前软件复杂度相关研究多集中在软件复杂度度量体系,对于软件复杂度的评估研究还比较少,且已有的关于软件复杂度评估大多依赖少量度量元或者人工设置各度量元的超参数权重,工作量大且准确度难以保证。
技术实现思路
本专利技术的目的在于提供一种无监督的软件复杂度评估方法,用于解决上述现有技术的问题。本专利技术一种无监督的软件复杂度评估方法,其中,包括:步骤一、针对软件程序复杂度的度量,总结提炼常用的程序复杂度度量元;步骤二、基于高斯混合模型的度量元概率归一化,包括:首先,针对数据中的各个度量元的频率分布,使用无监督的最大期望算法进行高斯混合建模,拟合该度量元的概率密度函数,基于该度量元的概率密度函数计算其累积分布函数,使用累积分布函数的值作为该度量元的归一化处理后的数值;步骤三、评估基于AOV网络的软件复杂度,包括:在基于高斯混合模型对度量元数据进行概率归一化的基础上,借助AOV网络,基于度量元在软件复杂度评估中的重要程度来赋予不同的权重,通过线性组合来计算软件的整体复杂度,对软件复杂度进行评估。根据本专利技术的无监督的软件复杂度评估方法的一实施例,其中,基于度量元在软件复杂度评估中的重要程度来赋予不同的权重,包括:通过皮尔逊相关系数度量两个变量间的线性相关性,其值在-1与1之间,首先,计算不同度量元间的皮尔逊相关系数,评估其相关关系的大小,得到度量元的皮尔逊相关系数矩阵P;然后,基于线性拟合方法得到不同度量元间线性相关关系的斜率大小,得到度量元的斜率矩阵K;继而,基于皮尔逊相关系数的大小与斜率的大小对斜率进行过滤处理,剔除不相关或者斜率值小于阈值的斜率,得到斜率矩阵T;进而,将斜率矩阵转化为一个有向有环图,度量元作为图中的节点,斜率矩阵中度量元间的斜率作为图中对应边的权重;接下来,通过最大生成树算法将有向有环图转换为AOV网;最后,基于AOV的权重计算每个度量元的影响域,根据度量元影响域的大小分配每个度量元的权重。根据本专利技术的无监督的软件复杂度评估方法的一实施例,其中,基于AOV网络对软件复杂度进行评估包括:输入:归一化后的软件度量样本集为R={R1,R2,...,Rn},其中第i个软件度量样本是共m个度量元,是第i个样本的第j个度量元的归一化度量值,第i个度量元的数据集是j∈[1,m]且j∈N+,N+为正整数;用户设定的域值β和γ;输出:样本各度量元权重集合W={W1,W2,...,Wp};计算不同度量元间的皮尔逊相关系数矩阵P=Pm*m,pab为样本集R中第a个和第b个度量元的数据集Sa、Sb间的皮尔逊相关系数,计算方式见公式(5)所不:(2)计算不同度量元间的斜率矩阵K=Km*m,kab为样本集R中第a个和第b个度量元的数据集Sa、Sb间使用线性拟合方法计算的斜率;(3)斜率矩阵K的过滤处理:当两个度量元间的相关系数pab小于阈值β,或者斜率kab小于γ时,认为第a个和第b个度量元间不具备线性相关关系,置wab=0,得到权重矩阵T=Tm*m,计算方式见公式(6)所示:(4)基于邻接矩阵T构造有向有环图G(N,E);其中N={n1,n2,n3,...,nm},节点ni表示第i个度量元构成的节点;E={...,eab,...}为有向有环图中所有边的集合,其中eab表示度量元a指向度量元b的边且eab的权重等于tab。(5)基于最大生成树算法将有向有环图G(N,E)转换为AOV网(有向无环图)G′(N,E′)。其中表示去除无用边之后得到的有向无环图G′(N,E′)中所有边的集合,eab表示na指向nb的边。每条边权重不变仍为tab;(6)计算AOV网G′(N,E′)中的节点ni(代表第i个度量元),的影响域Ii,得到各节点影响域集合I={I1,I2,...,Im},计算见公式(7)。(7)计算各节点(度量元)的权重W={W1,W2,...,Wm},其中节点ni对应的权重是Wi,计算方式如公式(8)所示。(8)计算软件的复杂度C:C=∑WiRi(9)其中i∈[1,m]且i∈N+。通过以上步骤,即可实现无监督的软件复杂度评估。根据本专利技术的无监督的软件复杂度评估方法的一实施例,其中,β1,取0.8,。根据本专利技术的无监督的软件复杂度评估方法的一实施例,其中,基于高斯混合模型的度量元概率归一化具体包括:(1)进行度量元频率分布高斯混合建模,包括:高斯混合模型是多个高斯分布函数进行线性组合后得到的概率分布模型,高斯混合模型的概率分布如公式(1)所示,任一分模型的高斯分布密度函数如公式(2)所示:其中,πk是系数,πk≥0;在对度量元的频率分布进行高斯混合建模时,选择样本数据似然最大的超参数K值作为最终高斯混合模型的K值,选择算法包括:针对各个K值,首先,使用无监督的最大期望算法进行度量元频率分布的高斯混合建模,计算所有样本数据的似然概率,选择似然概率最大的K值作为高斯混合模型的K值;(2)进行度量元的概率归一化计算包括:分布函数定义为随机变量X取值小于x的累积概率函数,用于描述随机变量落在任一区间上的概率,使用高斯混合分布拟合特征X的概率密度函数p(x)时,X的分布函数如公式(3)所示:使用特征x的分布函数值F(x)作为特征X的归一化处理后的值,进行特征X的概率归一化计算,X取x值的概率越大时,x值越重要;在软件复杂度评估中,首先使用高斯混合模型拟合任一软件度量元的数据,然后计算得到该高斯混合模型的分布函数,则度量元数值对应的分布函数值作为该度量元的概率归一化值,进行度量元数据的归一化,任一软件度量样本X={x1,x2,...,xj,...xm},基于高斯混合模型的度量元概率归一化结果为R={R1,R2,...,Rj,...Rm},其中第j个度量值xj的归一化值Rj的计算方式如公式(4)所示:本专利技术提出一种面向计算机控制系统领域的无监督软件复杂度评估模型。本方法通过研究软件复杂度度量元的概率分布,利用高斯混合模型进行度量元概率归一化;进而,通过皮尔逊相关系数分析度量元间的涌现特征,建立最大权值的AOV网络(activityonvertexnetwork),计算各领域软件度量元的融合概率,一种面向计算机控制系统领域的无监督软件复杂度评估模型本文档来自技高网...

【技术保护点】
1.一种无监督的软件复杂度评估方法,其特征在于,包括:/n步骤一、针对软件程序复杂度的度量,总结提炼常用的程序复杂度度量元;/n步骤二、基于高斯混合模型的度量元概率归一化,包括:/n首先,针对数据中的各个度量元的频率分布,使用无监督的最大期望算法进行高斯混合建模,拟合该度量元的概率密度函数,基于该度量元的概率密度函数计算其累积分布函数,使用累积分布函数的值作为该度量元的归一化处理后的数值;/n步骤三、评估基于AOV网络的软件复杂度,包括:/n在基于高斯混合模型对度量元数据进行概率归一化的基础上,借助AOV网络,基于度量元在软件复杂度评估中的重要程度来赋予不同的权重,通过线性组合来计算软件的整体复杂度,对软件复杂度进行评估。/n

【技术特征摘要】
1.一种无监督的软件复杂度评估方法,其特征在于,包括:
步骤一、针对软件程序复杂度的度量,总结提炼常用的程序复杂度度量元;
步骤二、基于高斯混合模型的度量元概率归一化,包括:
首先,针对数据中的各个度量元的频率分布,使用无监督的最大期望算法进行高斯混合建模,拟合该度量元的概率密度函数,基于该度量元的概率密度函数计算其累积分布函数,使用累积分布函数的值作为该度量元的归一化处理后的数值;
步骤三、评估基于AOV网络的软件复杂度,包括:
在基于高斯混合模型对度量元数据进行概率归一化的基础上,借助AOV网络,基于度量元在软件复杂度评估中的重要程度来赋予不同的权重,通过线性组合来计算软件的整体复杂度,对软件复杂度进行评估。


2.如权利要求1所述的无监督的软件复杂度评估方法,其特征在于,基于度量元在软件复杂度评估中的重要程度来赋予不同的权重,包括:
通过皮尔逊相关系数度量两个变量间的线性相关性,其值在-1与1之间,首先,计算不同度量元间的皮尔逊相关系数,评估其相关关系的大小,得到度量元的皮尔逊相关系数矩阵P;然后,基于线性拟合方法得到不同度量元间线性相关关系的斜率大小,得到度量元的斜率矩阵K;继而,基于皮尔逊相关系数的大小与斜率的大小对斜率进行过滤处理,剔除不相关或者斜率值小于阈值的斜率,得到斜率矩阵T;进而,将斜率矩阵转化为一个有向有环图,度量元作为图中的节点,斜率矩阵中度量元间的斜率作为图中对应边的权重;接下来,通过最大生成树算法将有向有环图转换为AOV网;最后,基于AOV的权重计算每个度量元的影响域,根据度量元影响域的大小分配每个度量元的权重。


3.如权利要求2所述的无监督的软件复杂度评估方法,其特征在于,基于AOV网络对软件复杂度进行评估包括:
输入:归一化后的软件度量样本集为R={R1,R2,...,Rn},其中第i个软件度量样本是共m个度量元,是第i个样本的第j个度量元的归一化度量值,第i个度量元的数据集是j∈[1,m]且j∈N+,N+为正整数;用户设定的域值β和γ;
输出:样本各度量元权重集合W={W1,W2,...,Wp};
计算不同度量元间的皮尔逊相关系数矩阵P=Pm*m,pab为样本集R中第a个和第b个度量元的数据集Sa、Sb间的皮尔逊相关系数,计算方式见公式(5)所示:



(2)计算不同度量元间的斜率矩阵K=Km*m,kab为样本集R中第a个和第b个度量元的数据集Sa、Sb间使用线性拟合方法计算的斜率;
(3)斜率矩阵K的过滤处理:当两个度量元间的相关系数pab小于阈值β,或者斜率kab小于γ时,认为第a个和第b个度量元间不具备线性相关关系,置wab=0,得到权重矩阵T=Tm*m,计算方式见公式(6)所示:



(4)基于邻接矩阵T构造有向有环图G(N,E);其中N={n1,n2,n3,...,...

【专利技术属性】
技术研发人员:柯文俊王坤龙杨雨婷陈旭陈静
申请(专利权)人:北京计算机技术及应用研究所
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1