最新消息:

软件模块耦合度包括以下哪些类型(软件模块的耦合性是什么)

媒体模版 admin 浏览 评论

根据耦合性从低到高为非直接耦合、数据耦合、标记耦合、控制耦合、外部耦合、公共耦合和内容耦合。

耦合度就是某模块(类)与其它模块(类)之间的关联、感知和依赖的程度,是衡量代码独立性的一个指标,也是软件工程设计及编码质量评价的一个标准。耦合的强度依赖于以下几个因素:(1)一个模块对另一个模块的调用;(2)一个模块向另一个模块传递的数据量;(3)一个模块施加到另一个模块的控制的多少;(4)模块之间接口的复杂程度。

耦合按从强到弱的顺序可分为以下几种类型:

(1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。类与类之间直接调用或继承关系都是属于这种耦合。

(2)公共耦合。两个及两个以上的模块共同引用一个全局数据项就称为公共耦合。

(3)控制耦合。一个模块在界面上传递一个信号(如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。

(4)标记耦合。模块间通过参数传递复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。

(5)数据耦合。模块间通过参数传递基本类型的数据,称为数据耦合。

(6)非直接耦合。模块间没有信息传递时,属于非直接耦合。

构成耦合性的七种类型

一般模块之间可能的连接方式有七种,构成耦合性的七种类型.它们之间的关系为(由弱到强)

非直接耦合(Nondirect Coupling)

如果两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的,这就是非直接耦合.这种耦合的模块独立性最强..

数据耦合(Data Coupling)

如果一个模块访问另一个模块时,彼此之间是通过数据参数(不是控制参数、公共数据结构或外部变量)来交换输入、输出信息的,则称这种耦合为数据耦合.由于限制了只通过参数表传递数据,按数据耦合开发的程序界面简单、安全可靠.因此,数据耦合是松散的耦合,模块之间的独立性比较强.在软件程序结构中至少必须有这类耦合.

印记耦合(Stamp Coupling)

如果一组模块通过参数表传递记录信息,就是标记耦合.事实上,这组模块共享了这个记录,它是某一数据结构的子结构,而不是简单变量.这要求这些模块都必须清楚该记录的结构,并按结构要求对此记录进行操作.在设计中应尽量避免这种耦合,它使在数据结构上的操作复杂化了.如果采取“信息隐蔽”的方法,把在数据结构上的操作全部集中在一个模块中,就可以消除这种耦合.

控制耦合(control Coupling)

如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合.耦合的实质是在单一接口上选择多功能模块中的某项功能.因此,对所控制模块的任何修改,都会影响控制模块.另外,控制耦合也意味着控制模块必须知道所控制模块内部的一些逻辑关系,这些都会降低模块的独立性.

外部耦合(External Coupling)

一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合.例如C语言程序中各个模块都访问被说明为extern类型的外部变量.外部耦合引起的问题类似于公共耦合,区别在于在外部耦合中不存在依赖于一个数据结构内部各项的物理安排.

公共耦合(Common Coupling)

若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合.公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等.这种耦合会引起下列问题:1)所有公共耦合模块都与某一个公共数据环境内部各项的物理安排有关,若修改某个数据的大小,将会影响到所有的模块.2)无法控制各个模块对公共数据的存取,严重影响软件模块的可靠性和适应性.3)公共数据名的使用,明显降低了程序的可读性.[Page]公共耦合的复杂程度随耦合模块的个数增加而显著增加.如图4.14所示,若只是两个模块之间有公共数据环境,则公共耦合有两种情况.若一个模块只是往公共数据环境里传送数据,而另一个模块只是从公共数据环境中取数据,则这种公共耦合叫做松散公共耦合.若两个模块都从公共数据环境中取数据,又都向公共数据环境里送数据,则这种公共耦合叫做紧密公共耦合.只有在模块之间共享的数据很多,且通过参数表传递不方便时,才使用公共耦合.否则,还是使用模块独立性比较高的数据耦合好些.

内容耦合(Content Coupling)

又称病态耦合.如果发生下列情形,两个模块之间就发生了内容耦合.1)一个模块直接访问另一个模块的内部数据; 2)一个模块不通过正常入口转到另一模块内部; 3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中); 4)一个模块有多个入口.在内容耦合的情形,所访问模块的任何变更,或者用不同的编译器对它再编译,都会造成程序出错.好在大多数高级程序设计语言已经设计成不允许出现内容耦合.它一般出现在汇编语言程序中.这种耦合是模块独立性最弱的耦合.

耦合性也称“块间联系”。指软件系统结构中各模块间相互联系紧密程度的一种度量。模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。模块的耦合性有以下几种类型。

(1)无直接耦合。无直接耦合指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此模块间耦合性越弱,模块独立性越高。

(2)数据耦合。数据耦合指两个模块之间有调用关系,传递的是简单的数据值,相当于高级语言中的值传递。这种耦合程度较低,而模块的独立性较高。

(3)标记耦合。标记耦合是指两个模块之间传递的是数据结构,如高级语言中的数组名、记录名、文件名等这些名字即为标记,其实传递的是这个数据结构的地址。两个模块必须清楚这些数据结构,并按要求对其进行操作,这样降低了可理解性。可采用“信息隐蔽”的方法,把该数据结构以及在其上的操作全部集中在一个模块,就可消除这种耦合,但有时因为还有其他功能的缘故,标记耦合是不可避免的。

(4)控制耦合。控制耦合指一个模块调用另一个模块时,传递的是控制变量(如开关、标志等),被调用模块通过该控制变量的值有选择地执行模块内某一功能。因此被调用模块内应具有多个功能,哪个功能起作用受其调用模块控制。

转载请注明:片头模版 » 软件模块耦合度包括以下哪些类型(软件模块的耦合性是什么)

发表我的评论
取消评论

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)

网友最新评论 ()