耦合类型:(由高到低)
1 内容耦合:
一个模块直接访问另一个模块的内部数据。
通过不正常的跳转方式直接跳转到另一模块内部
2 公共耦合
若一组模块访问同一公共数据环境,则他们之间的耦合称为公共耦合。
公共数据环境包括全局数据结构,共享的通信区,内存的公共覆盖区。
3 外部耦合
一组模块都访问同一全局简单变量,而且不是通过参数表传递该全局变量的信息。
4 控制耦合
一个模块通过开关,标志等控制信息,控制另一模块。
5 标记耦合
一组模块通过参数表传递记录信息,就是标记耦合,这个记录是某一数据结构的子结构,不是简单变量。
6 数据耦合
一个模块访问另一模块,彼此之间通过简单数据参数,来交互输入输出信息。
7 非直接耦合
一个模块和另一模块之间没有直接的调用关系,而是通过主模块进行调用。
内聚类型(由低到高)
1 偶然内聚
模块内的各元素直接没有直接的内聚关系,只是恰好被放到一起。
2 逻辑内聚
逻辑内聚指模块内执行若干个逻辑上相似的功能,通过参数决定该模块完成哪一个功能。
3 时间内聚
把需要同时执行的动作组合在一起形成的模块
void init(){
}
void start(){
}
这两个模块必须同时执行才能完成功能。
4 过程内聚
过程内聚指一个模块完成多个任务,这些任务必须按照指定的过程执行。
void open_file(char *filename) {
// 打开文件
}
void read_file(char *buffer, int size) {
// 读取文件
}
void close_file() {
// 关闭文件
}
这三个函数实现了打开、读取和关闭文件的操作。它们必须按顺序执行才能完成文件的读写操作。
5 通信内聚
通信内聚指所有处理元素都在同一数据结构上执行。
6 顺序内聚
顺序内聚是指一个模块中的各个处理元素都密切相关于同一各功能且必须顺序执行,前一个功能元素的输出就是下一个功能的输入。
7 功能内聚
功能内聚是内聚度最高的一种类型。指模块内的所有元素共同作用完成一个功能,缺一不可。