耦合 与 内聚

 

 在这里应用一些 有关于  耦合 与 内聚  的书面定义

 

 

 

在软件设计的过程中 软件一般都有模块的形式出现。

   一方面 按照开发人员条件将软件分成你个模块

  另一方面 按照软件的功能将软件分成相应的的模块。者往往是软件设计的 精要所在

在一般的软件设计过程和软件的长期应用、日后维护过程中都倾注于后者。

       一般较优秀的软件设计,应尽量做到高内聚,低耦合,即减弱模块之间的耦合性和提高模块内的内聚性,有利于提高模块的独立性。
模块独立性指每个模块只完成系统要求的独立子功能,并且与其他模块的联系最少且接口简单,两个定性的度量标准――耦合性和内聚性。

    模块的独立程度是评价设计好坏的重要度量标准。衡量软件的模块独立性使用耦合性和内聚性两个定性的度量标准。
     内聚性是一个模块内部各个元素间彼此结合的紧密程度的度量。内聚是从功能角度来度量模块内的联系。
     内聚有如下种类,他们之间的内聚性由弱到强排列为偶然内聚、逻辑内聚、时间内聚、过程内聚、通信内聚、顺序内聚、功能内聚。
      耦合性是模块间互相连接的紧密程度的度量。耦合可以分为下列几种,他们之间的耦合度由高到低排列为内容耦合、公共耦合、外部耦合、控制耦合、标记耦合、数据耦合、非直接耦合。

      (1)内容耦合。当一个模块直接修改或操作另一个模块的数据,或者直接转入另一个模块时,就发生了内容耦合。此时,被修改的模块完全依赖于修改它的模块。这是最高程度的耦合,也是最差的耦合。

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

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

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

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

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

  如果模块间必须存在耦合,就尽量使用数据耦合,少用控制耦合,限制公共耦合的范围,坚决避免使用内容耦合。

 

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

 

内聚强度

  内聚按强度从低到高有以下几种类型:

  (1)偶然内聚。如果一个模块的各成分之间毫无关系,则称为偶然内聚。

  (2)逻辑内聚。几个逻辑上相关的功能被放在同一模块中,则称为逻辑内聚。如一个模块读取各种不同类型外设的输入。尽管逻辑内聚比偶然内聚合理一些,但逻辑内聚的模块各成分在功能上并无关系,即使局部功能的修改有时也会影响全局,因此这类模块的修改也比较困难。

  (3)时间内聚。如果一个模块完成的功能必须在同一时间内执行(如系统初始化),但这些功能只是因为时间因素关联在一起,则称为时间内聚。

  (4)过程内聚。如果一个模块内部的处理成分是相关的,而且这些处理必须以特定的次序执行,则称为过程内聚。

  (5)通信内聚。如果一个模块的所有成分都操作同一数据集或生成同一数据集,则称为通信内聚。

  (6)顺序内聚。如果一个模块的各个成分和同一个功能密切相关,而且一个成分的输出作为另一个成分的输入,则称为顺序内聚。

  (7)功能内聚。模块的所有成分对于完成单一的功能都是必须的,则称为功能内聚。

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值