软件工程的耦合和内聚

模块独立性是软件质量的关它指软件系统中的每个模块只涉及软件要求的具体子功能,而和系统中其模块接是简单的。这做不仅仅便于软件测试和维护使模块化程度较高的软件于开发,一组开发人员同开发一个软件时,模块化能够分功能,而且接可以简化。
模块的独立性可以用两个定性标准度合和内聚
耦合是模块之间相互连接的紧密程度的度量模块之间的连接越紧密,联系越多,耦 合性就越高,而其模块独立性就越弱内聚是一个模块部各个元素彼此结合的紧密程度 的度。一个模块部各个元素间的越紧密内聚性就高,相对于其模块合性就会降低,而模块独立性就越强。因,模块独立性较的模块应该是高内聚合的模块。
 

 1、耦合

合的强弱取决于各个模块间接的复杂程度、调用模块的方式以及信息。一模块间的接方式有 7 种,构成的7 类型
1》非直
如果两个模块接关系,它们之间的系完是通主模块的制和调用实现的,这就是非直合。这种耦合的模块独立性最强是,在一个软件系统中不可能有的模块间都任何接。
2) 数据
如果两个模块彼此间通数据(不是数、公共数据结构或变量)交换,这种合称为数据合。由于制了过参数表传递数据,数据合开发的程序界面简单、安全。数据合是松散合,模块间的独立性比较,在系统中 有这类耦合。
 
3) 记耦
如果模块间通过参数表传递记录信息,就是标记耦合。由于模块传递的不是简单,而是一数据结构的子结构,以在设计中应避免这种合。
 
4)
如果模块传递信息中有信息,就称作合。这种合的实是在单一接上选择功能模块中的某项功能。因,对被控制模块的任何修改,都会影响控制模块。 于中等程度的合,它增加了系统的复杂程度。
 
5) 公共耦
如果一组模块通同一个公共数据环境相互作用,则它们之间的合称为公共耦合。
公共的数据环境可以是全局数据结构、共享的通信区内存公共覆盖区、任何存储介质
上的文件、物理设备等。
 
6) 内容耦
如果发生下列情形之一,两个模块间就发生了内容耦合。
一个模块访一个模块的部数据。
一个模块不能通过正常入到另一模块的部。
两个模块有一部分程序代码重叠(可能出现在语言)
一个模块有个入
内容耦合属于最高程度的耦合,应该尽量避免使用。
 
7)
如果一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参传递全局变量信息,则称为合。
 
2、内聚
 
内聚是一个模块部各个元素彼此结合的紧密程度的度。一个内聚程度高的模块应 完成软件程中的单一任务。信息隐蔽的一种自然扩展。一模块的内聚7 类型。
 
1) 内聚
如果一个模块各部分有关系,或即使有关系,这种关系很松散的,则称 内聚内聚程度最低的模块。如,一些不同的模块中可能在同一组语句,程序员为了节省空间,把它们抽出来组成一个模块,这就出现了内聚的块。,这种模块不易修改维护,通常情况下应避免这种模块。
 
2) 逻辑内聚
如果一个模块中包含多个逻辑上相关的功能,每次调用时,根据传递给该模块的数来确定模块应行的功能,称作逻辑内聚它属於单入口多功能模块。如,错误 处理模块根据收到的出错信号显示出不同的出错信息等。逻辑模块的修改也比较困难,有时对部功能的改动也会影响到全局
 
3) 时间内聚
如果一个模块的任务必在同一时间内执行,称作时间内聚,如初始化模块和模块。时间内聚比逻辑内聚好一些,在一定程度上反映了程序的些实由于许多功能、任务组合在一,给维护修改带来了困难。
4) 内聚
如果一个模块的处理是相关的,而且必定次序行,则称为内聚。使用程序流程图作为工具设计程序时,常常通流程图来确定模块的划分,这的就是内聚模块。相对时间内聚的程度更强一些,由于仅仅为完功能的一部分,程度比较低。
 
5) 信内聚
如果一个模块各功能部分都使用了相同的入数据,或产生了相同的出数据,则称为通信内聚。通常,通信内聚模块是通数据流图来定义的。因为模块中包许多独的功能,内聚程度高于内聚由于各功能部分使用了相同的 I/O 缓冲区,从而低了个系统的效
 
6) 信息内聚
如果一个模块能够完成个功能,各个功能都在同一数据结构上作,每一功能有一的入点,称作信息内聚可以作是个功能内聚模块的组合,并能达到信息隐蔽增强了各模块的独立性。
 
7) 功能内聚
如果一个模块各个部分都是完成一具体功能必不可的组成部分,称作功能内聚。模块间功能明确、合简单,是最高程序的内聚。
 
 
设计时力争做到高内聚,并且能够辨认出低内聚的模块,有能力通过修改设计提高模块的内聚程度,降低模块间的耦合程
度,从而获得较高的模块独立性。

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章