内聚

模块

  • 指整个程序中一些相对对独立的程序单元,每个程序单元完成和实现一个相对独立的软件功能。通俗点就是一些功能独立的程序段。

  • 每个程序模块要有自己的名称、标识符、接口等外部特征。

  • 模块的内聚:模块内部的交互程度

  • 模块间的耦合:模块之间的交互程度

内聚

  • 模块内部的交互程度越高越好
  • 模块的内聚性越高越好

偶然性内聚(Coincidental Cohesion)

  • 一个模块内的各处理元素之间没有任何联系,只是偶然地被凑到一起。

  • 问题

    • 降低了模块的可读性
    • 降低了模块的可维护性
    • 模块的可重复时候性也非常低
  • 解决方法

    • 将该模块拆分成多个模块
    • 然后让每个模块只做一件事情

逻辑性内聚(Logical Cohesion)

  • 指模块内执行多个逻辑上相似的功能,通过参数确定该模块完成哪一个功能。
  • 问题
    • 模块内部结构非常复杂,接口也非常复杂
    • 需读懂接口,否则将无法调用
    • 模块将非常难以修改
    • 在逻辑型内聚的内部,有很多操作交织在一起,增加了调用模块和被调用模块之间的耦合度
    • 这种调用关系导致了比较低的效率

时间性内聚(Temporal Cohesion)

  • 把需要同时执行的动作组合在一起形成的模块。
  • 如:异常处理模块,终止模块:释放一些资源,关闭一些正打开的文件(这些操作本质上没有什么关联性,只不过这些操作需要在相同的时间段内被执行。
  • 问题
    • 模块内部相互之间的关联性是非常弱的,这些操作显然跟其他模块内部的操作有较强的关联度
    • 不可重用

过程性内聚(Procedural Cohesion)

  • 构件或者操作的组合方式时,允许在调用前面的构件或操作之后,马上调用后面的构件或操作,即使两者之间没有数据进行传递。
  • 问题
    • 模块不可重用

通信性内聚

  • 执行一系列与产品要遵循的步骤顺序有关的操作,并且,如果所有操作都对相同的数据进行,则该模块具有通信性内聚。
  • 这些操作在执行的过程上相关联,而且这些操作在相同的输入或输出数据进行操作。
  • 问题
    • 具有非常弱的可重用性

功能性内聚

  • 指模块内所有元素共同完成一个功能,缺一不可,因此模块不能再分割。

  • 只做一个操作

  • 优点

    • 具有更高的可重用性
    • 使纠错性的维护更加容易(因为具有单一的功能,而且更容易做到故障隔离,自然也会造成更少的回归错误)
    • 该产品更容易进行扩展

信息性内聚

  • 如果模块进行许多操作,每个都有各自的入口点,每个操作的代码相对独立,而且所有的操作都对相同的数据结构完成。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值