[发明专利]基于类图的软件结构风险评估方法有效
申请号: | 201910509786.2 | 申请日: | 2019-06-13 |
公开(公告)号: | CN110322122B | 公开(公告)日: | 2023-03-24 |
发明(设计)人: | 宋明秋;李旭;谷蔚然 | 申请(专利权)人: | 大连理工大学 |
主分类号: | G06Q10/0635 | 分类号: | G06Q10/0635;G06F8/30 |
代理公司: | 大连理工大学专利中心 21200 | 代理人: | 温福雪;侯明远 |
地址: | 116024 辽*** | 国省代码: | 辽宁;21 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 基于 软件 结构 风险 评估 方法 | ||
1.一种基于类图的软件结构风险评估方法,其特征在于,步骤如下:
(1)软件复杂性分析
基于Halstead度量方法,将方法中的参数分为两类,一类是程序语言基本类型参数;另一类是用户自定义类的类型参数;类的属性也有同样的分类;基于此分类,提出类参数容量的概念和类属性等级的概念;
定义1:类参数容量CPV
CPV=(N1+N2)log2(n1+n2) (1)
其中:N1表示类中出现的所有的基本类型的参数数量,N2表示类中出现的所有自定义类型的参数数量,n1表示类中唯一基本类型的参数数量,n2表示类中唯一自定义类型的参数数量;
定义2:类属性等级CAL
CAL=(2*a2)/ea1*A2 (2)
其中:A2表示类属性中所有的自定义类型属性数量,a1表示类属性中唯一基本类型属性数量,a2表示类属性中唯一自定义类型属性数量;
使用WMC、DIT、ATTS、CPV、CAL五个指标度量一个类的复杂性;
其中WMC、DIT属于抽象指标,ATTS、CPV、CAL属于原始指标;当WMC中的权值设为1时,则WMC表示类中方法的数量,WMC越大,则类被执行的概率越大,在程序中存活的时间就越长,类的功能越明确,越不能被重用;DIT度量了一个类到根节点类的最大继承深度,DIT越大,则类的方法数量可能越多,其行为的复杂性越难预测;ATTS表示类中的属性数量,它与类是否存在缺陷具有强关联性;CPV的计算借鉴了Halstead的思想,旨在预判类所需的参数规模,类所需要的参数越多说明其自身的不确定性越强,与外界的交流越发频繁;CAL的计算借鉴了Halstead中关于程序语言抽象等级的计算思想,旨在突出自定义类型属性使得类不确定性增加的程度;
基本简单类,是指没有属性、没有方法、没有继承关系的类,其复杂性为0;
复杂度指标计算:根据基本简单类的定义,基本简单类的各项指标均为0,基本简单类为指标体系原点;离基本简单类越远,则类的复杂性越高;采用两点间距离的方法复杂度的计算,如公式(3)所示,然后使用公式(4)归一化类的复杂性,保证其值在[0,1]范围内;
化简得:
其中,Complexi表示类i的复杂性,Complexmax表示该软件系统中最大复杂性,Complexmin表示该软件系统中最小复杂性;
(2)软件严重性分析
严重性是衡量故障发生后其造成后果的严重程度;复杂网络中相继故障理论刻画的是节点发生故障后对整体网络造成的损失程度,相继故障理论与严重性具有高度的一致性;
相继故障理论中的节点和边混合动态模型建立在带权网络上,为了建立描述节点故障传播的带权网络,首先需要确定类图网络中各节点边的权值;类间耦合与类发生故障之间存在强关联性;CK度量中的CBO用来刻画类间耦合关系的强弱,采用改进后的CBO指标构建带权网络;
边的权重代表类间关系的强弱,关系越强则其级联效果越显著;将类节点边的权重看作是类间耦合程度的反映;在UML类图中,类耦合有五种关系:泛化、组合、聚合、关联和依赖;这些关系的强弱顺序不同,认为它们的强弱排序结果为:泛化组合聚合关联依赖;对这五种关系的权值分配上采用如下所示:
W泛化=1.0,W组合=0.8,W聚合=0.7,W关联=0.5,W依赖=0.3
简化写法将其记为Wg=1.0,Wc=0.8,Wag=0.7,Was=0.5,Wd=0.3
为了度量类节点间权值,先给出关联耦合度量ACM、依赖耦合度量DCM、泛化耦合度量GCM的定义;
关联耦合度量ACM:ACM是类T与类F所关联的成员数量;
ACM=|{d|T(a)=d∩a∈F(c)}| (5)
其中:F(c)表示类F所有成员变量的集合,T(a)表示类T中成员变量a的类型;
依赖耦合度量DCM:DCM是类P依赖类T中成员的数量;
DCM=|{d|a∈P(m)∩T(a)=d}| (6)
其中:P(m)表示方法m的参数集、局部变量和返回值,T(a)表示类T中成员变量a的类型;
泛化耦合度量GCM:GCM是类c是否继承类F;
其中:R(c)表示类c的父类集合或实现集合;
那么,节点类I与类J连边的权值实际上是度量了相连两个类的耦合类型强度,其值的计算方法如公式(8):
EW(I,J)=∑Wr*Cm,Wr∈{Wg,Wc,Wag,Was,Wd},Cm∈{ACM,DCM,GCM} (8)
故障传播规则:在类图中,类间的关系是一种内在的逻辑关系;
1)当两个类间关系为泛化关系时,若父类发生故障,则直接子类也发生故障;若子类发生故障则直接父类不受影响;
2)当两个类间关系为组合关系时,若整体类发生故障,则部分类也发生故障;若部分类发生故障,则整体类也发生故障;
3)当两个类间关系是聚合关系时,若整体类发生故障,则部分类不发生故障;若部分类发生故障,则整体类发生故障;
4)当两个类间关系是关联关系时,当类A中的属性或者方法调用了类B,若类B发生故障时,则类A也发生故障;反之,若类A发生故障,而类B不发生故障;当类A和类B不存在调用关系时,则无论哪一方发生故障,另一方都不发生故障;当类A和类B互相调用,这可以归属于第一种情况;
5)当两个类间关系是依赖关系时,如类A依赖类B,若类B发生故障,类A也发生故障;反之,若类A发生故障,类B不发生故障;
类的严重性描述类发生故障后对整体产生的破坏程度,使用相继故障结束后整个网络平均效率E(G)来衡量网络破坏的程度;其中网络平均效率E(G)表达式如公式(9)所示,描述一个节点对整个加权网络的绝对影响值;在一个复杂的软件系统中,UML网络节点和边众多的情况下,E(G)值相对较小;为此,需要一个相对度量值——网络效率损失D,刻画相继故障结束后的网络平均效率相对原网络损失量的比例,其定义式如公式(10)所示:
其中,N表示网络中的节点数,eij表示类节点i与类节点j连边的权值;
其中,E(G0)表示正常状态下网络的平均效率,E(Gf)表示发生相继故障后网络稳态效率;
由于网络节点的严重性描述的是类发生故障后对整体产生的破坏程度,因此本方法采用网络效率损失的相对值D来进行度量,表示为严重性Severity=D;
那么软件的严重性就通过D来定量度量;
(3)风险度量
最后,根据传统的对风险值的计算方法,类i的风险值Riski由公式(11)计算;
Riski=Complexi*Severityi (11)
其中Complexi表示类i的复杂性,Severityi表示类i的严重性。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于大连理工大学,未经大连理工大学许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201910509786.2/1.html,转载请声明来源钻瓜专利网。
- 同类专利
- 专利分类
G06Q 专门适用于行政、商业、金融、管理、监督或预测目的的数据处理系统或方法;其他类目不包含的专门适用于行政、商业、金融、管理、监督或预测目的的处理系统或方法
G06Q10-00 行政;管理
G06Q10-02 .预定,例如用于门票、服务或事件的
G06Q10-04 .预测或优化,例如线性规划、“旅行商问题”或“下料问题”
G06Q10-06 .资源、工作流、人员或项目管理,例如组织、规划、调度或分配时间、人员或机器资源;企业规划;组织模型
G06Q10-08 .物流,例如仓储、装货、配送或运输;存货或库存管理,例如订货、采购或平衡订单
G06Q10-10 .办公自动化,例如电子邮件或群件的计算机辅助管理