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