方 春
(江西财经大学 信息管理学院,江西 南昌 330013)
随着面向对象开发方法的深入研究和使用,目前利用面向对象开发的软件项目不断增加,而UML作为建模语言标准也在软件项目中得到广泛应用。与这个趋势形成鲜明对比的是,当前针对面向对象软件的度量研究成果较少[1]。
自Rubey等提出软件度量学的概念开始[2],人们对软件度量的研究和应用已经四十余年。众多学者对它作过专门的研究,主要从结构化程序度量、面向对象软件度量[3-9]和UML模型度量[10-17]等三个方面开展研究,既取得了丰硕的理论研究成果,提出了代码行数LOC、McCabe着色图法、软件科学法、功能点法等经典的结构化程序度量方法,又开发了一系列实用工具,如LOC计算工具Microsoft Line of Code Counter、LocMetrics 和CCCC等;并把其应用到诸如缺陷检测、开发工作量估计和系统维护等软件工程的各个领域,得到广大软件工程领域研究者与开发人员高度重视。
类图作为一种非常重要的软件模型图,描述系统中的类及其相互之间的各种关系,其构建是否科学对软件的复杂性有着明显的影响。目前,针对类图复杂性度量方法没有广泛的研究,对类图度量还处在经验阶段,Marchesi[18]运用7个指标从不同角度去度量类图的复杂性,但只考虑了类之间的继承和依赖关系,而没有考虑其他关系,如:关联关系、聚合关系等,是一种绝对复杂性度量;Genero[19-20]运用14个指标,将Marchesi度量中没有考虑到的类之间的关系进一步区分,是相对复杂性度量和绝对复杂性度量相结合;Barroso.[21]、Santos[22]、Bassey[23]、Senthil[24]、Gosain[25]、Gupta[26]、Vats[27]、Padhy[28]与 Genero 度量类似,也是用一组指标评价类图复杂性。周毓明将UML类图转换成带权类依赖图,运用信息熵的方式对UML类图进行度量[29],并取得了很好度量效果。易彤对周毓明的方法进行了改进,不仅考虑类间关系,还考虑了类内属性和类内的方法,这三者对UML类图复杂性都有一定的影响,提出了一种基于依赖性分析的UML类图复杂性度量方法[30]。
毋庸置疑的是,在UML类图模型度量研究方面取得的成果还是太少,这其中一个重要的原因是国际对象管理组织OMG发布的UML标准只对类图中各个建模元素给出了语义概念层面上的描述,这就导致研究者对类图模型度量时往往因人而异采用不同的权重指标,没有一个统一的标准,致使对于同一个类图会有不同的度量值;与此同时,为了克服文献[29-30]中给出的类图类间关系权值精度不高的不足,本文提出了一种新的度量UML类图复杂性权重的方法,即将已有的基于OWA(ordered weighted averaging)算子的多属性决策方法[31]应用于UML类图的度量,在决策过程中,由于决策者往往可能会对他偏好的因素给出不合理的评分,因此,为尽量减少这样的偏好因素,对实事求是的数据赋给的权重大一些,而相对偏差比较大的数据赋给的权重小一些,最后,获得各个UML类图的综合属性值。
OWA算子是对给出的决策数据a1,a2,…,ai,…,an按照从小到大的顺序重新排列为b1,b2,…,bj,…,bn,对b1,b2,…,bj,…,bn,由给出的权重向量集结,而且元素ai与权重w没有任何联系,权重w只与集结过程中第j个位置有关(加权向量w也称为位置加权向量)。在同一个样本中,可能会由于偏好的原因,呈现差异较大的极端值,在处理时,本文采取抑制极端值,提升中间值的OWA加权平均方法。加权时,将使中间位置的数值得以提升,而两侧、较大、较小的值得以抑制,达到了减弱极端值在整体评价中的比重的作用。
已知决策数据为a1,a2,…,ai,…,an,根据OWA算子理论,对决策数据作从大到小排序,编号从0开始,得到的结果为b0≥b1≥b2≥ 。数…≥bn-2≥bn-1据bj的权重kj+1是由组合数Cnj-1直接决定的[32],且有,于是由下式
设有模糊集合B=(b1,b2,…,bi,…,bn),bi为第i位评分者的评分值,0≤bi≤1,i=1,2,…,n。先在论域U=R上建立三角模糊集[33]
显然,这是一个三角模糊集,以(n+1)/2为轴的对称分布的图形。n=5时,其分布为(0.2,0.6,1,0.6,0.2),由于权重wi必须满足
所以对(3)式进行归一化处理,得基于三角模糊数的权重分布
由此,可得(5)式的权重分布为(0.077 0,0.203 8,0.384 6,0.203 8,0.077 0)。
设有模糊集合B=(b1,b2,…,bi,…,bn),bi为第i位评分者的评分值,0≤bi≤1,i=1,2,…,n。先在论域U=R上建立正态模糊集[33]:
其中
显然,这是一个正态模糊集,以(n+1)/2为轴的对称分布的图形。n=5时,,则其权重分布为
对(6)式进行归一化处理,得基于正态模糊数的权重分布:
其中,i=1,2,…,n。于是式(7)变换为(0.112 0,0.236 0,0.304 0,0.236 0,0.112 0)。
以上这些都是根据决策数据排序位置决定的权重,在决策数据集结过程中首先要对决策数据进行排序,这样给出的权重没有很好的考虑数据的特性,为此给出下面的方法——依赖决策数据给出权重的方法[32]。具体步骤如下:
Step 1:对已给出的决策数据(T1,T2,…,Ti,,…,Tn-1,Tn),赋以权重,通过下式:
求得均值及标准差s。
Step 2:对给出的决策数据 (T1,T2,…,Ti,,…,Tn-1,Tn),利用得到的及s进行标准化处理。
得到(U1,U2,…,Ui,…,Un-1,Un)。
Step 3:分 别 求 出h(x)在 (U1,U2,…,Ui,…,Un-1,Un)处 的 数 值u1,u2,…,ui,…,un-1,其 中ui=h(Ui)。其中函数h(x)为标准正态分布,即对于连续随机变量x,函数
Step 4:对已求出的u1,u2,…,ui,…,un-1,根据作单位化处理得到(w1,w2,…,wn-1,wn),此即所求的权重向量。
在以往UML类图建模过程中,建模元素不能定量计算是一个大问题。本文将已有基于OWA算子的多属性决策方法应用于UML类图的度量,根据上述提到权重方法确定在有序加权平均算子中,UML类图元素指标的权重。利用OWA算子进行决策分析由以下具体步骤组成[34]:
Step 1:给定待分析的UML类图,构建决策矩阵为
其中,n表示类图数量,m表示评价指标数量。“
Step 2:考虑到属性类型属于效益型属性,利用公式(14)对A进行规范化处理得到矩阵B′=(b′ij)n×m
其中,i=1,2,...,n,j=1,2,...,m。
Step 3:把所得数据按照从大到小的顺序进行重新排列,得到决策矩阵为
其中,bij是第i个 UML 类图数据 (b′i1,b′i2,…,b′im)中第j大的元素。
Step 4:用第一节方法确定OWA算子的权重
Step 5:用公式(16)得到的权重对重新排列得到的数据进行集结,利用公式(17)计算各个UML类图的综合属性值Zi
为了验证本文提出的度量方法,我们将进行一个实验来估计度量的综合属性值。在Genero的允许下,选取27个与银行系统有关的UML类图[19~20]作为实验的对象。为了方便讨论,本文用X1表示依赖关系,X2表示普通关联,X3表示聚集关系,X4表示泛化关系,X5表示类内方法,X6表示类内属性,X7表示类数目。下面为计算27个与银行系统有关的UML类图的具体步骤:
Step 1:对于UML类图度量的决策问题,构建决策矩阵A=(aij)n×m,如表1所示。
Step 2:利用公式(14)将A规范化。
表1 27个UML类图的Genero度量方法的度量值
Step 3:由公式(15),将Step 2结果重新排序。
Step 4:由第一节提出的赋权方法,计算Xj属性的权重w,w=(w1,w2,…,wn),下面就文中给出的OWA赋权方法求解权重。
①利用组合数得到的权重进行加权,由n=7,得到的权重向量(0.015 625,0.093 75,0.234 375,0.312 5,0.234 375,0.093 75,0.015 625)。
②利用三角模糊集给出的权重进行加权,由n=7,得到的权重向量(0.04,0.12,0.2,0.28,0.2,0.12,0.04)
③利用正态模糊集给出的权重进行加权,由n=7,得权重向量(0.070 159,0.131 075,0.190 713,0.216 106,0.190 713,0.131 075,0.070 159)
④利用依赖决策数据给出的权重进行加权,对不同的样本赋予不同的权重。
Step 5:由公式(17)计算各个UML类图的综合属性值Zi,如表2所示。
在软件生命周期的各个阶段,应进行易用性和维护性等有关的软件质量度量,度量方法通常分为定性估计、定量预测和测量等。为验证本文提出度量方法的有效性和实用性,利用本文提出的度量方法和周毓明的方法[30]、易彤的方法[31]在可理解性、可分析性和可维护性三个方面进行比较,为了讨论方便,分别称其为周度量、易度量,如表3所示。
表2 UML类图的综合属性值
表3 UML类图综合属性值比较
为了更进一步的论述复杂性度量结果和可理解性、可分析性和可维护性指标间存在相关性,下面本文引入Pearson简单相关系数检验类图复杂性度量方法是否与人们实际经验的结果一致。Pearson简单相关系数的计算公式为
两变量之间的相关强度的大小参考表4。
利用统计软件SPSS进行相关性分析,检验类图复杂性度量方法是否与实际经验的结果一致,相关性分析结果如表5所示。
由表5可以看出,本文提出的新度量方法中不论何种赋权,度量结果与人们经验得出的类图的可理解性、可分析性和可维护性更加接近。其中,周的度量结果和易的度量结果与人们经验类图显著相关,而本文OWA算子度量与人们经验类图是高度相关。
表4 相关系数与相关强度的关系
表5 复杂性度量结果的相关性分析
为了更加直观的比较上述3种度量方法,Pearson相关性分析结果如图1所示。
从图1,我们可以发现本文的赋权集结结果接近1,其中依赖数据决策的赋权OWA算子是最接近1的。这表明,通过OWA算子计算类图复杂性与其他度量比较,本文度量方法与实践经验值一致,并且依赖决策数据赋权方法最符合实际经验值。该方法能快速计算软件类图的综合属性值。同时,本研究的结果可以更准确地反映软件的复杂性。
本文在基于OWA算子的多属性决策方法理论的基础上,提出了一种新的UML类图的度量方法,通过实验结果表明该方法与人们经验有很大的相关性。本文结果表明基于OWA算子度量复杂的UML类图得出的结果与人们根据经验度量复杂的UML类图的结果很接近。在设计生产软件产品的前期工作中,本文的研究成果可以很好的评价软件质量的优劣,在面向对象分析设计软件前期,度量UML类图的复杂度,可以大大降低软件开发的成本。在软件度量研究的理论体系中,本文提出的新方法更加接近于人们实际经验度量,丰富和完善了软件度量理论体系。
图1 Pearson相关性分析
参考文献:
[1]周 欣,陈向葵,孙家骕,等.面向对象系统中基于度量的可复用构件获取机制[J].电子学报,2003,31(5):649-653.
[2]Rubey R J,Hartwick R D.Quantitative measurement of program quality[C]//ACM National Conference.ACM,1968:671-677.
[3]Hatzivasilis G,Papaefstathiou I,Manifavas C.Software Security,Privacy and Dependability:Metrics and Measurement[J].IEEE Software,2016,33(4):46-54.
[4]Lee T,Nan J,Han D,et al.Developer micro interaction metrics for software defect prediction[J].IEEE Transactions on Software Engineering,2016,42(11):1015-1035.
[5]Zhu X L,Cao C L,Zhang J.Vulnerability severity prediction and risk metric modeling for software[J].Applied Intelligence,2017,47(3):828-836.
[6]Gu A H,Zhou X F,Li Z H,et al.Measuring Object-Oriented class cohesion based on complex networks[J].Arabian Journal for Science and Engineering,2017,42(8):3551-3561.
[7]王 青,伍书剑,李明树.软件缺陷预测技术[J].软件学报,2008,19(7):1565-1580.
[8]Srivastava D K,Singh A.Classification of Technical and Management Metrics in Object Oriented Software Engineering[M]//Proceedings of International Conference on Communication and Networks.2017.
[9]陶传奇,李必信,Gao J.构件软件的回归测试复杂性度量[J].软件学报,2015,26(12):3043-3061.
[10]Rossi M,Brinkkemper S.Complexity metrics for systems development methods and techniques[J].Information Systems,1996,21(2):209-227.
[11]Zhang Y,Hong M.Non-Functional attributes oriented description and verification in UML class diagrams[J].Journal of Software,2009,20(6):1457-1469.
[12]李传煌,王伟明,施银燕.一种UML软件架构性能预测方法及其自动化研究[J].软件学报,2013(7):1512-1528.
[13]柳 毅,麻志毅,何 啸,等.一种从UML模型到可靠性分析模型的转换方法[J].软件学报,2010,21(2):287-304.
[14]韩德帅,杨启亮,邢建春.一种软件自适应UML建模及其形式化验证方法[J].软件学报,2015,26(4):730-746.
[15]黄平霞,董 昱.基于UML顺序图的地铁联锁测试用例生成方法[J].小型微型计算机系统,2016,37(5):1117-1120.
[16]Tomyim J,Pohthong A.Requirements change management based on Object-Oriented software engineering with unified modeling language[C]//Proceedings of 2016 IEEE 7th International Conference on Software Engineering and Service Science(ICSESS 2016),2016:7-10.
[17]Abuhassan A,Alshayeb M.A metrics suite for UML model stability[J].Software&Systems Modeling,2016:1-27.
[18]Marchesi M.OOA Metrics for the Unified Modeling Language[C]//Software Maintenance and Reengineering.Proceedings of the Second Euromicro Conference on.IEEE,1998:67-73.
[19]Bocco M G,Piattini M,Calero C.A Survey of Metrics for UML Class Diagrams[J].Journal of Object Technology,2005,4(9):59-92.
[20]Genero M,Piattini M,Chaudron M.Quality of UML models[J].Information and SoftwareTechnology,2009,51(12):1629-1630.
[21]Barroso A S,Madureira J S,Souza T D S,et al.Relationship between Personality Traits and Software Quality-Big Five Model vs.Object-oriented Software Metrics[C]//International Conference on Enterprise Information Systems.2017:63-74.
[22]Santos D,Resende A,Junior P A,et al.Attributes and metrics of internal quality that impact the external quality of object-oriented software:A systematic literature review[C]//Computing Conference.IEEE,2017:1-12.
[23]Bassey I,Dladlu N,Ele B.Object-Oriented Code Metric-Based Refactoring Opportunities Identification Approaches:Analysis[C]//2016 4th Intl Conf on Applied Computing and Information Technology/3th Intl Conf on Computational Science/intelligence and Applied Informatics/1st Intl Conf on Big Data,Cloud Computing,Data Science&Engineering.IEEE,2016:67-74.
[24]Senthil V S,Babu C,Madhumitha R.A Quantitative Evaluation of Change Impact Reach ability and Complexity Across Versions of Aspect Oriented Software[J].International Arab Journal of Information Technology,2017,14(2).
[25]Gosain A,Sharma G.A dynamic size measure for object oriented software[J].International Journal of System Assurance Engineering&Management,2017,8(2):1209-1221.
[26]Gupta D L,Saxena K.Software bug prediction using object-oriented metrics[J].Sādhanā,2017:1-15.
[27]Vats P,Gossain A.AVISAR-a three tier architectural framework for the testing of Object Oriented Programs[C]//Computational Intelligence on Power,Energy and Controls with Their Impact on Humanity.IEEE,2017.
[28]Padhy N,Satapathy S,Singh R P.Utility of an Object Oriented Reusability Metrics and Estimation Complexity[J].Indian Journal of Science&Technology,2017,10(3).
[29]Zhou Y,Xu B.Measuring structural complexity for class diagrams:an information theory approach[C]//ACM Symposium on Applied Computing.DBLP,2005:1679-1683.
[30]易 彤.一种类的权威性度量方法[J].小型微型计算机系统,2009,30(2):271-274.
[31]Yager R R.On ordered weighted averaging aggregation operators in multicriteria decision making[J].Readings in Fuzzy Sets for Intelligent Systems,1993,18(1):80-87.
[32]王 煜,徐泽水.OWA算子赋权新方法[J].数学的实践与认识,2008,38(3):51-61.
[33]芮利翔.基于OWA加权平均的模糊贴近度在企业管理领域模式识别中的应用研究[J].中国管理信息化,2017,20(12):97-99.
[34]Xu Z S.An overview of methods for determining OWA weights[J].International Journal of Intelligent Systems,2005,20(8):843-865.