(计算机应用技术专业论文)面向对象系统耦合性度量研究与应用.pdf_第1页
(计算机应用技术专业论文)面向对象系统耦合性度量研究与应用.pdf_第2页
(计算机应用技术专业论文)面向对象系统耦合性度量研究与应用.pdf_第3页
(计算机应用技术专业论文)面向对象系统耦合性度量研究与应用.pdf_第4页
(计算机应用技术专业论文)面向对象系统耦合性度量研究与应用.pdf_第5页
已阅读5页,还剩60页未读 继续免费阅读

(计算机应用技术专业论文)面向对象系统耦合性度量研究与应用.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

摘要 在面向对象的度量研究中,许多研究者针对面向对象软件的特点,从不同侧 面展开了对软件内部属性的度量,对耦合性的度量研究是其中研究热点之一。 首先,本文研究了软件质量及其度量的相关理论,分析了耦合性对软件质量 特性的影响,然后从传统和面向对象两个方面详细介绍了有关耦合性度量的相关 研究。 其次,对比分析了已有的面向对象耦合性度量框架,并针对已有框架存在的 问题,提出了一种面向对象的耦合性度量框架,全面分析了面向对象系统耦合机 制,并建立起了耦合种类与耦合机制之间的映射关系,提高了框架的实用性。 然后,本文设计并实现了一个基于中间信息库的软件耦合性度量工具,实现 了度量数据的自动采集,最后分析了该工具的特点及其改进之处。 最后,应用耦合性度量工具,并结合实际的软件项目,通过对不同耦合性度 量指标的收集与分析,从多个视角分析面向对象系统的耦合特点,并针对不同的 耦合方式,对降低耦合性的解耦方法进行了一定的讨论。 关键词:软件度量、软件质量、软件耦合性度量、面向对象耦合性度量框架、 度量工具、分析评价,解耦方法 a b s t r a c t i nt h er e s e a r c ho f0 0 m e t r i c s ,m a n yr e s e a r c h e r ss t u d yt h em e t r i c sa b o u t i n t e r n a l a t t r i b u t eo fo b j e c t - o r i e n t e ds o f t w a r e c o u p l i n gm e t r i c si s o n eo ft h e i m p o r t a n t r e s e a r c ha s p e c t s f i r s t l y , t h i st h e s i ss t u d i e st h e o r yo f s o f t w a r eq u a l i t y - a n ds o f t w a r em e t r i c s ,a n a l y z e s t h ee f f e c t so fc o u p l i n go ns o f t w a r eq u a l i t yc h a r a c t e r i s t i c s ,a n dt h e n p a r t i c u l a r l y i n t r o d u c e sr e s e a r c ho n c o u p l i n gm e t r i c sf r o m t w o a s p e c t s :t r a d i t i o n a ls o f t w a r em e t r i c s a n d o b j e c t - o r i e n t e dm e t r i c s s e c o n d l y ,b a s e do n t h ea n a l y s i so fs e v e r a lf r a m e w o r k sf o r c o u p l i n gm e a s u r e m e n t i n o b j e c t o r i e n t e ds y s t e m s ,a f r a m e w o r kf o r c o u p l i n g m e a s u r e m e n ti n o b j e c t - o r i e n t e ds y s t e m si sd e p i c t e d t h i sf r a m e w o r ka n a l y z e sc o u p l i n gm e c h a n i s m i no b j e c t - o r i e n t e ds y s t e m sa n db u i l d su pt h em a p p i n g r e l a t i o n s h i pb e t w e e nc o u p l i n g c a t e g o r ya n dc o u p l i n gm e c h a n i s m w h i c hc a ni m p r o v et h ef r a m e w o r k sp r a c t i c a b i l i t y e f f e c t i v e l y t h i r d l y , b a s e d o nt h ei d e ao fi n t e r m e d i a t ei n f o r m a t i o nr e p r e s e n t a t i o n ,ac o u p l i n g m e t r i c st o o lu s e di no b j e c t - o r i e n t e ds o f t w a r ei sd e s i g n e da n di m p l e m e n t e d ,a n di tc a n a u t o m a t i c a l l y c o l l e c t e dm e t r i c sd a t a t h e ni t sc h a r a c t e r i s t i c sa r ea n a l y z e d a tl a s t ,a p p l y i n gt h e c o u p l i n gm e t r i c st o o l t oap r o j e c t ,d i f f e r e n to fc o u p l i n g m e t r i c si n d i c a t o r sa r ec o l l e c t e da u t o m a t i c a l l y b a s e do nt h e s em e t r i c sd a t a ,t h i st h e s i s a n a l y z e sc o u p l i n gc h a r a c t e r i s t i c so f t h a ts y s t e mf r o mv a r i o u sv i e w s t h e n ,a i m i n ga t d i f f e r e n tt y p e so fc o u p l i n g ,s o m ed e c o u p l i n ga p p r o a c h e sa r ep u tf o r w a r d st or e d u c e c o u p l i n g i no b j e c t o r i e n t e ds y s t e m s k e yw o r d s :s o f t w a r em e t r i c s ,s o f t w a r eq u a l i t y ,s o f t w a r ec o u p l i n gm e t r i c s , f r a m e w o r kf o r c o u p l i n g m e a s u r e m e n ti n o b j e c t o r i e n t e ds y s t e m s ,m e t r i c st o o l , a n a l y s i sa n de v a l u a t i o n ,d e c o u p l i n ga p p r o a c h 承诺书 本人郑重声明:所是交的学位论文,是本人在导师指导下,独立迸行研究工作所取得的 成果。尽我所知,除文中已经注明引用的内容外,率学位论文的研究成果不包含任何他人享 有著作权的内容。对本论文所涉及的研究t 作做出贡献的其他个人和集体,均已在文中以明 确方式标明。 本人授权南京肮空航大大学可以有权保留送交论文的复印件,允许论文被查阅和借阅, 可以将学1 _ 奇= 论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或其他复 制手段保存论文。 ( 保密的学位论文在解密后适用本承诺书) 作者签名:久一诗 日期:2 0 0 5 年1 月1 0 日 a d t a c a i c a c m i c a 删i c c b o c b o l a l e c o f c m m c o u p li n g d a c d a c 。 d a c ! d a c ; d a c d a c j d c a e c d c m e c d 删e c d e c o u p li n g e v a l u a t i o n f c a e c f c m e c f 埘e c i c p h d p d m i e e e i f c a i c i f c m i c i f 删i c i h - i c p i n h e r it a n c e i s o 注释表 a b st r a c td a t at y p e 抽象数据类型 通过属性发生的输入耦合 与祖先类间通过方法参数发生的输入耦合 与祖先类间通过方法调用或传递方法指针发生的输入 耦合 c o u p l i n gb e t w e e no b j e c tc l a s s e s 类间耦台 c 8 0 中除去因继承引起的耦合 a f f e r e n tc o u p l i n g e f f e r e n tc o u p l i n g c o u p li n gf a c t o r 耦合因子 c a p a b i l i t ym a t u r i t ym o d e l 能力成熟度模型 耦合 d a t aa b s t r a c t i o nc o u p l i n g 抽象数据类型耦合 类属性中定义类型为他类的,这种属性的数目 类属性定义类型为他类中,不重复的类数目 一个类作为其他类属性的类型的次数 类方法的参数中定义类型为其他类的这种参数数目 一个类作为其他类参数的类型的次数 与子孙类间通过属性发生的输出耦合 与子孙类间通过方法参数发生的输出耦合 与子孙类间通过方法调用或传递方法指针发生的输出 耦合 解耦 评估 与友类间通过属性发生的输入耦合 与友类间通过方法参数发生的输出耦合 与友类间通过方法调用或传递方法指针发生的输出耦 合 i n f o r m a t i o n f l o w b a s e dc o u p l i n g 基于信息流的耦合 一个p d m 系统 i n s t i t u t eo fe l e c t r i c a l e l e c t r o n i ce n g i n e e r s 美国电气电子工程师学会 非友类间通过属性发生的输入耦合 非友类间通过方法参数发生的输入耦合 非友类间通过方法调用或传递方法指针发生的输入耦 合 i n h e r i t e d i n f o r m a t i o n f l o w b a s e dc o u p li n g 基于继 承的信息流耦合 继承性 i n t e r n a t i o n a ls t a n d a r d i z a t i o no r g a n i z a t i o n m e a s u r e m e a s u r e m e n t m e t r i e s m p c n i h i c p o c a e c o c a i c o c m e c o c m i c o 姗e c 0 m m i c 0 0 o p r f c 国际标准化组织 动词,测量 名词测量 度量 m e s s a g ep a s s i n gc o u p li n g 消息传递耦合 n o n i n h e r i t e d i n f o r m a t i o n f l o w b a s e d c o u p l i n g 基 于非继承的信息流耦合 其他的通过属性发生的输出耦合 其他的通过属性发生的输入耦合 其他的通过方法参数发生的输出耦合 其他的通过方法参数发生的输入耦合 其他的通过方法调用或传递方法指针发生的输出耦合 其他的通过方法调用或传递方法指针发生的输入耦合 o b j e c t o r i e n t e d o b j e c tp a s c a l r e s p o n s ef o rac l a s s 类的响应 南京航空航天大学硕士学位论文 1 1 课题研究背景及意义 第一章绪论 近年来,随着计算机应用领域的迅速扩大、计算机软、硬件新技术的不断涌 现以及软件规模和复杂性的迅速扩大,人们对软件质量不断提出更高要求。目前, 计算机已广泛应用于航空、航天、工业控制、交通、银行、金融、医疗等领域。 在这样的应用领域中,软件质量往往关系到人民生命财产的巨大损失或生态环境 的破坏,世界各国对软件质量的问题都非常重视,软件质量成为令人关注的一个 研究领域。 鉴于软件质量问题的迫切性,许多计算机科学家在展望2 1 世纪计算机科学 发展策略时,把提高软件质量放在优先于提高软件功能和性能的地位。可以说 2 l 世纪的高技术市场将与质量第一的软件休戚相关。超高质量软件的开发技术 将是打开2 l 世纪高技术市场的钥匙。于是,软件质量保障技术的研究工作如 火如荼地开展了起来,对高质量软件质量保障技术的研究成为了软件工程研究的 一个重要领域。 软件质量保障技术是软件生产质量管理的基础,它是软件开发方法学、软件 工程等的重要组成部分,只有正确地应用软件质量保障技术,并与先进的软件开 发技术相结合,才能获得高质量的软件。为了保障软件的质量,研究者们从两个 方面展开了对软件质量保障技术的研究: 一是软件开发过程的质量保证,它以过程文档化和管理科学化为内容; 二是软件过程和产品的质量评估,它采用软件度量技术作为软件质量特性量 化的主要技术。 要有效地控制软件质量,软件度量技术是必不可少的。t o md e m a r c o 曾经说 过:“没有度量就不能控制”。i e e e 的软件工程术语标准词典( i e e e 9 3 ) 中定义: “m e t r i c s ” 度量) 为“对一个系统、构件或过程具有的某个给定属性的度的一 个定量测量”。实质是指在现实的世界中,把数字或符号指定给实体的某一属性, 以便以这种方式根据已明确的规则来描述它们。软件质量度量则是对影响软件质 量的属性所进行的定量测量。 软件度量提供了一种定量化的方法以控制软件开发过程和提高软件产品质 量,同时它贯穿于软件开发的整个生命周期,对软件开发的各个阶段进行评估和 控制,帮助人们客观地分析评估软件设计、生产和使用状况,并能够预测其发展 面向对象系统耦合性度量研究与应用 趋势,这对于改善并提高软件质量,提高软件过程能力具有非常重要的意义,其 必要性和重要性已经得到了软件界的认同。 1 2 当前研究现状及选题依据 度量的研究可以追溯到7 0 年代1 2 j ,其时,最为流行的软件开发方法是传统 的结构化方法。早期著名的度量,如m c c a b e 的环计数,h a l s t e a d 的软件科学和 a l b r e c h t 的函数点等等,这些都是针对传统的开发方法。与此同时制定的一些软 件质量标准也是针对传统的结构化的软件,如i s 0 9 0 0 0 - 3 标准等。软件度量进一 步工作的开展主要在8 0 、9 0 年代,尤其是在9 0 年代,软件度量的研究获得了空 前的发展,成为软件工程研究中的热点方向之一。统计表明o ”,近几年关于软 件度量方面的论文多达1 6 0 0 多篇,出版的专著至少4 0 余本。软件过程度量、软 件资源度量、软件产品度量构成的度量框架的统一“5 。“”3 ,度量指标验证与评估 方法的提出,各种度量集合的验证与完善,加上度量理论的进一步坚实,推动着 实用化软件度量技术的成熟。 作为9 0 年代的领先技术,面向对象的技术已经在软件产业中得到了广泛的 运用,面向对象产品也得到了迅猛的发展。面向对象度量的研究在学术界得到了 普遍的证实,并在产业界具有良好的应用前景。 在面向对象的度量研究中,许多研究者针对面向对象软件的特点,从不同侧 面展开了对软件内部属性的度量,而与软件质量密切相关的软件内部属性之一的 耦合性的度量研究自然成为了软件度量领域的一个研究热点。高质量的软件设 计,许多原则之一就是要遵循低耦合原则。作为软件的内部属性,耦合性具有可 直接、客观度量的特点,对其进行度量不但可以掌握由于耦合性引起的软件设计 问题,还可以为软件的某些外部属性的度量提供依据,从而为进一步研究软件质 量度量模型提供有效的支持。目前有许多研究者,如c h i d a m b e ra n dk e m e r e r , l i a n dh e n r y , m a r t i n , a b r e u , l e ee ta 1 a n db r i a n de ta l ,都对耦合性做了一定的研究, 并取得了一定的研究成果,据相关资料统计【5 】,他们提出来的关于耦合性的度量 方法大约有3 0 余种,具体如下表1 1 所示。这里有著名的c & k 度量集中的对象 间耦合度量( c b o ) 和类间响应度量( r f c ) 以及m o o d 度量集中的耦合因子 ( c o f ) 。这在很大程度上丰富了软件度量领域的研究工作。 南京航空航天大学硕士学位论文 表1 1 耦合性度量方法列表 度量种类度量方法 对象问耦合 c b o 、c b o 类的响应 r f c 、r f c 、r f c 消息传递耦合m p c 数据抽象耦台d a c 、d a c + 、d a c l 、d a c 2 、d a c 3 、d a c 4 、d a c 5 、c 1 a 扇入扇出耦合 c e 、c a 耦合园子 。 c o f 基于信息流的耦合i c p 、n i h - i c p 、i h i c p b r i a n d 提出的耦合i f c a i c 、a c a i c 、o c a i c 、f c a e c 、d c a e c 、o c a e c 、i f c m i c 、 a c m l c 、o c m i c 、f c m 匣c 、d c 匝c 、o c m e c 、m m i c 、 a i c 、0 n m 皿c 、f n 心压e c 、d m 附匝c 、0 m m 匣c 选择“面向对象软件耦合性度量的研究和应用”作为课题研究方向,主要原 因有: 1 ) 耦合性的度量研究是传统软件度量技术与面向对象度量技术的结合点之 一,对它的研究可以更好地结合软件度量的最新内容,以适应面向对象 领域的度量要求; 2 ) 耦合性的度量研究可以通过定量化的方法分析、评估软件由于耦合性问 题引起的质量问题,从而与软件设计技术以及软件质量密切结合,具有 很强的应用价值。 1 3 课题的主要研究内容 考虑到软件耦合性度量方面研究及其应用的现状,本文在全面、系统地分析 软件耦合性度量理论基础上,着重研究了面向对象的耦合性度量框架的建立,分 析了软件质量与耦合性的关系,并在耦合性度量框架的基础上设计并实现了一个 自动化的耦合性度量工具,最后应用度量,结合实际的软件项目对度量结果进行 了分析,同时也对降低耦合性的解耦方法进行了一定的讨论。 本文主要研究内容共分为六章。 第一章绪论:阐述了课题的研究背景及意义,描述了国内外研究现状和课题 选题依据,介绍了本文主要研究工作。 第二章软件质量及其度量研究:介绍了软件质量及其度量的相关概念,分析 了耦合性对软件质量特性的影响,然后从结构化和面向对象两个方面详细介绍了 有关耦合性度量的相关研究。 第三章面向对象耦合性度量框架:详细分析了面向对象系统的耦合性,并对 比分析了已有的面向对象耦合性度量框架,针对已有框架存在的问题,提出了一 面向对象系统耦合性度量研究与应用 种面向对象的耦合性度量框架。 第四章面向对象耦合性度量工具的设计与实现:应用面向对象耦合性度量框 架,设计并实现了一个基于中间信息库的软件耦合性度量工具,用于实现度量数 据的自动收集。本章详细介绍了该工具的体系结构及设计,描述了基于该体系结 构的一个面向对象耦合性度量工具的实现过程。 第五章耦合度量的分析及应用:结合实际的软件项目,利用数值的分布作为 数据解释原则的基础,通过对不同耦合性度量指标的分析,从多个视角分析类的 耦合特点以及其对软件质量的影响,并对降低耦合性的解耦方法进行了一定的讨 论。 第六章总结与展望:对全文进行了总结,归纳了本文的主要论点和研究工作, 并对以后的研究方向进行了进一步的展望。 4 南京航空航天大学硕士学位论文 2 1 软件质量 第二章软件质量及度量研究 质量是事物的特征和属性,它是指事物可测量的特征就一般事物而言, 我们可以通过比较标准来衡量,如长度、色彩、电子特性以及延展性。但是软件, 是一个纯智力的特殊产品,则比实体物品质量刻画面临着更大的挑战【6 】。 m j f i s h e r 7 1 将软件质量定义为:所有描述计算机软件优秀程度的特性的组 合,也就是说,为了满足软件的各项精确定义的功能、性能要求,符合文档化的 开发标准,需要相应的给出或设计一些质量特性及其组合,要得到高质量的软件 产品,就必须使这些质量特性得到满足。 国际化标准组织i s o 在i s o i e c 9 1 2 6 t s l 将软件质量定义为:反映软件产品 满足规定需求和潜在需求能力的特征和特征的总和。 综上所述,软件质量是软件的一些内部属性和特征的组合,软件的特性反映 了软件的本质。软件质量与人们期望什么、规定什么或者测量什么无关,它仅依 赖于软件的属性和特征。因此,软件质量与那些描述计算机软件优秀程度的属性 和特性密切相关。 2 2 软件度量及度量模型 2 2 1 度量定义 作为软件质量的重要保障手段之一,软件度量技术已经得到了广泛的研究、 验证和应用。那么什么是度量呢? i e e e 在“s t a n d a r df o rs o f t w a r eq u a l i t ym e t r i c sm e t h o d o l o g y ”,i e e es t d 1 0 6 1 - 1 9 9 2 ,1 9 9 3 中对度量( m e l r i e s ) 给出了定义 9 1 : 度量( m e 缸i c s ) 是一个函数,它的输入是软件数据,输出时单一的数值,能用 以解释软件所具有的一个给定属性对软件质量影响的程度。软件度量是对影响软 件质量的属性所进行的定量测量。 在i e e e 的定义中,对于什么是“软件数据”没有明确的定义。实际上当要 测量一个标志质量的值时,被测量的对象应是一种软件产品,那么,这个被测量 的产品就是输入的软件数据,例如:一个过程、一个方法、一个类、一个部件以 及一个软件系统。这些软件数据都可以形式地予以定义,例如b n f 范式。 实际上度量是一个三元组( q ,m ,n ) “】,其中: 面向对象系统耦合性度量研究与应用 1 ) 经验关系系统( e m p i r i c a l r e l a t i o ns y s t e m ) q = ( q ,r ) 。q 为被度量实体的 集合,r = r l ,r 2 凡 为q 上的一系列关系; 2 ) 数值关系系统( n u m e r i c a l r e l a t i o ns y s t e m ) n = ( n ,p ) 。n 为数值或者符号 的一个集合,p = p i ,p 2 ,p n ) 为n 上的一系列关系。 3 ) 映射m :q n 。m ( x ) 为实体x 在被度量属性方面的度量值。 上述定义中的经验关系系统是对被度量事物属性的刻划,关系r i 必须能够 反映被度量事物属性的性质。这里,关系可以是被度量事物上的运算。 由此可见,度量是一种从现实或经验世界到数学世界的映射,通过这种映射 人们可以更容易的理解实体的特性和实体问的关系。真正的困难在于如何解释数 字化的行为和判断其在现实世界的意义。度量理论对于在软件开发中选择和应用 合适的度量是很重要的。 2 2 2 有效软件度量的属性 对于计算机软件,已经提出过数百个度量,但是,并不是所有的都对软件工 程有实际的支持,有些度量太复杂了,其他一些太深奥以至于很少有现实世界的 专业人员能理解它们,另外一些违反了高质量软件的实际的基本直觉概念。 e j i o g u 定义了一组有效软件度量应该包含的属性,导出的度量及导致它的测 度应该剐1 0 j : 1 ) 简单的和可计算的。学习如何导出度量值应该是相对简单的,并且它的 计算不应该要求过多的工作量和时间。 2 ) 经验和直觉上有说服力的。度量应该满足工程师对于所考虑的产品的直 觉概念。例如,一个测度模块内聚性的度量值应该随着内聚度的提高而 提高。 3 ) 一致的和客观的。度量应该总是产生无= 义的结果。一个度量的第三方 使用该软件的相同信息能够得到相同的度量值。 4 ) 在其单位和量纲的使用上是一致的。度量的数学计算应该使用不会导致 奇异单位组合的测度。例如,把项目队伍的人员乘以程序中的编程语言 变量引起一个直觉上没有说服力的单位的组合。 5 ) 编程语言独立的。度量应该基于分析模型、设计模型或程序本身的结构。 它们不应该依赖于不同的编程语言的句法和语法。 6 ) 高质量反馈的有效机制。度量应该给软工程师提供能导致更高质量的最 终产品的信息。 2 2 3 软件质量度量模型 度量模型是帮助、指导我们对度量的抽取和应用的方法,它告诉我们度量所 6 南京航空航天大学硕士学位论文 覆盖的范围和领域,描述了度量的实体和属性、可能的结果以及若干测量间的关 系,并区分预测和评估。m c c a l l 等人于1 9 7 9 年提出了新的软件质量度量模型。 该模型本质是一种层次结构模型 1 , 1 1 1 。如图2 1 所示。 图2 1 软件质量要素层次结构模型图 该模型的基本思想是把软件质量的因素按照一定的方式分成几组,每组反映 软件质量的一个方面,称为质量要素。构成一个质量要素的诸因素则是对该要素 的衡量标准,每个衡量标准又由一系列具体的度量组成。 根据图2 1 ,m c c a l l 把软件质量分为1 1 个要素,分别面向软件产品的操作 ( o p e r a t i o n ) 、修改( r e v i s i o n ) 和改型( t r a n s i t i o n ) 。它们与要素的关系如图2 2 所示。 _ 正确_ | 生_ 可靠_ | 生高& 性完整性易使_ 用性 图2 2m e c a l l 软件质量度量模型 m c c a l l 模型中的软件质量要素的定义如下: 1 ) 易使用性( u s a b i l i t y ) :软件易于使用的程度; 2 ) 完整性( i n t e g r i t y ) :包含软件不被未经同意的存取和使用的能力。 3 ) 效率( e f f i c i e n c y ) :指软件对计算机资源的使用效率,主要分为两类: 运行时间效率和存储空间效率; 4 ) 可靠性( r e l i a b i l i t y ) :不失败的能力: 5 ) 正确性( c o r r e c t n e s s ) :程序完成其规约的程度; 面向对象系统耦台性度量研究与应用 6 1 易维护性( m a i n t a i n a b i l i t y ) - 在程序的操作环境中,确定软件故障的位 置并纠正故障的难易程度; 7 1 灵活性( f l e x i b i l i t y ) :当软件的操作环境变化时,对软件作相应修改的 难易程度; 8 ) 易测试性( t e s t a b i l i t y ) :对软件测试以保证其无错误和满足其规约的难 易程度; 9 ) 易移植性( p o r t a b i l i t y ) :将一个程序从一个运行环境移植到另一个运行 环境的难易程度; 1 0 ) 易复用性( r e u s a b i l i t y ) :复用一个软件或其部分的难易程度; 11 1 互操作性( i n t e r o p e r a b i l i t y ) :将一个软件系统和其他软件系统组合在一 起的难易程度: 2 3 软件设计度量 软件度量技术是一个范围很广的研究领域。对于软件的设计来说,很多东西 都是主观的一个有经验的设计者“知道”如何去刻画软件使它将有效地实现 客户需求。但是,当软件设计模型在规模和复杂性上增长时,对设计特征的更客 观的度量是必须的【1 0 1 。对软件的设计度量是面向结构的度量和面向对象的度量的 一个结台点。 对设计的度量始于7 0 年代,多集中于模块度量。y o u r d o n 和c o n s t a n t i n e 提 出影响软件质量的主要因素在于耦合性、内聚性、复杂度、模块化及规模。f r o y 和z w e b e n 利用软件模块结构图进行分析,从中提取2 1 个特性作为度量依据, 包括模块间传递数据量的最大值、平均值、总数、公用数据数日,扇入扇出的平 均值和最大值,条件调用,循环调用次数及最大深度( 层次) 等【l ”。 在面向对象的设计度量中。w h i t m i r e 总结提出了反映面向对象设计水平的 9 个可度量特性:规模、复杂度、耦合、充分性、完全性、内聚、简单、相似性、 冲突性。其中充分性是展示设计超过满足目标需求的抽象性能,反映了继承的情 况和重用的可能:完全性是展示目标需求被设计部件完全对应;相似性是多个类 之间在结构、功能行为、目的的相似程度:冲突性是需求修改时可能发生的设计 修改嘲。 2 4 软件耦合性度量 由此可见,在软件设计度量研究中,不同的研究者从不同的侧面展开了对反 映软件设计水平的可度量特性的度量,而其中与软件设计水平密切相关的耦合性 南京航空航天大学硕士学位论文 的度量研究是软件设计度量领域的一个研究热点。 软件的耦合性度量是结构化的软件设计和面向对象的软件设计的一个结合 点。因为无论是结构化的软件设计还是面向对象的软件设计,高质量的软件设计, 许多原则之一就是要遵循低耦合原则。作为软件的内部属性,耦合性具有可直接、 客观度量的特点,对其进行度量不但可以掌握由于耦合性引起的软件设计问题, 还可以为软件的某些外部属性的度量提供依据,从而为进一步研究软件质量度量 模型提供有效的支持。下面详细介绍一下软件耦合性的度量研究。 2 4 1 耦合性对软件质量特性的影响 在结构化的设计中,软件的设计遵循四个原则:模块化、抽象、信息隐蔽和 局部化以及模块独立。模块独立的概念是模块化、抽象、信息隐蔽和局部化概念 的直接结果。具有独立模块的软件比较容易开发出来,而且独立模块的软件易测 试和维护。模块的独立程度可以由两个定性标准度量,这两个标准一个是内聚, 个就是耦合t ”j 。 在结构化的软件中,耦合是指一个软件结构中不同模块之间互连的紧密程 度,它是对程序结构中模块相互连接的度量。耦合依赖于模块间接口的复杂性、 引用或进入模块所在的点以及什么数据通过接口传递。模块间的耦合程度强烈影 响系统的可理解性、可测试性和可维护性;模块间的简单连接导致软件易于理解, 并且当错误发生于某个位置并在系统中传播时更少受“连锁反应”【1 卅的影响。因 此,在软件设计中我们力争尽可能低的耦合。 在面向对象的设计中,对象是最基本的模块,因此,耦合主要指不同对象之 间相互关联的紧密程度。弱耦合是优秀设计的一个重要标准,因为紧密耦合提高 了类的复杂度,不利于类的理解;而且处于紧密耦合状态的类在修改时,其影响 面会加大,也就是说存在紧密耦合关系的两个类之间,如果一个类发生了变化, 那么就会直接影响另外一个类,不利于另外一个类的修改和维护。在理想情况下, 对某一个类的理解、测试或修改,无须涉及其他的类。因此,类的设计时或在中 间产品修改过程中要尽量减少耦合值。 综上所述,耦合对质量特性的影响趋势主要反映在以下方面: 表2 。1 耦台性对质量特性的影响趋势 l对质量特性的影响趋势 i 耦合模块化重用性易调整可维护可测试 可理解独立性易出错 1 个山 9 面向对象系统耦合性度量研究与应用 2 4 2 结构化的耦合性度量 2 4 2 1 结构化的软件耦合性 在结构化的设计中,模块间耦合程度的强弱可以具体区分为:内容耦合、公 共耦合、外部耦合、控制耦合、标记耦合、数据耦合。图2 3 是不同类型耦合的 例子,各种耦合的具体定义如下i l 3 】: 1 ) 内容耦合:如果存在以下情况则两个模块间存在内容耦合; 曲一个模块访问另一个模块的内部数据; b ) 一个模块不通过正常入口而转到另一个模块的内部; c ) 两个模块有一部分程序代码重叠; d ) 一个模块有多个入口; 2 ) 公共耦合:当两个或多个模块通过一个公共数据环境相互作用时,它们 之间的耦合称为公共耦合。 3 ) 外部耦合:当模块连接到软件外部环境上时,则称这种耦合为外部耦合。 4 ) 控制耦合:如果两个模块彼此间传递的信息中有控制信息,则称为控制 耦合。 5 ) 标记耦合:两个模块同时引用一个非全局的数据结构,则称为标记耦合。 6 ) 数据耦合:如果两个模块彼此间通过参数交换信息,而且交换的信息仅 仅是数据,那么这种耦合称为数据耦合。 图2 3 模块问耦合示意图 图2 - 3 中,模块a 与d 是不同模块的从属模块,a 与d 间无直接耦合;模块 c 与a 是从属关系且它们之间有参数传递,即存在数据耦合;当传递的是数据结 构时存在的是标记耦合,如模块b 与a 之间就是这种耦合:在模块d 与e 之间传 1 0 南京航空航天大学硕士学位论文 递的是在从属模块或上级模块中控制决策的变量,则模块d 与e 间存在控制耦合; 当模块i 连接到软件外部环境上时,如特定格式和特定通讯协议,则会发生外部 耦合:模块b 、g 、k 访问的是同一个全局数据区中的数据项,这三个模块是公共 耦合的:而模块i 由于访问了模块j 的内部数据,所以两者问构成了内容耦合。 2 4 2 2 结构化的软件耦合性度量 结构化耦合性度量分别从3 个方面进行度量:数据和控制流耦合度量,全局 耦合度量、环境耦合度量: 1 ) 数据和控制流耦合度量: 曲d i = 输入数据参数的数目; b 1c i = 输入控制参数的数目; c ) d 0 一输出数据参数的数目: d ) c o 输出控制参数的数目; 2 ) 全局耦合度量: e ) 勖= 作为数据使用的全局变量的数目; f )= 作为控制使用的全局变量的数目; 3 ) 环境耦合度量: g ) w = 被调模块的数目( 扇出) ; h ) f 调入模块的数目( 扇入) ; 使用上述度量,模块的耦合指示器为:l i l c = 1 “d i + 2 + c i + d 。+ 2 + c 0 + g d + 2 + g 。“+ r ) 2 4 3 面向对象的耦合性度量 2 4 3 1 面向对象的软件耦合性 在面向对象系统中,类间耦合程度的强弱可以区分为:环形耦合、抽象具体 耦合、内容耦合、公共耦合、控制耦合、标记耦合、继承耦合、实例耦合、数据 耦合、接口耦合和无直接耦合,具体定义如下f 1 5 】。图2 4 为耦合性的强弱关系图。 耦 合 性 递 减 图2 4 面向对象耦合性强弱关系图 砸向对象系统耦台性度量研究与应用 1 1 环形耦合:存在两个类,类a 和类b ,如果类a 调用类b 的方法,则类 b 一定调用了类a 的方法。即类与类的方法之间存在必然的、环形的相 互调用关系。 2 ) 抽象具体耦合:指的是软件设计的分层结构中上层对下层的一种耦合方 向,称为抽象具体耦合。 3 ) 内容耦合:若类中的一个方法直接调用另个类的私有数据成员,则两 。个类间存在内容耦合。 4 ) 公共耦合:类与类的方法之间通过全局的,共享的数据空间来交换信息, 则两个类间存在公共耦合。 5 ) 控制耦合:一个类的状态影响另一个类的某个方法的执行,称为控制耦 合。 6 ) 标记耦合:如果把整个数据结构作为一个参数来传递,则产生标记耦合。 7 ) 继承耦合:由于类之间的继承关系产生的耦合称为继承耦合。 8 ) 实例耦舍;实例耦合是指直接调用一个具体类的实例方法而造成的耦合。 9 ) 接口耦合:类与类间仅仅通过接口进行交互,称为接口耦合,这被认为 是一种造成耦合度最低的耦合方式。 l o ) 无直接耦合:如果两个类彼此完全独立,这意味着类间无任何连接,称 为无直接耦合。 2 4 3 2 面向对象的软件耦合性度量 由于面向对象的开发技术已经成为当今软件开发的主流技术,研究者们对面 向对象耦合性展开了深入的度量研究。关于耦合性的度量方法有3 0 余种,它们 分别是:对象类间的耦合、类的响应、消息传递耦合、数据抽象耦合、扇入扇出 耦合、耦合因子、基于信息流的耦合以及b r i a n d 等人提出的耦合。这在本文1 2 节中已经介绍,这里不再累述。 为了使如此繁多的度量方法具有很好的可操作性,b r i a n d 于1 9 9 4 年给出了 关于耦合性的专业术语及形式化表述【5 , 1 6 , 1 7 , 1 9 】,下面分别给出其中一些度量指标 的形式化定义,其余度量指标的形式化定义参见附录a : 1 ) 对象类间耦合: 关于对象类间耦合的度量方法主要有: c b o ( c o u p l i n gb e t w e e no b j e c t c l a s s e s ) 和c b o ,其形式化定义如下。 定义1 :c b d t ) = i 诩瓣e s t ,d ) vu s e s ( d ,c 瑚 定义2 :c b o ( c ) = c b d 0 ) 一i 矧硎c p s t o r s ( c ,d ) v a , , c e s t o r 4 d , c ) j 或 南京航空航天大学硕士学位论文 定义3 :c b o ( c ) = l 缸e c 一( c u a n c e s t o r s ( c ) ) | u s e s ( c , d ) v u s e s ( d , c ) i , 其中u s e s ( x ,y ) 定义类工的实现过程中,使用了类y 的方法、属性或 实例;a n c e s t o r s ( x ,y ) 定义类x 是类y 的父类。 2 ) 类的响应: 关于类的响应的度量方法主要有:r f c ( r e s p o n s e f o rc l a s s ) 、r f c 、r f c a , 其形式化定义如下: 定义4 :尉1 c 0 ) = i 船l ,其中r s 是类c 对消息的响应集。r s = u 忸。 , m 是类的方法集, r f l 是被方法i 直接调用的方法集; i l 定义5 :r f c a ( c ) = 1 q r i ( c l ,对于a = l ,2 ,3 ,有 lj ,wi 丑o ( c ) = m ( c ) a n dr i + l ( c ) = u p l m ( m ) m e 舟f 曲 其中,m ( c ) 表示类c 的方法集:p i m ( m ) 表示方法m 的动态调用集 合。因此,又有:r f c ( c ) = r f c l ( c ) ,r f c ( c ) = r f c 。( c ) 3 1 消息传递耦合: 关于消息传递耦合的度量方法为:m p c ( m e s s a g ep a s s i n gc o u p l i n g ) ,其形 式化定义如下。 定义6 :m e c f c ) = l m l a i n v o c b ,m ) a m i m k ) n 州m 0 ) l , 其中d i n v o c 。,肌) 表明方法m ,的实现中直接调用过m ,肘( 工) 表 示类x 的方法集; 同时,m p c 还有如下定义: 定义7 :m p c ( c ) = n s i ( m ,彬) m e 蛐( c ) m e s 附m ) ,埘( c ) s i m ( m ) 表明表示被方法小静态调用的数量; m ,( c ) 表示是类c 中实现的方法集合,即类c 继承而重载的方法 或类c 的非虚拟非继承方法; n s i ( m ,m ) 表明表示方法m 被方法n l 静态调用的数量。 4 ) 数据抽象耦合: 关于抽象数据类型耦合的度量方法有:d a c ( d a t aa b s t r a c t i o nc o u p l i n g ) 、 d a c 、d a c i 、d a c 2 、d a c 3 、d a c 4 、d a c s ( 见注释表) ,其形式化定义 如下。 定义8 :d a c ( c ) = f 捌d a i ( c ) 丁( 口) c j 面向对象系统耦合性度量研究与应用 定义9 :d a c ( c ) = 妒( 4 ) l n a i ( c ) r o ) c i 定义1 0 :z m c 1 0 ) ;i 口p o ( c ) r 如) c 定义1 1 :n 4 c 2 0 ) = l 留0 淞爿( c ) r g ) c l 定义1 2 :删q ( c ) = i 糊口础) r 如) = c j 定义1 3 :o a c , ( c ) = l p l p p a r a m ( m ( c ) ) a t ( p ) e c i 定义1 4 :o a c , ( c ) = r p l p p a r a m ( m ( d ) ) t ( p ) = c j 其中a i g ) 是类x 实现的属性集合,即类x 的非继承的属性,a g ) 是类x 的属性集合,r g ) 是属性x 的定义类型,c 是系统所有类的集合,p a r a m ( m ) 是方法m 的参数集合,肘g ) 是类x 的方法集合。 5 ) 耦合因子: 耦合因子c o f ( c o u p l i n g f a c t o r ) 用于度量系统耦合度,其形式化定义如下。 i s c l i e n t ( c 旧) 定义1

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论