耦合性也称块间联系。指软件系统结构中各模块间相互联系紧密程度的一种度量。
模块之间联系越紧密,其耦合性就越强,模块的独立性则越差。模块间耦合高低取决于模块间接口的复杂性、调用的方式及传递的信息。
- 非直接耦合:指两个模块之间没有直接关系,它们之间的联系完全是通过主模块的控制和调用来实现的。
- 数据耦合: 指两个模块之间通过数据参数(基本类型的数据,不是控制变量、全局简单变量、公共数据结构)交换信息。
--相当于高级语言的值传递
- 标记耦合: 指两个模块之间通过参数表(数据结构)传递记录信息。
--如高级语言中的数组名、记录名、文件名等这些名字即标记,其实传递的是这个数据结构的地址;
- 控制耦合: 指一个模块通过传递控制变量(如开关、标志等)控制选择另一个模块的功能。
- 外部耦合:指一组模块都访问同一全局简单变量而不是同一全局数据结构,而且不是通过参数表传递该全局变量的信息。
- 公共耦合: 指一组模块通过一个公共数据环境相互作用
--公共的数据环境可以是全局数据结构、共享的通信区、内存的公共覆盖区、任何存储介质上的文件 、物理设备等。
- 内容耦合: 如果发生下列情形之一,两个模块之间就发生了内容耦合。
- 一个模块直接访问另一个模块的内部数据
- 一个模块不通过正常入口而转入另一个模块内部
- 两个模块有一部分程序代码重叠(只可能出现在汇编语言中)
- 一个模块有多个入口
内聚性又称块内联系。指模块的功能强度的度量,即一个模块内部各个元素彼此结合的紧密程度的度量。若一个模块内各元素(语名之间、程序段之间)联系的越紧密,则它的内聚性就越高。
- 偶然内聚: 指一个模块内的各处理元素之间没有任何联系。
- 逻辑内聚: 指一个模块内包含几个逻辑上相关的功能,通过传送给该模块的判定参数确定该模块应执行哪一个功能。
- 时间内聚: 指一个模块所包含的任务必须在同一时间段内执行。(初始化模块和终止模块就是时间内聚模块)
- 过程内聚:指一个模块内的处理是相关的,且必须以特定的次序执行。
- 通信内聚: 指模块内所有处理成分都在同一个数据结构上操作(有时称信息内聚),或者指各处理使用相同的输入数据或者产生相同的输出数据。
- 顺序内聚:指一个模块的各个处理成分和同一功能相关且必须顺序执行,且一个成分的输出作为另一个成分的输入。
- 功能内聚: 指一个模块内各个部分都是完成某一具体功能必不可少的组成部分。
5 通信内聚: 指一个模块各功能部分都使用了相同的输入数据,或产生了相同的输出数据。
6信息内聚:一个模块能够完成多个功能,各个功能都在同一数据结构上操作,每一项功能有唯一的入口点。(在一个表上进行的增删改查)