面向对象软件中类内聚度度量分析和研究.docVIP

面向对象软件中类内聚度度量分析和研究.doc

  1. 1、本文档共12页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
面向对象软件中类内聚度度量分析和研究

面向对象软件中类内聚度度量分析和研究   摘要:对现有著名的类内聚度度量进行了较深入的分析,指出了各自存在的缺陷与不足,并在此基础上考虑到类内聚度受到类内有可能与外界组件产生耦合的成员的负面影响,提出了对CCM(C)再次修正后的MCCM2(C)。   关键词:面向对象; 软件度量; 内聚度   中图分类号:TP311.5文献标志码:A   文章编号:1001-3695(2007)07-0040-03      0引言??      软件开发的目标是开发出高内聚和低耦合的系统[1]。内聚应该是模块成分之间的相互关系。一个高内聚的模块就是具有一个基本功能的模块,一个内聚性很好的模块是很难被分离的。根据内聚的等级将内聚分类。其中一致内聚是最低级的内聚,也是软件开发者最不想要的内聚;功能内聚是最高级的内聚,是开发者追求的内聚。内聚标志着一个模块内各个元素彼此结合的紧密程度,即它度量单个模块所完成的诸项任务在功能上相互关联的程度。软件设计力求做到高内聚,理想内聚的模块只完成一项相对完整的任务。通常,中等程度的内聚也是可以采用的,而且效果与高内聚差不多;低内聚不理想,一般不使用。??   内聚和耦合是密切相关的[2]。模块内的高内聚往往意味着模块间的松耦合。内聚和耦合都是进行模块化设计的有力工具。但实践表明,内聚更重要,应该把更多的注意力放到提高模块的内聚度方面。??   面向对象技术采用数据抽象、封装、继承、多态性、信息隐藏、重用等机制,增强了软件的可维护性、可靠性,提高了生产效率等。这在传统的软件开发中是不完善的或缺少的。面向对象软件的开发方法不同于传统的基于功能分解和数据流程的开发方法。目前面向对象的软件开发技术已成为软件开发的主流技术。为了评价面向对象软件设计的质量,很多学者提出了面向对象软件度量的方法,引起了学术界和产业界的极大关注。??      1相关研究及其分析??      类是面向对象软件的基本单元,是一组属性与操作在这组属性上的方法的集合。设计高质量的类是面向对象软件设计者的追求。但是在设计阶段,如果采用不合适的建模方法,很难设计出高内聚类。为了评价面向对象系统中类内聚度,很多学者根据自己对类内聚度的理解提出了相应的评价准则。这些大多数类内聚度度量都是对Chidamber和Kemerer[3]的类内聚缺乏度LCOM(Lack of Cohesion in Methods)的扩展和延伸。??   现有类内聚度量基本上都建立在对类中实例变量使用和共享的基础上[4]。类中实例变量被引用或被方法共享的次数越多,其类内聚度就越高。表1对目前著名的类内聚度度量进行了总结。??   Chidameber和Kemerer提出用类内聚缺乏度LCOM(LCOM1,LCOM2)来评价类内聚度。LCOM1计算的是类中没有共享实例变量的方法对数目,LCOM2计算类中有共享实例变量的方法对数目与没有共享实例变量的数目差值。Li和Henry提出LCOM3计算类中没有共享实例变量的方法集数目。后来Hitz和Montazeri重新定义了LCOM3。他们以图论为基础统计类中两个不同方法中至少有一个共享实例变量的方法对数。LCOM4定义了方法与方法之间的调用关系。从LCOM1~4可以明显看出,其度量值都与类中方法数目有着密切的关系,如图1所示。采用这几种方法对类??A、B、C??进行类内聚度度量。用LCOM1度量值分别为??C??2??7-6=15,C??2??6-5=10,C??2??4-0=6??。从度量的结果可以看出,类??A??的内聚度是最差的,其次是类??B,而内聚度最强的是类C,这与类C??的类聚度是最差的事实相反。用LCOM2度量值分别为15-6=9,10-5=5,6-0=6。可以看出,内聚度最差的还是类??A而不是类C。??用LCOM3或LCOM4度量值分别为:7、5、0,虽然在这组度量数据中类??C的内聚度是最差的,但是类A??的内聚度比类B的内聚度大,这与实际是不相符的。从上面这个简单的实例可以很明显地看出,它们所存在的共同缺陷就是受类中方法数目的影响较大。所以有学者提出了相对类内聚度的方法。Co度量方法计算的是类中存在的有共享实例变量的方法对数目与可能存在的方法对数目的比值。Hendersen-Sellers提出的LCOM5计算的是属性被方法平均访问的个数,是一个相对概念。Co和LCOM5都以一个相对比值作为度量消除了类中方法个数对度量结果的影响。??      表1现有著名的类内聚度度量      Bieman和Kang提出的TCC(Tight Class Cohesion)和LCC(Loose Class Cohesion)也考虑了类中共享实例变量的方法对,TCC计算出类中有直接关联的方

文档评论(0)

151****1926 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档