内聚?耦合?

内聚的定义


  内聚(Cohesion)是一个模块内部各成分之间相关联程度的度量。


内聚的概念


  内聚的概念是Constantine、Yourdon、Stevens等人提出的。按他们的观点,把内聚按紧密程度从低到高排列次序为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。但是紧密程度的增长是非线性的。偶然内聚和逻辑内聚的模块联系松散,后面几种内聚相差不多,功能内聚一个功能、独立性强、内部结构紧密,是最理想的内聚。


内聚强度类型


  内聚按强度从低到高有以下几种类型:
(1)偶然内聚
  如果一个模块的各成分之间毫无关系,则称为偶然内聚,也就是说模块完成一组任务,这些任务之间的关系松散,实际上没有什么联系。
(2)逻辑内聚
  几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。
(3)时间内聚
  如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。
(4)通信内聚
  如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。
(5)顺序内聚
  如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。
(6)功能内聚
  模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。
(7)信息内聚

  模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。这个模块将根据不同的要求,确定该模块执行哪一个功能。由于这个模块的所有功能都是基于同一个数据结构(符号表),因此,它是一个信息内聚的模块。


转自:http://baike.baidu.com/view/553710.htm


耦合是指两个或两个以上的电路元件或电网络的输入与输出之间存在紧密配合与相互影响,并通过相互作用从一侧向另一侧传输能量的现象;概括的说耦合就是指两个或两个以上的实体相互依赖于对方的一个量度。耦合作为名词在通信工程软件工程机械工程等工程中都有相关名词术语。

主要分类

  分为以下几种:
  

非直接耦合

  两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。

能量耦合

  如 变压器 的初级与次级之间的能量耦合。

数据耦合

  一个模块访问另一个模块时,彼此之间是通过简单数据 参数  (不是控制参数、公共 数据结构 或外部变量) 来交换输入、输出信息的。

标记耦合

  一组模块通过参数表传递记录信息,就是标记 耦合 。这个记录是某一数据结构的子结构,而不是简单变量。其实传递的是这个数据结构的地址;

控制耦合

  如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。

外部耦合

  一组模块都访问同一全局简单变量而不是同一全局 数据结构 ,而且不是通过参数表传递该全局变量的信息,则称之为外部耦合。

公共耦合

  若一组模块都访问同一个公共数据环境,则它们之间的耦合就称为公共耦合。公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

内容耦合

  当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。如果发生下列情形,两个模块之间就发生了内容耦合
  (1) 一个模块直接访问另一个模块的内部数据;
  (2) 一个模块不通过正常入口转到另一模块内部;
  (3) 两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
  (4) 一个模块有多个入口。

多场耦合

  现实工程中,物理场是许多的,温度场,应力场,湿度场等等均属于物理场,而我们要解决的许多问题是这些物理场的叠加问题,因为这些物理场直接是相互影响的。比如炼钢的时候温度高低对于应力分布就有影响。
  这种多个物理场相互叠加的问题就叫做多场耦合问题,也是一种耦合。

