耦合
耦合是模块之间的相互独立性(互相连接的紧密程度)的度量,耦合取决于各个模块之间接口的复杂程度、调用模块的方式以及通过接口的信息类型等。
耦合类型
-
无直接耦合:指两个模块之间没有直接的关系,它们分别从属于不同模块的控制与调用,它们之间不传递任何信息。因此,模块间耦合性最弱,模块独立性最高。
-
数据耦合:指两个模块之间有调用关系,传递的只是简单的数据值,相当于高级语言中的值传递。
-
标记耦合:指两个模块之间传递的是数据结构。
-
控制耦合:指一个模块调用另一个模块时,传递的是控制变量,被调用的模块通过该控制变量的值有选择的执行模块内的某一个功能。因此,被调用模块应具有多个功能,那个功能起作用受调用模块控制。
-
外部耦合:模块之间通过软件之外的环境联合(如I/O将模块耦合到特定的设备、格式、通信协议上)时称为外部耦合。
-
公共耦合:指通过一个公共数据环境相互作用的那些模块间的耦合。
-
内容耦合:当一个模块直接使用另一个模块内部的数据,或通过非正常的入口转入另一个模块内部时,这种模块之间的耦合称为内容耦合。
内聚
内聚是对一个模块内的各个元素彼此结合的紧密程度的度量。一个内聚程度高的模块(在理想情况下)应当只做一件事情。
内聚类型:
- 偶然内聚(巧合内聚):指一个模块内的各处理元素之间没有任何联系。
- 逻辑内聚:把模块内执行若干个逻辑上相似的功能,通过参数确定该模块完成那一个功能。
- 时间内聚:把需要同时执行的动作组合在一起形成的模块称为时间内聚模块。
- 过程内聚:指一个模块内完成多个任务,这些任务必须按照指定的过程执行。
- 通信内聚:指模块内的所有处理元素都在同一个数据结构上操作,或者各处理使用相同的输入数据或者产生相同的输出数据。
- 顺序内聚:指一个模块内的各个处理元素都密切相关于同一功能且必须顺序执行,前一个功能元素的输出就是下一个功能元素的输入。
- 功能内聚:这个是最强的内聚,指模块内的所有元素共同作用完成同一个功能,缺一不可。