一种基于演进历史的软件架构腐化预测方法、装置及设备制造方法及图纸

技术编号:38022089 阅读:15 留言:0更新日期:2023-06-30 10:49
本发明专利技术涉及软件度量与评估技术领域,具体涉及一种基于演进历史的软件架构腐化预测方法、装置及设备,其中方法包括如下步骤:基于演进历史提取软件架构每次演进所执行的演进操作,按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;计算演进前后所述软件架构的质量属性并基于其计算所述软件架构的腐化度;基于所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;提取预演进软件架构的信息,其中,所述信息包括所述预演进架构的演进操作和质量属性;基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。本发明专利技术从软件架构的特性、质量及演进方案出发预测其腐化,使预测结果具有较高的针对性、直观性和准确性。性和准确性。性和准确性。

【技术实现步骤摘要】
一种基于演进历史的软件架构腐化预测方法、装置及设备


[0001]本专利技术涉及软件度量与评估
,具体涉及一种基于演进历史的软件架构腐化预测方法、装置及设备。

技术介绍

[0002]软件架构是软件的重要组成部分。当软件架构发生腐化时,它会造成降低软件的质量、性能等负面影响。因此,在软件架构演进前,基于软件架构的演进历史数据预测当前演进方案是否会造成软件架构腐化,对避免软件架构腐化和节约演进成本具有重要的意义。然而,目前行业内并无能够有效预测软件架构腐化的技术方案。
[0003]有鉴于此,本专利技术提出一种基于演进历史的软件架构腐化预测方法。

技术实现思路