另类情况

  如果发生下列情形,两个模块之间就发生了内容耦合
  (1)一个模块直接访问另一个模块的内部数据;
  (2)一个模块不通过正常入口转到另一模块内部;
  (3)两个模块有一部分程序代码重叠(只可能出现在汇编语言中);
  (4)一个模块有多个入口。耦合强度,依赖于以下几个因素:
  (1)一个模块对另一个模块的调用;
  (2)一个模块向另一个模块传递的数据量;
  (3)一个模块施加到另一个模块的控制的多少;
  (4)模块之间接口的复杂程度。
  耦合按从强到弱的顺序可分为以下几种类型:
  (1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。
  (2) 公共耦合 。两个以上的模块共同引用一个全局数据项就称为公共耦合。
  (3)外部耦合。若一组模块都访问同一全局数据项,则称为外部耦合。
  (4)控制耦合。一个模块在界面上传递一个 信号 (如开关值、标志量等)控制另一个模块,接收信号的模块的动作根据信号值进行调整,称为控制耦合。
  (5)标记耦合。模块间通过 参数传递 复杂的内部数据结构,称为标记耦合。此数据结构的变化将使相关的模块发生变化。
  (6) 数据耦合 。模块间通过 参数传递 基本类型的数据,称为 数据耦合
  (7)非直接耦合。模块间没有信息传递时,属于非直接耦合。
  如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制 公共耦合 的范围,坚决避免使用内容耦合。

编辑本段相关标准

  耦合强度,依赖于以下几个因素:
  (1)一个模块对另一个模块的调用;
  (2)一个模块向另一个模块传递的数据量;
  (3)一个模块施加到另一个模块的控制的多少;
  (4)模块之间接口的复杂程度。

编辑本段软件工程中耦合

  简单地说, 软件工程 中对象之间的 耦合度 就是对象之间的依赖性。指导使用和维护对象的主要问题是对象之间的多重依赖性。对象之间的耦合越高,维护成本越高。因此对象的设计应使类和构件之间的耦合最小。
  有软硬件之间的耦合,还有 软件 各模块之间的耦合。
   耦合性 是程序结构中各个模块之间相互关联的度量。它取决于各个模块之间的接口的复杂程度、调用模块的方式以及哪些信息通过接口。
  耦合可以分为以下几种,它们之间的 耦合度 由高到低排列如下:
  (1) 内容耦合。当一个模块直接修改或操作另一个模块的数据时,或一个模块不通过正常入口而转入另一个模块时,这样的耦合被称为内容耦合。内容耦合是最高程度的耦合,应该避免使用之。
  (2) 公共耦合。两个或两个以上的模块共同引用一个全局数据项,这种耦合被称为公共耦合。在具有大量公共耦合的结构中,确定究竟是哪个模块给全局变量赋了一个特定的值是十分困难的。
  (3) 外部耦合 。一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过 参数 表传递该全局变量的信息,则称之为外部耦合。
  (4) 控制耦合 。一个模块通过接口向另一个模块传递一个控制 信号 ,接受信号的模块根据信号值而进行适当的动作,这种耦合被称为控制耦合。
  (5) 标记耦合 。若一个模块A通过接口向两个模块B和C传递一个公共参数,那么称模块B和C之间存在一个标记耦合。
  (6) 数据耦合。模块之间通过参数来传递数据,那么被称为数据耦合。数据耦合和最低的一种耦合形式,系统中一般都存在这种类型的耦合,因为为了完成一些有意义的功能,往往需要将某些模块的输出数据作为另一些模块的输入数据。
  (7) 非直接耦合 。两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
  总结:耦合是影响软件复杂程度和设计质量的一个重要因素,在设计上我们应采用以下原则:如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,尽量避免使用内容耦合。
   内聚与耦合
   内聚 标志一个模块内各个元素彼此结合的紧密程度,它是信息隐蔽和局部化概念的自然扩展。 内聚 是从功能角度来度量模块内的联系,一个好的内聚模块应当恰好做一件事。它描述的是模块内的功能联系。耦合是 软件 结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。 程序讲究的是低耦合,高内聚。就是同一个模块内的各个元素之间要高度紧密,但是各个模块之间的相互依存度却要不那么紧密。
  内聚和耦合是密切相关的,同其他模块存在高耦合的模块意味着低内聚,而高内聚的模块意味着该模块同其他模块之间是低耦合。在进行软件设计时,应力争做到高内聚,低耦合。

编辑本段振动模式的耦合

  振动模式的耦合是指两个振动 模态 在某一振动模态下(或在某一 广义坐标 方向上)的振动输入,导致另一振动模态下(或另一广义坐标方向上)的响应。使耦合分离称为 解耦 。解耦的目的是使各个自由度上(即各振动 模态 )的振动相对独立或分离,这样可对 隔振 效果不佳的自由度独立采取措施而不影响其他自由度方向上的有关性能。当各自由度独立后,可能产生共振的 频率 比存在耦合时要小,特别在激振能量大的方向上要保证 解耦

转自:http://baike.baidu.com/view/156245.htm
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值