
数字技术与应用
关于软件设计的模块独立性分析
返
曲
(黑龙江信息技术职业学院
黑龙江哈尔滨
150025)
·学术论坛·
摘要:模块间的款合和模块的内聚是对模块独立性的标准度量,在软件的设计过程中必频对其有充分的认识,故文章对这
两部分内客进行了探析,仅供同行人页参考。关键词:软件开发模块独立辆合内聚中图分类号:TP311.52
文献标识码:A
1.引言
模块独立性是软件系统中每个模块只涉及软件要求的具体子功能,例如,如果一个模块只具有单一的功能,并且与其他的模块没有太多的联系,则称此模块具有模块独立性。
模块的独立程度可以由模块间的耦合和模块的内聚两个定性标准度量。这两个概念首先是由美国iBM公司的Myers,Steven s,Constantine和Yourdon等人提出,他们认为耦合是衡量不同模块彼此间互相依赖(连接)的紧密程度;内聚是衡量一个模块内部各个元素夜此结合的紧等程度。一个模块内部各个元素之间的联系越紧密,它的内案性就越高,对应地它与其他模块之间的耦合性就会减低,模块独立性就越强。相反,模块内案性越低,模块闻鹅合性就越强,模块的独立性也就越弱。在软件设计中我们要追求高内聚低耦合的模块,尽量提高模块的独立性,这样可以降低问题的复杂度,对模块测试.维护就容易,错误传播的可能性就减小。
2、耦合
耦合是程序结构中各个模块之间相互关联的度量。耦合强弱取决于模块间接口的复杂程度,调用模块的方式以及通过接口的信息。Myers从耦合的机制上将耦合分为非直接合,数据精合、标记耦合,控制耦合,外部耦合、公共揭合、内容合七种类型,并对其进行了比较和分析。须要注意的是,实际中模块之间的耦合并不是七种耦合类型中的某一种,面是多种类型的混合。这就要求设计人员认真的比较和分析,降低模块的耦合性,以提高模块的独立性。
2.1非直接耦合
非直接耦合程度最低,因此模块的独立性最强。但是,在一个大型软件系统中不可能所有模块之间都没有任何联系,它们或多或少地存在着某种形式的精合。
2.2数据耦合
如果两个模块彼此间通过参数交换信息,而且交换的信息仅仅是数据,那么这种耦合称为数据耦合。数据稠合是松散的耦
文章编号:1007-9416(2011)03-0136-02
合,模块的独立性比较强。 2.3标记耦合
如果一组模块通过参数表传递具有某一数据结构的记录信息,这就是标记期合。这就意味着另一模块要共享这个记录,必须清楚该记录的数据结构,并按要求对此记录进行操作。这就使得在数据结构上的操作复杂化,在设计中应尽量避免或采用相应的其
它方法消除这种稠合。 2.4控制耦合
如果两个模块之间传递的信息有控制信息,则这种耦合称为控制合。控制辆合是中等程度的耦合,它增加了系统的复杂程度,因此在设计中要尽量避免这种据合,通过把模块适当重新分解后用数据耦合来代替,就可以消除这种耦合。
2.5外部耦合
如果几个模块都访间同全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该变量的信息,则称之为外部稠合。外部耦合程度较高,模块的独立性较弱。外部鹅合可能引起数据的修改,模块的可靠性和适应性,以及程序的可读性问题,在程序设计时尽量少用外部耦合。
2.6公共耦合
当两个或多个模块通过一个公共数据区相互作用时,它们之间的满合称为公共稠合。公共数据区可以是全程数据区,共享通信区,内存公共覆盖区、任何介质上的文件、物理设备等。公共耦合的复杂程度随耦合模块的个数增多而显著的增加,当程序中存在大量的公共耦合会给程序测试和诊断带来非常大的因难。因此在设计时还是使用揭合性低,模块的独立性比较高的合为好。只有在两个模块共享的数据很多,都通过参数
传递很不方便时,才使用公共耦合。 2.7内容耦合
最高程度的耦合是内容耦合,内容耦合使得模块的独立性最别,应该坚决激免使用内容耦合。如果出现下列情况之一,就发生了内容耦合:(1)一个模块访间另个模块的内部数据;(2)一个模块不通过正常入口而转到另一个模块的内部;(3)两个模块有
6万势猎与应用
月Digital technology and application
136
一部分程序代码重叠(只可能出现在汇编程序中长,因为许多高级程序设计语言已经设计成不充许在程序中出现任何形式的内容耦合)(4)个模块有多个人口(这表明一个模块有几种功能)
在设计中我们处理合的总体原则是:尽量使用数据合,少用标记需合和控制赖合,限制外部耦合和公共鹅合的范围,完全不用内容精合。
在面向对象的方法学中,对象是最基本的模块,因此耦合主要指不同对象之间相互关联的紧密程度。如果一类对象过多地依赖其他类对象来完成自已的工作,我们说它们之间的相互依赖关系是紧鹅合的。不同对象间的紧帮合将给理解、测试或修改类带来很大困难,同时还将大大降低类的可重用性和可移植性。因此,在设计中尽量成少对象间的稠合程度,以提高模块的独立性。
3、内聚
内聚是程序结构中模块内各个元索彼此结合紧密程度的度量。理想内聚的模块只做一件事情。根据模块内部构成情况,可以用高、中、低把内聚分成三类。其中高内聚有功能内聚和顺序内聚;中内聚有通信内案,过程内聚,低内案有时间内聚,逻辑内聚和偶然内聚。
功能内聚的模块独立性最强,偶然内聚模块独立性最弱。在设计时力争做到高内聚,并辨别出低内聚的模块,然后对其修改,提高模块的内案程度,从而得到高内聚独立性强的模块。
在面向对象的方法学中内聚是指同一对象内各个元素彼此结合案密程度。而类是对具有相同属性和行为的一个或多个对象的描述。所以在面向对象的设计中主要是解决类的内聚性间题。如果类的属性和服务全都是完成该类对象的任务所必需的,其中不包含无用的属性或服务,则称为类内聚,泛化内聚则是按照多数人的概念以及对相应的领城知识的正确抽取得出的泛化关系结构,一般说来,紧密的维承耦合与高度的泛
(下转139页)