【软工】内聚耦合

模块

  内聚和耦合是主要描述模块内外联系的,所以我们了解内聚和耦合之前,我们先了解一下模块!

  模块:就是为了完成某一功能所需的一段程序或是子程序;或是能够编译程序、装配程序等处理的独立程序单位;或是指大型软件系统的一部分。

  模块化:能够把一个大而复杂的软件系统划分成易于理解的比较简单的模块结构。(按功能域划分)

  基本属性

   1. 功能:描述该模块实现什么功能

   2. 逻辑:描述模块内部怎么做

   3. 状态:该模块使用时的环境和条件

  模块的独立性:软件在系统中每个模块设计软件要求的具体的子功能。

  它的独立性的度量准则:模块间的耦合和内聚

  好的模块:高内聚,低耦合(主要是面向对象的设计,看类的内聚度是否高,耦合度是否低)

  高内聚,低耦合的好处:在系统的持续发展中,它会使系统有很好的重用性,维护性,扩展性,可以更高效的完成系统的维护开发,持续的支持业务发展!


内聚

内聚主要描述的是模块内功能的联系,高内聚就是模块内功能联系比较紧密,代码的相关性特别的强,程序设计的比较严谨!

内聚的分类:

1. 功能内聚(最理想的内聚)

  一个模块中各个部分都是完成某一具体功能必不可少的组成部分,是不可分割的!

  功能内聚是最强的内聚,其最大的优点是它的功能明确。判断一个模块是否功能内聚,一般从模块名称就能看出。如果模块名称只有一个动词和一个特定的目标(单数名词),一般来说就是功能内聚,如:“计算水费”、“计算产值”等模块。功能内聚一般出现在软件结构图的较低层次上。

  功能内聚模块的一个重要特点是:他是一个“暗盒”,对于该模块的调用者来说,只需要知道这个模块能做什么,而不需要知道这个模块是如何做的。

2. 信息内聚

  这个模块完成多个功能,各个功能都在同一数据结构上操作,每一项功能有一个唯一的入口点。

3. 通信内聚

  如果一个模块内各功能部分都使用了相同的输入数据,或产生了相同的输出数据,则称之为通信内聚模型。

这里写图片描述

4. 过程内聚

  使用流程作为工具设计程序时,把流程图中的某一个部分划分出组成模块,就得到过程内聚模块。

5. 时间内聚

  时间内聚模块的各个功能的执行与时间有关,通常要求所有功能必须在同一时间段内执行。

6. 逻辑内聚

  这种模块把几种相关功能组合在一起。

这里写图片描述

7. 巧合内聚

  各部分之间没有联系,或者即使有联系,这种联系也很松散。

这里写图片描述


耦合

  耦合:是软件结构中各模块之间相互连接的一种度量,耦合强弱取决于模块间接口的复杂程度、进入或访问一个模块的点以及通过接口的数据。

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

这里写图片描述

  我们进行模块设计的时候遵循的原则:

  • 尽量使用数据耦合
  • 少用控制耦合
  • 限制公共耦合
  • 完全不用公共耦合

1. 非直接耦合

  就是两个模块之间没有直接的关系,这就是非直接耦合!(如下图)

这里写图片描述

2. 数据耦合

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

3. 标记耦合

  如果一组模块通过参数表传递记录信息,那就称之为标记耦合。

  标记耦合:调用模块和被调用模块之间传递数据结构而不是简单数据,同时也称作特征耦合。表就和的模块间传递的不是简单变量,而是像高级语言中的数据名、记录名和文件名等数据结果,这些名字即为标记,其实传递的是地址。

4. 控制耦合

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

这里写图片描述

5. 外部耦合

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

6. 公共耦合

  若一组模块都访问同一个公共数据环境,则它们之间的耦合就称之为公共耦合。

  公共耦合分为两种情况:

  松散公共耦合
这里写图片描述

  紧密公共耦合
这里写图片描述

7. 内容耦合

  一个模块直接访问另一模块的内容,则称这两个模块为内容耦合。

  内容耦合可能在汇编语言中出现。大多数高级语言都已设计成不允许出现内容耦合。这种耦合的耦合性最强,模块独立性最弱。
这里写图片描述


                  知识在于积累

评论 19
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值