1.改进软件结构提高模块独立性
初步结构分解或合并,降低耦合提高内聚。

2.模块规模应该适中
- 过大分解不充分,但进一步分解不应降低模块独立性。
- 过小开销大于有效操作,模块数目过多系统接口复杂。
- 通常语句行数在50~100(一页纸),最多不超过500行。
3.深度、宽度、扇出和扇入应适当
3.1深度
软件结构控制层数,标志一系统大小和复杂程度。
3.2宽度
软件结构同一层模块数最大值,越大系统越复杂。

3.3扇出
一模块直接控制(调用)模块数,过大,模块复杂,过小(如1)不好。3-9。

3.4扇入
有多少上级模块直接调用它,越大共享该模块上级模块越多。

3.5扇出扇入不合适改善
加入中间层

示例:

4.模块作用域应在控制域内
作用域:受该模块内判定影响的所有模块集合。
控制域:模块本身及所有直接或间接从属它的模块集合。
若模块作用域不在控制域内,会增大模块间控制耦合。
示例:D模块的判定条件谓语E模块内,作用域不在控制域之内

改善一:控制域扩大,判定条件上移

改善二:将作用域不在控制域内的模块下移

5.降低模块接口复杂程度
模块接口复杂是软件发生错误一主要原因。应使信息传递简单且和模块功能一致。
6.设计单入口、单出口模块
避免内容耦合。
7.模块功能可预测
输入数据相同,产生同样输出。模块功能防止过分受限。
不可预测模块:以前的标记不可知

过份受限模块
