模块独立(耦合性与内聚性)

模块独立性指模块不依赖其他模块独立完成功能的程度。模块独立程度的两个定性标准度量是耦合内聚

耦合性衡量不同模块彼此之间相互依赖(连接)的紧密程度,耦合要低,即每个模块与其他模块的关系要简单;内聚性衡量一个模块内部各个元素紧密结合的程度(比如说,数据、函数高重复利用率能提高模块内聚性),内聚要高,每个模块完成一个相对独立的子功能。

(1)耦合:一个软件结构内不同模块直接互连程度的度量(力求低耦合)

分为四种类型(从低到高排序),

①数据耦合

两个模块间通过参数仅交换数据

②控制耦合

两个模块间传递的信息中含有控制信息。

缺陷:

ⅰ.被调用模块需要知道调用模块的内部结构和逻辑,降低了重用的可能性。

ⅱ.控制耦合往往是多余的,把模块适当分解后,通常可用数据耦合代替它

③公共耦合

两个或两个以上的模块通过一个公共数据环境相互作用。公共环境可以是全程变量、共享的通信区、内存的公共覆盖区、任何存储介质上的文件、物理设备等。

缺陷:

ⅰ.公共耦合的模块难以重用,必须提供一个全局的变量清单。

ⅱ.即使模块本身不改变,它和产品中其他模块之间公共环境耦合的实例数也会变化非常的大。因此,这种耦合的潜在危险很大,模块暴露出比必须多得多的数据,导致难以控制数据的存取,从而导致计算机犯罪。

④内容耦合(最高程度)

ⅰ.一个模块访问另一个模块的内部数据

ⅱ.一个模块不通过正常入口转到另一个模块的内部

ⅲ.两个模块有一部分代码重叠

ⅳ.一个模块有多个入口

降低模块的设计原则:

①尽量使用数据耦合

②少用控制耦合

③限制公共耦合的范围

④完全不使用内容耦合

补充:

面对对象设计中,耦合指不同对象之间相互关联的紧密程度

①交互耦合(应尽可能松散)

对象之间的耦合通过消息实现连接

②继承耦合(应尽可能紧密)

继承是一般类和特殊类之间耦合的一种形式。通过继承关系结合起来的基类和派生类,构成系统中粒度更大的模块。

(2)内聚:一个模块内各个元素彼此结合的紧密程度。(力求高内聚)

(内聚和耦合是密切相关的,高内聚往往就意味着低耦合)

内聚性从低到高分为7种三个等级,(从低到高)

低等级:偶然内聚、逻辑内聚、时间内聚

中等级:过程内聚、通信内聚

高等级:顺序内聚、功能内聚

①偶然内聚

一个模块完成一组任务,这些任务即使有联系,关系也是很松散的。

②逻辑内聚

模块完成的任务从逻辑上属于相同或相似的一类。

③时间内聚

如果一个模块包含的任务必须在同一段时间内执行。

④过程内聚

一个模块内处理的元素是相关的,并且必须按特定次序执行。

⑤通信内聚

模块中所有元素都使用同一个输入数据和(或)产生同一个输出数据

⑥顺序内聚

一个模块内的处理元素属于一个整体,完成一个单一的功能。

⑦功能内聚

模块中所有的处理元素属于一个整体,完成一个单一的功能。

图解

f0a2a761935c44feb66c4b8c066566d4.jpg

 7539f7ff4fad4e769c42951c6a6dbbf6.jpg

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值