第24章面向对象系统的技术度量第24章面向对象系统的技术度量

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

第24章面向对象系统的技术度量软件工程第24章面向对象系统的技术度量24.1面向对象度量的目的24.2面向对象度量的识别特征24.3对OO设计模型的度量24.4面向类的度量24.5面向操作的度量24.6对面向对象测试的度量24.7对面向对象项目的度量24.8小结24.1面向对象度量的目的更好地理解产品的质量。评估过程的效率。改善在项目级别完成的工作的质量。24.2面向对象度量的识别特征局部化封装信息隐蔽继承抽象24.2.1局部化局部化是软件的一个特征,它指明信息在程序中被集中的方式,例如,针对功能分解的传统方法围绕功能局部化信息,它们典型地以过程模块来实现。数据驱动方法围绕特定的数据结构局部化信息。在OO语境中,信息是通过封装数据和处理在类或对象的边界内而集中的。24.2.2封装封装通过将测度的焦点从单个模块改变到数据(属性)和处理模块(操作)包而影响度量。此外,封装鼓励在高抽象层的测度,例如,在本章后面,将介绍和每个类的操作数量关联的度量。将此层次的抽象同传统的度量相比较,传统的着重于布尔条件的计数(cyclomatic复杂性)或代码行数。24.2.3信息隐蔽•信息隐蔽隐瞒(或隐藏)程序构件的操作细节,只将对访问该构件必需的信息提供给那些希望访问它的其他构件。继承是使得某对象的责任能够传播到其他对象的机制,继承出现在类层次的所有层面上,通常,传统的软件不支持该特征。24.2.4继承抽象是使得设计者能够关注程序构件(数据或过程)的本质性细节而不需考虑低层细节的机制。24.2.5抽象24.3对OO设计模型的度量大小复杂性耦合性充足度完备性内聚性原始性相似性易变性OO设计可测度的特征:23.4面向类的度量23.4.1CK度量套件6种基于类的设计度量1.每个类的加权方法(WMC)假定对类C定义了复杂度为c1,c2,…cn的n个方法,所选择的特定的复杂性度量(如cyclomatic环复杂度)应该规范化,使得对某方法的名义上的复杂性取值1.0。WMC=Σci2.继承树的深度(DIT)3.子女的数量(NOC)4.对象类之间的耦合(CBO)5.对类的响应(RFC)6.方法中缺少内聚(LCOM)6种基于类的设计度量24.4.2Lorenz和Kidd建议的度量度量体系的样本如下:类大小(CS):可通过被封装在类中的操作的总数和属性的数量来测度。由子类覆写的操作数量(NOO):若NOO大,则导致了弱的类层次和可能难于测试和修改的OO软件。由子类加入的操作的数量(NOA):当NOA值增大时,子类漂离超类隐含的抽象。当DIT变大时,在层次中低层的NOA值将下降。特例化指标(SI):特例化可通过加入或删除或覆写来达到,SI=[NOO*level]/Mtotal,SI值越高,越有可能类层次中包含了更多不遵从超类抽象的类。24.4.3MOOD度量套件度量样本如下:方法继承因子(MIF)耦合因子(CF)多态因子(PF)方法继承因子(MIF):OO系统的类体系结构针对方法(操作)和属性而使用继承的程度被定义为:MIF=ΣMi(Ci)/ΣMa(Ci)对i从1到TC求和其中TC为在体系结构中的类的总数,Ci是在体系结构中的一个类。且:Ma(Ci)=Md(Ci)+Mi(Ci)其中Ma(Ci)为可在和Ci关联中被调用的方法的数量,Md(Ci)为在类Ci中声明的方法的数量,Mi(Ci)为在类Ci中继承(未被覆写的)的方法的数量。MIF值提供了继承对OO软件的影响的指示。耦合因子(CF):CF=ΣiΣjis_client(Ci,Cj)/(TC²-TC)这里针对I从1到TC和j从1到TC求和。函数is_client=1,当且仅当在客户端类Cc和服务器类Cs间存在关系,且Cc≠Cs时is_client=0,否则当CF值增加时,OO软件的复杂性也将增加,而可理解性、可维护性和复用潜力都将受到影响。多态因子(PF):重新定义被继承方法的方法数量,除以可能的不同多态情形的最大数量…..这样,PF是对系统中的动态绑定相对数量的间接测量。PF=∑iMo(Ci)/∑i[Mn(Ci)*DC(Ci)]这里对i从1到TC求和。且Md(Ci)=Mn(Ci)+Mo(Ci)其中,Mn(Ci)为新方法的数量,Mo(Ci)为覆写方法的数量,DC(Ci)为后代计数(某基类的后代类的数量)24.5面向操作的度量三个简单度量:平均操作大小(OSavg):可以用操作发送的消息的数量作为对操作大小的一种度量。操作复杂度(OC):可使用针对传统软件提出的任何复杂度度量来计算。应保持OC尽可能低。每个操作的平均参数的数量(NPavg):操作参数的数量越大,对象间的协作越复杂。NPavg应保持尽可能低。24.6对面向对象测试的度量封装在方法中内聚性的缺乏(LCOM):LCOM值越高,必须被测试的状态越多,以保证方法不产生副作用。公共和保护属性的百分比(PAP):PAP的高值增加了类间副作用的可能性。对数据成员的公共访问(PAD):PAD的高值导致了类间副作用的潜在可能。继承根类的数量(NOR):NOR增加时,测试工作量也增加;扇入(FIN):OO语境中,FIN是多继承的指标,FIN1指明类从多于一个的根类继承属性和操作。FIN1应尽量避免。子女数(NOC)和继承树的深度(DIT):超类的方法必须针对每个子类被测试。24.6对面向对象测试的度量24.7对面向对象项目的度量下面的OO度量可提供对软件大小的考察:场景脚本的数量关键类的数量子系统的数量24.8小结面向对象软件和用传统方法开发的软件有根本性不同,因此,OO系统的度量着重于以下度量:可以应用于类和用于那些使得类独特的设计特征——局部化、封装、信息隐蔽、继承和对象抽象技术的度量。

1 / 22
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功