CN116303026B - 一种基于演进历史的软件架构腐化预测方法、装置及设备 - Google Patents
一种基于演进历史的软件架构腐化预测方法、装置及设备 Download PDFInfo
- Publication number
- CN116303026B CN116303026B CN202310271213.7A CN202310271213A CN116303026B CN 116303026 B CN116303026 B CN 116303026B CN 202310271213 A CN202310271213 A CN 202310271213A CN 116303026 B CN116303026 B CN 116303026B
- Authority
- CN
- China
- Prior art keywords
- evolution
- software architecture
- calculating
- quality
- history
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 41
- 230000015556 catabolic process Effects 0.000 title claims abstract description 36
- 238000006731 degradation reaction Methods 0.000 title claims abstract description 36
- 238000000354 decomposition reaction Methods 0.000 claims abstract description 27
- 230000006870 function Effects 0.000 claims description 19
- 238000012986 modification Methods 0.000 claims description 15
- 230000004048 modification Effects 0.000 claims description 15
- 238000004364 calculation method Methods 0.000 claims description 11
- 238000000605 extraction Methods 0.000 claims description 5
- 230000001737 promoting effect Effects 0.000 claims description 5
- 238000010276 construction Methods 0.000 claims description 3
- 238000011161 development Methods 0.000 abstract description 6
- 238000011156 evaluation Methods 0.000 abstract description 2
- 230000001419 dependent effect Effects 0.000 description 4
- 230000000694 effects Effects 0.000 description 4
- 238000003058 natural language processing Methods 0.000 description 4
- 238000005259 measurement Methods 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 230000008439 repair process Effects 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 2
- 230000008859 change Effects 0.000 description 2
- 238000004590 computer program Methods 0.000 description 2
- 238000005260 corrosion Methods 0.000 description 2
- 230000007797 corrosion Effects 0.000 description 2
- 230000002950 deficient Effects 0.000 description 2
- 238000012417 linear regression Methods 0.000 description 2
- 230000006978 adaptation Effects 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 238000012545 processing Methods 0.000 description 1
- 238000011160 research Methods 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3604—Software analysis for verifying properties of programs
- G06F11/3608—Software analysis for verifying properties of programs using formal methods, e.g. model checking, abstract interpretation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Quality & Reliability (AREA)
- Computer Security & Cryptography (AREA)
- Stored Programmes (AREA)
Abstract
本发明涉及软件度量与评估技术领域,具体涉及一种基于演进历史的软件架构腐化预测方法、装置及设备,其中方法包括如下步骤:基于演进历史提取软件架构每次演进所执行的演进操作,按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;计算演进前后所述软件架构的质量属性并基于其计算所述软件架构的腐化度;基于所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;提取预演进软件架构的信息,其中,所述信息包括所述预演进架构的演进操作和质量属性;基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。本发明从软件架构的特性、质量及演进方案出发预测其腐化,使预测结果具有较高的针对性、直观性和准确性。
Description
技术领域
本发明涉及软件度量与评估技术领域,具体涉及一种基于演进历史的软件架构腐化预测方法、装置及设备。
背景技术
软件架构是软件的重要组成部分。当软件架构发生腐化时,它会造成降低软件的质量、性能等负面影响。因此,在软件架构演进前,基于软件架构的演进历史数据预测当前演进方案是否会造成软件架构腐化,对避免软件架构腐化和节约演进成本具有重要的意义。然而,目前行业内并无能够有效预测软件架构腐化的技术方案。
有鉴于此,本发明提出一种基于演进历史的软件架构腐化预测方法。
发明内容
本发明的目的在于提供一种基于演进历史的软件架构腐化预测方法、装置及设备,用以解决现有技术中缺少预测软件架构腐化方法的问题,以达到能够有效、准确地预测软件架构腐化度的技术效果。
为实现上述目的,本发明提供如下方案:
本申请的第一个方面,提供了一种基于演进历史的软件架构腐化预测方法,包括如下步骤:
基于演进历史提取软件架构每次演进所执行的演进操作;其中,所述演进历史具有多个版本且版本间具有差异性;
按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;其中,所述演进操作的类型包括增加新功能、提升现有功能和修复故障中的至少一种;
分别计算演进前及演进后所述软件架构的质量属性;
基于演进前及演进后所述质量属性,计算所述软件架构的腐化度;
基于分类后的所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;其中,所述腐化预测模型为描述所述腐化度依赖于所述演进操作和所述质量属性的多元回归方程;
提取预演进软件架构的信息,其中,所述信息包括所述预演进架构的演进操作和质量属性;
基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。
进一步的,所述质量属性包括易理解性、易修改性和易测试性中的至少一种。
进一步的,所述分别计算演进前及演进后所述软件架构的质量属性,包括:
计算所述软件架构的易理解性:
式中,U表示当前软件架构的易理解性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,Cj表示当前软件架构中第j个组件,f(Ci,Cj)表示Ci与Cj的调用关系,当Ci调用了Cj,则f(Ci,Cj)的值为1,否则,f(Ci,Cj)的值为0,符号∧表示调用关系;
计算所述软件架构的易修改性:
式中,M表示当前软件架构的易修改性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,g(Ci)表示Ci在组件层的调用深度;
计算所述软件架构的易测试性:
式中,T表示当前软件架构的易测试性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,h(Ci)表示Ci是否需要驱动模块,如果需要,h(Ci)的值为1,否则h(Ci)的值为0;
基于上述三个计算公式分别计算获得演进前及演进后软件架构的易理解性、易测试性和易修改性的度量值。
进一步的,所述基于演进操作,计算所述软件架构的腐化度,包括:
根据如下公式计算腐化度ED(a,b):
式中,a表示演进前的软件架构,b表示演进后的软件架构,ED(a,b)表示a与b各个质量属性的差值的平均值,N是软件架构的质量属性的集合,|N|是N中所包含的元素数,Ni_a是a的第i个质量属性的度量值,Ni_b是b的第i个质量属性的度量值
进一步的,所述基于所述演进操作、所述质量属性和所述腐化度构建腐化预测模型,包括:
计算所述演进操作、所述质量属性和所述腐化度的权重;
基于所述演进操作、所述质量属性和所述腐化度的权重构建腐化预测模型:
E=w1*U+w2*M+w3*T+w4*A+w5*I+w6*F+C
式中,E表示软件架构腐化度,w1表示易理解性的权重,w2表示易修改性的权重,w3表示易测试性的权重,w4表示增加新功能的权重,w5表示提升现有功能的权重,w6表示修复故障的权重,C表示一个常数。
进一步的,所述软件架构以组件依赖关系图的形式表示。
进一步的,所述演进历史的版本数量不少于9个。
本申请的第二个方面,提供一种基于演进历史的软件架构腐化预测装置,包括:
提取模块,基于演进历史提取软件架构每次演进所执行的演进操作;其中,所述演进历史具有多个版本且版本间具有差异性;
记录模块,用于按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;其中,所述演进操作的类型包括增加新功能、提升现有功能和修复故障中的至少一种;
第一计算模块,用于分别计算演进前及演进后所述软件架构的质量属性;
第二计算模块,用于基于演进前及演进后所述质量属性,计算所述软件架构的腐化度;
模型构建模块,用于基于分类后的所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;其中,所述腐化预测模型为描述所述腐化度依赖于所述演进操作和所述质量属性的多元回归方程;
提取模块,用于提取预演进软件架构的信息,其中,所述信息包括所述预演进架构的演进操作和质量属性;
第三计算模块,用于基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。
本申请的第三个方面,还提供一种电子设备,包括:
至少一个处理器;
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本申请第一个方面所述的方法。
本申请的第四个方面,提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本申请第一个方面所述的方法。
有益效果:
1、由以上技术方案可知,本发明的技术方案提供了一种基于演进历史的软件架构腐化预测方法、装置及设备,从软件架构自身角度出发预测其腐蚀,使预测结果具有更高的针对性;
2、本发明基于软件架构的质量度量软件架构的腐化度,使腐化度预测结果具有更好的直观性;
3、本发明基于软件架构的演进操作预测其腐化度,腐化预测模型的参数囊括了多项影响软件架构演进效果的因素以减小预测误差,提高了预测结果的准确性。
应当理解,前述构思以及在下面更加详细地描述的额外构思的所有组合只要在这样的构思不相互矛盾的情况下都可以被视为本公开的发明主题的一部分。
结合附图从下面的描述中可以更加全面地理解本发明教导的前述和其他方面、实施例和特征。本发明的其他附加方面例如示例性实施方式的特征和/或有益效果将在下面的描述中显见,或通过根据本发明教导的具体实施方式的实践中得知。
附图说明
附图不意在按比例绘制。在附图中,在各个图中示出的每个相同或近似相同的组成部分可以用相同的标号表示。为了清晰起见,在每个图中,并非每个组成部分均被标记。现在,将通过例子并参考附图来描述本发明的各个方面的实施例,其中:
图1是本申请实施例中的方法流程示意图。
具体实施方式
为使本发明实施例的目的和技术方案更加清楚,下面将结合本发明实施例,对本发明的技术方案进行清楚、完整地描述。显然,所描述的实施例是本发明的一部分实施例,而不是全部的实施例。基于所描述的本发明的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本发明保护的范围。
本技术领域技术人员可以理解,除非另外定义,这里使用的所有术语(包括技术术语和科学术语)具有与本发明所属领域中的普通技术人员的一般理解相同的意义。还应该理解的是,诸如通用字典中定义的那些术语应该被理解为具有与现有技术的上下文中的意义一致的意义,并且除非像这里一样定义,不会用理想化或过于正式的含义来解释。
软件产品经一段时间的运转后,通常因需求的调整、开发人员的变动而造成项目规模不断变大、代码库混乱及错误积累等原因,最终导致软件构造腐化且腐化程度逐渐难以控制及维护。
针对上述提到的软件产品运转过程中容易出现的现象,现有的手段通常是对其架构进行局部重构或全局重构,但重构意味着大量人力物力的投入。因此,在软件架构演进前,基于软件架构的演进历史数据预测当前演进方案是否会造成软件架构腐化,对避免软件架构腐化和节约演进成本具有重要的意义。但现阶段中,针对这一部分的研究比较匮乏,能够准确预测软件架构腐化度的方法仍旧缺位,具体情况如下:
(1)缺少预测软件架构腐化的方法。软件架构是源代码的高级抽象,因此在质量度量、腐化分析、成本预估等方面,它与软件源代码存在较大不同,从而需要基于软件架构的特性预估软件架构的腐化;
(2)缺少将软件架构质量与软件架构腐化相关联的方法。软件架构腐化的衡量标准是软件架构演进后软件架构的质量是否下降,然而目前缺少将软件架构质量与软件架构腐化相关联的方法;
(3)缺少将演进方案与软件架构腐化相关联的方法。软件架构是否会发生腐化取决于演进过程中进行了哪些演进操作,然而目前缺少将演进方案与软件架构腐化相关联的方法。
基于上述现况,本发明的实施例从软件架构的特性、质量及演进方案出发,建立预测模型时将多个影响软件架构演进效果的因素列为预测模型的参数,提高模型可靠性,保障其在具体检验软件架构的腐化度时能够提供较为准确的结果。
本发明的实施例提供一种基于演进历史的软件架构腐化预测方法、装置及设备,以下分别进行说明。
如图1所示,为本发明实施例的一种基于演进历史的软件架构腐化预测方法流程示意图,该方法包括如下步骤:
步骤101、基于演进历史提取软件架构每次演进所执行的演进操作;其中,所述演进历史具有多个版本且版本间具有差异性。
步骤102、按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;其中,所述演进操作的类型包括增加新功能、提升现有功能和修复故障中的至少一种。
步骤103、分别计算演进前及演进后所述软件架构的质量属性。
步骤104、基于演进前及演进后所述质量属性,计算所述软件架构的腐化度。
步骤105、基于分类后的所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;其中,所述腐化预测模型为描述所述腐化度依赖于所述演进操作和所述质量属性的多元回归方程。
步骤106、提取预演进软件架构的信息;其中,所述信息包括所述预演进架构的演进操作和质量属性。
步骤107、基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。
为便于描述,本实施例利用如下表1中的9个版本的演进历史进行示例说明,在某些实施例中,所述步骤101中所述演进历史的版本数量并不局限于上述中的9个,为保证计算模型的精确率,所选择的最小样本量应不小于9个。即步骤S101中所使用的所述演进历史的版本数量不少于9个,在具体实施时,可增加所述演进历史的版本统计样本数量以进一步提高后续基于所述演进历史建立的腐化预测模型的预测精度。
上述9个版本的演进历史中各类演进操作的数量信息如下表1所示:
表1各类演进操作的数量信息
在某些实施例中,所述步骤103中的所述质量属性包括易理解性、易修改性和易测试性中的至少一种。
为提高腐化度计算精确度,以进一步保障预测结果的准确性,本实施例中,所述质量属性包括易理解性、易修改性和易测试性三种,计算上述三种演进前及演进后所述软件架构的分别包括如下步骤:
计算所述软件架构的易理解性:
式中,U表示当前软件架构的易理解性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,Cj表示当前软件架构中第j个组件,f(Ci,Cj)表示Ci与Cj的调用关系,当Ci调用了Cj,则f(Ci,Cj)的值为1,否则,f(Ci,Cj)的值为0,符号∧表示调用关系。
计算所述软件架构的易修改性:
式中,M表示当前软件架构的易修改性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,g(Ci)表示Ci在组件层的调用深度。
计算所述软件架构的易测试性:
式中,T表示当前软件架构的易测试性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,h(Ci)表示Ci是否需要驱动模块,如果需要,h(Ci)的值为1,否则h(Ci)的值为0。
经上述三种质量属性的计算过程,分别得出表1中版本1至版本9的质量属性的度量值,具体数据如下表2所示:
表2质量属性的度量值
易理解性U | 易修改性M | 易测试性T | |
版本1 | 0.61 | 0.8 | 0.51 |
版本2 | 0.67 | 0.7 | 0.77 |
版本3 | 0.55 | 1.05 | 0.59 |
版本4 | 0.8 | 0.76 | 0.64 |
版本5 | 0.7 | 0.86 | 0.59 |
版本6 | 0.45 | 0.87 | 0.94 |
版本7 | 0.5 | 0.88 | 0.71 |
版本8 | 0.73 | 0.8 | 0.76 |
版本9 | 0.54 | 0.64 | 0.61 |
在某些实施例中,所述步骤104具体过程如下:
根据如下公式计算腐化度ED(a,b):
式中,a表示演进前的软件架构,b表示演进后的软件架构,ED(a,b)表示a与b各个质量属性的差值的平均值,N是软件架构的质量属性的集合,|N|是N中所包含的元素数,Ni_a是a的第i个质量属性的度量值,Ni_b是b的第i个质量属性的度量值。
通过上述公式,可计算出软件架构的腐化度,腐化度小于等于0时,软件架构没有发生腐化现象,当腐化度大于0时,软件架构被腐化,且值越高,腐化的程度越严重。
本实施例中,仍以上述9个版本的质量属性及其在步骤103中计算出的度量值作为预测模型的参数,经上述步骤104后计算得到版本1至版本9分别对应的软件架构腐化度,具体数据如下表3所示:
表3软件架构腐化度
版本1 | 版本2 | 版本3 | 版本4 | 版本5 | 版本6 | 版本7 | 版本8 | 版本9 |
0.10631 | 0.20457 | 0.34007 | 0.21468 | 0.08808 | 0.13639 | 0.40116 | 0.52717 | 0.46724 |
在某些实施例中,所述步骤105具体过程如下:
基于所述腐化度计算所述演进操作和所述质量属性的权重;
基于分类后的所述演进操作、所述质量属性的权重和所述腐化度构建腐化预测模型:
E=w1*U+w2*M+w3*T+w4*A+w5*I+w6*F+C
由上式可知,本实施例中,所述腐化预测模型为描述所述腐化度依赖于所述演进操作和所述质量属性的六元线性回归模型,所述演进操作、所述质量属性的权重分别对应式中的回归系数。式中,E表示软件架构腐化度,w1表示易理解性U的回归系数,w2表示易修改性M的回归系数,w3表示易测试性T的回归系数,w4表示增加新功能A的回归系数,w5表示提升现有功能I的回归系数,w6表示修复故障F的回归系数,C表示一个常数。需说明的是,所述腐化预测模型并不局限于上述提到的六元线性回归模型,式中以U、M和A等为代表的因变量的数量在具体实施时可按需选择,即,若将共p个演进操作和质量属性考虑在内,则相应建立的腐化预测模型为p元回归模型。
在本实施例中,仍以上述9个版本的演进历史为示例,结合上述步骤101~步骤104中获得的所述演进操作、所述质量属性和所述腐化度的数据,计算得到所述腐化预测模型中的各个参数值,具体数据如下表4所示:
表4软件架构腐蚀预测模型中各个参数值
w1 | w2 | w3 | w4 | w5 | w6 | C |
0.3276 | 0.3814 | 0.0443 | -0.0224 | -0.0812 | -0.0520 | 0.2079 |
依上表4数据获得所述腐化预测模型:
E=0.3276U+0.3814M+0.0443T-0.0224A-0.0812T-0.0520I+0.2079
在某些实施例中,所述步骤106以某个预演进软件架构进行示例说明,该预演进软件架构的信息如下表5所示:
表5预演进的软件架构的信息
易理解性U | 易修改性M | 易测试性T | 增加新功能A | 提升现有功能I | 修复故障F |
0.67 | 0.57 | 0.44 | 0 | 3 | 2 |
在某些实施例中,仍以上述步骤106中示例的预演进软件架构及其表5中的信息为例,基于所述步骤105中的获得的所述腐化预测模型计算该预演进软件架构的腐化度:
E=w1*U+w2*M+w3*T+w4*A+w5*I+w6*F+C
=0.3276*0.67+0.3814*0.57+0.0443*0.44-0.0224*0-0.0812*3-0.0520*2+0.2079=0.30736
由度量结果可知,基于当前软件架构的信息所预测的该软件架构的腐化度为0.30736,该软件架构出现腐化。
基于上述的基于自然语言处理的分布式程序切片方法,本发明实施例还提供一种基于自然语言处理的分布式程序切片装置。
示例性的,基于自然语言处理的分布式程序切片方法可以被分割成多个模块,多个模块被存储在存储器中,由处理器执行完成本发明。所述多个模块或单元可以是能够完成特定功能的一系列计算机程序指令段,该指令段用于描述基于自然语言处理的分布式程序切片方法的执行过程。例如,记录模块、提取模块等,各模块的具体功能如下:
记录模块,用于基于演进历史提取软件架构每次演进所执行的演进操作,按所述演进操作在演进中的功能分类记录其数量;其中,所述演进历史具有多个版本且版本间具有差异性;
第一计算模块,用于分别计算演进前及演进后所述软件架构的质量属性;
第二计算模块,用于基于演进前及演进后所述质量属性,计算所述软件架构的腐化度;
模型构建模块,用于基于所述演进操作、所述质量属性和所述腐化度构建腐化预测模型;
提取模块,用于提取预演进软件架构的信息,其中,所述信息包括所述预演进架构的演进操作和质量属性;
第三计算模块,用于基于所述腐化预测模型和所述信息计算所述预演进架构的腐化度。
相应的,本发明实施例还提供一种电子设备,包括:
至少一个处理器;
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明任一实施例中所述的方法。
这些计算机程序也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤,对应与不同的步骤可以通过不同的模块来实现。
上述程序可以运行在处理器中,或者也可以存储在存储器中(或称为计算机可读介质),计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
相应的,本发明还提供一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行本发明任一实施例中所述的方法。
虽然本发明已以较佳实施例揭露如上,然其并非用以限定本发明。本发明所属技术领域中具有通常知识者,在不脱离本发明的精神和范围内,当可作各种的更动与润饰。因此,本发明的保护范围当视权利要求书所界定者为准。
Claims (6)
1.一种基于演进历史的软件架构腐化预测方法,其特征在于,包括如下步骤:
基于演进历史提取软件架构每次演进所执行的演进操作;其中,所述演进历史具有多个版本且版本间具有差异性;
按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;其中,所述演进操作的类型包括增加新功能、提升现有功能和修复故障中的至少一种;
分别计算演进前及演进后所述软件架构的质量属性,所述质量属性包括易理解性、易修改性和易测试性中的至少一种:
计算所述质量属性中的易理解性:
上式中,U表示当前软件架构的易理解性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,Cj表示当前软件架构中第j个组件,f(Ci,Cj)表示Ci与Cj的调用关系,当Ci调用了Cj,则f(Ci,Cj)的值为1,否则,f(Ci,Cj)的值为0;
计算所述质量属性中的易修改性:
上式中,M表示当前软件架构的易修改性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,g(Ci)表示Ci在组件层的调用深度;
计算所述质量属性中的易测试性:
上式中,T表示当前软件架构的易测试性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,h(Ci)表示Ci是否需要驱动模块,如果需要,h(Ci)的值为1,否则h(Ci)的值为0;
基于演进前及演进后所述质量属性,计算软件架构从演进前版本至演进后版本所构成的演进历史所对应的所述软件架构的腐化度;
上式中,a表示演进历史所对应的演进前的软件架构,b表示演进历史所对应的演进后的软件架构,其中,N是软件架构的质量属性的集合,|N|是N中所包含的元素数,Ni_a是a的第i个质量属性的度量值,Ni_b是b的第i个质量属性的度量值;
基于分类后的所述演进操作、所述质量属性和所述腐化度构建腐化预测模型:
E=w1*U+w2*M+w3*T+w4*A+w5*I+w6*F+C
上式中,E表示软件架构腐化度,w1表示易理解性U的权重,w2表示易修改性M的权重,w3表示易测试性T的权重,w4表示增加新功能A的权重,w5表示提升现有功能I的权重,w6表示修复故障F的权重,C表示一个常数;
提取预演进软件架构的信息;其中,所述信息包括所述预演进软件架构的演进操作和质量属性;
基于所述腐化预测模型和所述信息计算所述预演进软件架构的腐化度。
2.根据权利要求1所述的方法,其特征在于,所述软件架构以组件依赖关系图的形式表示。
3.根据权利要求1所述的方法,其特征在于,所述演进历史的版本数量不少于9个。
4.一种基于演进历史的软件架构腐化预测装置,其特征在于,包括:
提取模块,基于演进历史提取软件架构每次演进所执行的演进操作;其中,所述演进历史具有多个版本且版本间具有差异性;
记录模块,用于按所述演进操作在演进中的功能分类记录所述演进操作的类型及数量;其中,所述演进操作的类型包括增加新功能、提升现有功能和修复故障中的至少一种;
第一计算模块,用于分别计算演进前及演进后所述软件架构的质量属性,所述质量属性包括易理解性、易修改性和易测试性中的至少一种:
计算所述质量属性中的易理解性:
上式中,U表示当前软件架构的易理解性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,Cj表示当前软件架构中第j个组件,f(Ci,Cj)表示Ci与Cj的调用关系,当Ci调用了Cj,则f(Ci,Cj)的值为1,否则,f(Ci,Cj)的值为0;
计算所述质量属性中的易修改性:
上式中,M表示当前软件架构的易修改性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,g(Ci)表示Ci在组件层的调用深度;
计算所述质量属性中的易测试性:
上式中,T表示当前软件架构的易测试性,n表示当前软件架构中的组件数,Ci表示当前软件架构中第i个组件,h(Ci)表示Ci是否需要驱动模块,如果需要,h(Ci)的值为1,否则h(Ci)的值为0;
第二计算模块,用于基于演进前及演进后所述质量属性,计算所述软件架构从演进前版本至演进后版本所构成的演进历史所对应的所述软件架构的腐化度:
上式中,a表示演进历史所对应的演进前的软件架构,b表示演进历史所对应的演进后的软件架构,其中,N是软件架构的质量属性的集合,|N|是N中所包含的元素数,Ni_a是a的第i个质量属性的度量值,Ni_b是b的第i个质量属性的度量值;
模型构建模块,用于基于分类后的所述演进操作、所述质量属性和所述腐化度构建腐化预测模型:
E=w1*U+w2*M+w3*T+w4*A+w5*I+w6*F+C
上式中,E表示软件架构腐化度,w1表示易理解性U的权重,w2表示易修改性M的权重,w3表示易测试性T的权重,w4表示增加新功能A的权重,w5表示提升现有功能I的权重,w6表示修复故障F的权重,C表示一个常数;
提取模块,用于提取预演进软件架构的信息,其中,所述信息包括所述预演进软件架构的演进操作和质量属性;
第三计算模块,用于基于所述腐化预测模型和所述信息计算所述预演进软件架构的腐化度。
5.一种电子设备,包括:
至少一个处理器;
与所述至少一个处理器通信连接的存储器;
其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至3中任一项所述的方法。
6.一种存储有计算机指令的非瞬时计算机可读存储介质,所述计算机指令用于使所述计算机执行权利要求1至3中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310271213.7A CN116303026B (zh) | 2023-03-20 | 2023-03-20 | 一种基于演进历史的软件架构腐化预测方法、装置及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310271213.7A CN116303026B (zh) | 2023-03-20 | 2023-03-20 | 一种基于演进历史的软件架构腐化预测方法、装置及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116303026A CN116303026A (zh) | 2023-06-23 |
CN116303026B true CN116303026B (zh) | 2024-01-23 |
Family
ID=86818284
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310271213.7A Active CN116303026B (zh) | 2023-03-20 | 2023-03-20 | 一种基于演进历史的软件架构腐化预测方法、装置及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116303026B (zh) |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893257A (zh) * | 2016-03-30 | 2016-08-24 | 东南大学 | 一种基于演化的软件架构评估方法 |
CN107368303A (zh) * | 2017-06-28 | 2017-11-21 | 东南大学 | 一种基于软件架构的可演进性度量方法 |
CN108614778A (zh) * | 2018-05-10 | 2018-10-02 | 天津大学 | 基于高斯过程回归的安卓App程序演化变更预测方法 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130311229A1 (en) * | 2012-05-16 | 2013-11-21 | Ca, Inc. | Proactive risk assessment for system architecture evolutions |
-
2023
- 2023-03-20 CN CN202310271213.7A patent/CN116303026B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105893257A (zh) * | 2016-03-30 | 2016-08-24 | 东南大学 | 一种基于演化的软件架构评估方法 |
CN107368303A (zh) * | 2017-06-28 | 2017-11-21 | 东南大学 | 一种基于软件架构的可演进性度量方法 |
CN108614778A (zh) * | 2018-05-10 | 2018-10-02 | 天津大学 | 基于高斯过程回归的安卓App程序演化变更预测方法 |
Non-Patent Citations (1)
Title |
---|
"软件结构可持续演进性评估技术研究";王桐;《中国博士学位论文全文数据库(信息科技辑)》(第01期);第12页第1行至第81页第10行 * |
Also Published As
Publication number | Publication date |
---|---|
CN116303026A (zh) | 2023-06-23 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9696786B2 (en) | System and method for optimizing energy consumption by processors | |
US20080114870A1 (en) | Apparatus, system, and method for generating a resource utilization description for a parallel data processing system | |
CN111881023B (zh) | 一种基于多模型对比的软件老化预测方法及装置 | |
CN111400164A (zh) | 一种软件测试方法及装置 | |
CN110209560A (zh) | 数据异常检测方法及检测装置 | |
CN117726240B (zh) | 一种基于卷积神经网络的质量评价分类方法及*** | |
CN111767957A (zh) | 一种日志异常的检测方法、装置、存储介质及电子设备 | |
CN111581036A (zh) | 一种物联网故障检测方法、检测***、存储介质 | |
CN114356577A (zh) | 一种***容量预估方法以及装置 | |
CN114091281A (zh) | 产品寿命预测方法、装置、电子设备及存储介质 | |
CN114726581B (zh) | 一种异常检测方法、装置、电子设备及存储介质 | |
CN110334012B (zh) | 一种风险评估方法及装置 | |
CN116306806A (zh) | 故障诊断模型确定方法、装置及非易失性存储介质 | |
CN116303026B (zh) | 一种基于演进历史的软件架构腐化预测方法、装置及设备 | |
CN110619413A (zh) | 用于评估风力发电机组健康度的方法及装置 | |
CN112783747A (zh) | 一种应用程序的执行时间预测方法及装置 | |
CN116560968A (zh) | 一种基于机器学习的仿真计算时间预测方法、***及设备 | |
CN116682479A (zh) | 一种企业级固态硬盘时延指标的测试方法及测试*** | |
CN116304699A (zh) | 基于新能源多场站短路比的临界样本集生成方法及*** | |
CN111274687B (zh) | 元器件失效率预计方法、装置、计算机设备及存储介质 | |
CN114139625A (zh) | 一种基于退化轨迹曲线分析的零件质量分类方法、*** | |
CN114116482A (zh) | Cad软件稳定性的测试方法及装置、存储介质和处理器 | |
CN115904980B (zh) | 软件架构腐蚀修复成本预估方法、装置、设备和存储介质 | |
Shin et al. | On the use of calling structure information to improve fault prediction | |
WO2022165152A1 (en) | Constructing a statistical model and evaluating model performance |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |