1.耦合
1.1 定义
软件结构中不同模块间互连程度度量。
取决模块间接口复杂程度,通过接口数据。
追求尽可能松散耦合系统。

1.2原则
尽量使用数据耦合,少用控制耦合,限制公共环境耦合, 完全不用内容耦合。
1.3常见耦合(松散→紧密)
(1)非直接耦合
两个模块分别能独立地工作不需要另一模块存在。
(2)数据耦合
两模块通过参数交换数据信息。

(3)控制耦合
两模块通过参数交换控制信息(包括数字形式)

(4)公共环境耦合
两个或多个模块通过一公共数据环境作用。

两种可能:
- 一模块送数据,另一模块取,等价数据耦合。
- 两模块既往公共环境送又从里面取,介于数据耦合和控制耦合之间。

(5)内容耦合
- 一模块访问另一模块内部数据;
- 一模块不通过正常入口转到另一模块内部;
- 两模块有部分程序代码重叠(汇编程序);
- 一模块有多个入口。

2.内聚
2.1定义
模块内各元素彼此结合紧密程度。
2.2常见内聚(好→差)
(1)功能内聚(10分)
一模块中各部分是完成某一功能必不可少组成部分。
(2)顺序内聚(9分)
模块内处理元素同某功能密切相关,顺序执行。
(3)通信内聚(7分)
一模块内各功能部分都使用相同输入数据,或产生相同输出数据。

(4)过程内聚(5分)
模块内处理元素相关,特定次序执行。如把流程图中循环部分、判定部分、计算部分分成三个模块,这三个模块都是过程内聚模块。

(5)时间内聚(3分)
多为多功能模块,要求所有功能在同一时间内执行。如初始化模块和终止模块及紧急故障处理模块。
(6)逻辑内聚(1分)
一模块完成功能在逻辑上属相同相似一类。

(7)偶然内聚(0分)
模块内各部分间没有联系,即使有也很松散。
