4.1 系统结构设计
4.1.1 系统结构设计的基本原则
1. 结构化设计的基本思想
结构化设计的基本思想是将一个系统分为若干个彼此具
有一定独立性,同时又有一定联系的组成部分,这些组成部分
称为模块。对每一个系统都可以按功能由顶向下逐层分解为一
个多层次的具有独立功能的许多模块,一直分解到每一个模块
都能很容易实现为止。
结构化设计方法集中体现了软件工程中的模块化原则,
模块化可以使系统开发的整体工作量变小。在使用模块化方法
时应注意模块化是与模块独立性紧密相连的,如果模块之间联
系过于密切,虽然每个模块工作量减小,但模块之间接口将很
复杂,这将使得接口工作量增大。
2. 模块的耦合性
耦合性表现了模块的外部特征,模块之间的耦合程度越低,
说明模块的独立性越好。常见的耦合方式有下面几种:
1) 非直接耦合
非直接耦合是指两个模块能彼此独立工作,没有直接的关
系,仅通过主程序的控制和调用来实现,两者之间不传递任何信
息。
2) 数据耦合
数据耦合是指两个模块之间通过数据交换实现相互间的联
系。一个模块带参数调用另一个模块,被调用模块执行后返回一
个参数给调用它的模块。传入和返回的参数都是单个的数据项。
3) 标记耦合
标记耦合是指一个模块调用另一个模块时,不是传送
数据本身,而是传送存放数据的变量名或文件名等数据标
记。这种耦合比数据耦合具有更多的出错机会,复杂程度
高于数据耦合。例如, C 语言中通过传递一个变量的地址
给另一个模块就是一种标记耦合的形式,它的复杂程度很
显然高于值传递,出错的可能性更大。
4) 控制耦合
一个模块调用另一个模块时传递的不是数据参数,而是一个
控制变量,它用来控制被调用模块的功能,称为控制耦合。通常
被调用的模块含有多种功能,由传递的控制变量决定调用哪一种
功能。被调用模块的逻辑控制走向,受控于调用模块。
控制耦合的耦合程度较高,在设计时应尽量避免。控制耦合增加
了理解和编程的复杂性,我们看一下图 4.1 所示的例子。假设模
块 A 通过传递开关变量 f 调用模块 B (图 4.1 (
a
)),模块 B
返回变量 x 。模块 B 中包含有两种功能(图 4.1 (
b
)),则在
编制模块 A 的程序时首先要理解开关变量 f 的含义,同时在模块 A
中还必须设置开关变量的值。模块 A 可能还要根据不同的返回值
进行不同的处理。