概要设计
任务
模块和模块化
耦合和内聚
耦合
耦合:模块间联系的程度(依赖于模块间接口的复杂性)
1 非直接耦合
两模块间没有直接关系
2 数据耦合
两模块之间交换的是简单数据(数据输出、输出参数)
用水量,水费,电费,用电量就是数据输入输出的简单参数,这里构成的是数据耦合
3 特征耦合
模块之间交换的是数据结构
与数据耦合不同的是,这里预先定义了这样的数据结构:
房租水电+用水量+用电量+租房开始日期,而此时传递是数据结构,所以构成特征耦合
4 控制耦合
传递的信息中有控制信息(中等耦合)如果一个模块通过传送开关、标志、名字等控制信息,明显地控制选择另一模块的功能,就是控制耦合。
此时。模块间传递的信息不是一般的数据,而是控制信号
如图中,模块A通过传递一个控制标记给模块B,以便选择所需的操作。
此时模块A、B间就构成了控制耦合。
5 外部耦合
一组模块都访问同一全局变量
图中模块3和模块4都可以访问全局变量“日期”。
如果因为模块3错误的修改了“日期”,便会在模块4引用“日期”时得出错误的结果,虽然问题出在模块4,但是根源在于模块3,这就增加了调试和排错的困难。
6 公共耦合
一组模块都访问同一全局数据结构
7 内容耦合(最高的耦合)
图中模块M通过一条GOTO语句直接转移到模块N中去。如果模块N中的语句顺序发生了变换,就必须特别细心的检查会不会因此影响到模块M的执行结果。
此时,模块M和模块N构成了内容耦合。