随笔 - 741  文章 - 0  评论 - 260  阅读 - 416万

模块独立性原理

模块独立程度的度量标准

(1)耦合 不同模块之间的互联程度的度量     

2)内聚 模块内部彼此结合的紧密程度的度量  

耦合的强弱取决于什么?

    ► 模块之间接口的复杂程度

        ► 调用模块的方式

        ► 通过接口的数据

 

怎样具体区分模块间耦合程度的强弱呢?

①  非直接耦合(Nondirect  Coupling)

► 两个模块没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的
► 非直接耦合的模块独立性最强。

②  数据耦合(Data  Coupling)

 ► 两个模块彼此间通过参数来交换信息,而且交换的信息仅仅是数据。

 ► 数据耦合属于松散耦合。

 ③ 特征耦合(Stamp  Coupling)

► 当把整个数据结构作为参数传递而被调用的模块只需要使用其中一部分数据元素时,就出现了特征耦合。

 ④  控制耦合(Control  Coupling)

  ► 两个模块彼此间通过参数来交换信息,如果传递的信息中有控制信息,这种耦合称为控制耦合。

⑤  公共环境耦合(Common  Coupling)

 ► 当两个或多个模块通过一个公共数据环境相互作用时,它们之间的耦合称为公共环境耦合。

 ► 公共数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区等。

 ► 公共耦合的复杂程度随耦合模块的个数增加而显著增加。

 ►  若只是两模块间有公共数据环境,则公共耦合有两种情况:松散公共耦合和紧密公共耦合。

 ⑥  内容耦合(Content  Coupling)

► 一个模块直接访问另一个模块的内部数据;

► 一个模块不通过正常入口转到另一模块内部;

► 两个模块有一部分程序代码重迭(只可能出现在汇编语言中);

► 一个模块有多个入口。

坚决避免使用内容耦合  

 

★ 设计原则

        ①  尽量使用数据耦合,

        ② 少用控制耦合和特征耦合,

        ③  限制公共环境耦合的范围,

        ④ 完全不用内容耦合。

          

内聚可以分为哪几类?

问题4. 怎样具体区分模块内聚程度的高低呢?

①  偶然内聚(Coincidental  Cohesion)

②  逻辑内聚(Logical  Cohesion)

   ③   时间内聚(Classical  Cohesion)

►  时间内聚又称为经典内聚。这种模块大多为多功能模块,但模块的各个功能的执行与时间有关,通常要求所有功能必须在同

      一时间段内执行。

►  例如,初始化模块和终止模块就是时间内聚模块。

④  过程内聚(Procedural  Cohesion)

⑤  通信内聚(Communication  Cohesion)

⑥  顺序内聚(Sequential  Cohesion)

⑦  功能内聚(Functional  Cohesion)

 ► 一个模块内所有处理元素属于一个整体,完成一个单一的功能,则称为功能内聚。

 ► 功能内聚是最高程度的内聚,内聚性最强。

      

posted on   莫水千流  阅读(2423)  评论(0编辑  收藏  举报
编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· DeepSeek 开源周回顾「GitHub 热点速览」
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示