[0004]本专利技术的目的在于提供一种基于演进历史的软件架构腐化预测方法、装置及设备,用以解决现有技术中缺少预测软件架构腐化方法的问题,以达到能够有效、准确地预测软件架构腐化度的技术效果。
[0005]为实现上述目的,本专利技术提供如下方案:
[0006]本申请的第一个方面,提供了一种基于演进历史的软件架构腐化预测方法,包括如下步骤:
[0007]基于演进历史提取软件架构每次演进所执行的演进操作;其中,所述演进历史具有多个版本且版本间具有差异性;
[0008]按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;其中,所述演进操作的类型包括增加新功能、提升现有功能和修复故障中的至少一种;
[0009]分别计算演进前及演进后所述软件架构的质量属性;
[0010]基于演进前及演进后所述质量属性,计算所述软件架构的腐化度;
[0011]基于分类后的所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;其中,所述腐化预测模型为描述所述腐化度依赖于所述演进操作和所述质量属性的多元回归方程;
[0012]提取预演进软件架构的信息,其中,所述信息包括所述预演进架构的演进操作和质量属性;
[0013]基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。
[0014]进一步的,所述质量属性包括易理解性、易修改性和易测试性中的至少一种。
[0015]进一步的,所述分别计算演进前及演进后所述软件架构的质量属性,包括:
[0016]计算所述软件架构的易理解性:
[0017][0018]式中,U表示当前软件架构的易理解性,n表示当前软件架构中的组件数,C
i
表示当前软件架构中第i个组件,C
j
表示当前软件架构中第j个组件,f(C
i
,C
j
)表示C
i
与C
j
的调用关系,当C
i
调用了C
j
,则f(C
i
,C
j
)的值为1,否则,f(C
i
,C
j
)的值为0,符号∧表示调用关系;
[0019]计算所述软件架构的易修改性:
[0020][0021]式中,M表示当前软件架构的易修改性,n表示当前软件架构中的组件数,C
i
表示当前软件架构中第i个组件,g(C
i
)表示C
i
在组件层的调用深度;
[0022]计算所述软件架构的易测试性:
[0023][0024]式中,T表示当前软件架构的易测试性,n表示当前软件架构中的组件数,C
i
表示当前软件架构中第i个组件,h(C
i
)表示C
i
是否需要驱动模块,如果需要,h(C
i
)的值为1,否则h(C
i
)的值为0;
[0025]基于上述三个计算公式分别计算获得演进前及演进后软件架构的易理解性、易测试性和易修改性的度量值。
[0026]进一步的,所述基于演进操作,计算所述软件架构的腐化度,包括:
[0027]根据如下公式计算腐化度ED(a,b):
[0028][0029]式中,a表示演进前的软件架构,b表示演进后的软件架构,ED(a,b)表示a与b各个质量属性的差值的平均值,N是软件架构的质量属性的集合,|N|是N中所包含的元素数,N
i_a
是a的第i个质量属性的度量值,N
i_b
是b的第i个质量属性的度量值
[0030]进一步的,所述基于所述演进操作、所述质量属性和所述腐化度构建腐化预测模型,包括:
[0031]计算所述演进操作、所述质量属性和所述腐化度的权重;
[0032]基于所述演进操作、所述质量属性和所述腐化度的权重构建腐化预测模型:
[0033]E=w1*U+w2*M+w3*T+w4*A+w5*I+w6*F+C
[0034]式中,E表示软件架构腐化度,w1表示易理解性的权重,w2表示易修改性的权重,w3表示易测试性的权重,w4表示增加新功能的权重,w5表示提升现有功能的权重,w6表示修复故障的权重,C表示一个常数。
[0035]进一步的,所述软件架构以组件依赖关系图的形式表示。
[0036]进一步的,所述演进历史的版本数量不少于9个。
[0037]本申请的第二个方面,提供一种基于演进历史的软件架构腐化预测装置,包括:
[0038]提取模块,基于演进历史提取软件架构每次演进所执行的演进操作;其中,所述演进历史具有多个版本且版本间具有差异性;
[0039]记录模块,用于按所述演进操作在演进中的功能分类记录所述演进操作的类型及
数量;其中,所述演进操作的类型包括增加新功能、提升现有功能和修复故障中的至少一种;
[0040]第一计算模块,用于分别计算演进前及演进后所述软件架构的质量属性;
[0041]第二计算模块,用于基于演进前及演进后所述质量属性,计算所述软件架构的腐化度;
[0042]模型构建模块,用于基于分类后的所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;其中,所述腐化预测模型为描述所述腐化度依赖于所述演进操作和所述质量属性的多元回归方程;
[0043]提取模块,用于提取预演进软件架构的信息,其中,所述信息包括所述预演进架构的演进操作和质量属性;
[0044]第三计算模块,用于基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。
[0045]本申请的第三个方面,还提供一种电子设备,包括:
[0046]至少一个处理器;
[0047]与所述至少一个处理器通信连接的存储器;
[0048]其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请第一个方面所述的方法。
[0049]本申请的第四个方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请第一个方面所述的方法。
[0050]有益效果:
[0本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种基于演进历史的软件架构腐化预测方法,其特征在于,包括如下步骤:基于演进历史提取软件架构每次演进所执行的演进操作;其中,所述演进历史具有多个版本且版本间具有差异性;按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;其中,所述演进操作的类型包括增加新功能、提升现有功能和修复故障中的至少一种;分别计算演进前及演进后所述软件架构的质量属性;基于演进前及演进后所述质量属性,计算所述软件架构的腐化度;基于分类后的所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;其中,所述腐化预测模型为描述所述腐化度依赖于所述演进操作和所述质量属性的多元回归方程;提取预演进软件架构的信息;其中,所述信息包括所述预演进架构的演进操作和质量属性;基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。2.根据权利要求1所述的方法,其特征在于,所述质量属性包括易理解性、易修改性和易测试性中的至少一种。3.根据权利要求2所述的方法,其特征在于,所述分别计算演进前及演进后所述软件架构的质量属性,包括:计算所述软件架构的易理解性:式中,U表示当前软件架构的易理解性,n表示当前软件架构中的组件数,C
i
表示当前软件架构中第i个组件,C
j
表示当前软件架构中第j个组件,f(C
i
,C
j
)表示C
i
与C
j
的调用关系,当C
i
调用了C
j
,则f(C
i
,C
j
)的值为1,否则,f(C
i
,C
j
)的值为0,符号∧表示调用关系;计算所述软件架构的易修改性:式中,M表示当前软件架构的易修改性,n表示当前软件架构中的组件数,C
i
表示当前软件架构中第i个组件,g(C
i
)表示C
i
在组件层的调用深度;计算所述软件架构的易测试性:式中,T表示当前软件架构的易测试性,n表示当前软件架构中的组件数,C
i
表示当前软件架构中第i个组件,h(C
i
)表示C
i
是否需要驱动模块,如果需要,h(C
i
)的值为1,否则h(C
i
)的值为0;基于上述三个计算公式分别计算获得演进前及演进后软件架构的易理解性、易测试性和易修改性的度量值。4.根据权利要求...

【专利技术属性】
技术研发人员:王桐陈业斌李雪
申请(专利权)人:安徽工业大学
类型:发明
国别省市:

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

1