1
 软件工程
1.6.3.2 4.3.2 总体设计方法

4.3.2 总体设计方法

结构化设计方法是在模块化、自顶向下细化、结构化程序设计等程序设计技术的基础上发展起来的。它属于面向数据流的设计方法,可以很方便地将数据流图表示的信息转换成程序结构的设计描述。

1.数据流图的类型

结构化设计方法把数据流图映射成软件结构,信息流的类型决定了映射的方法。信息流分为变换流和事物流两种类型,因此组成的数据流图也分为变换型数据流图和事物型数据流图等两类。

1)变换型数据流图

系统从输入设备获取信息,同时由外部形式变换成内部形式,进入系统的信息通过变换中心,经加工处理后沿输出通路变换成外部形式,最后由输出设备离开软件系统,具有这些特性的数据流图称为变换型数据流图。

变换型数据流图是一个线性结构,由输入、变换中心和输出3部分组成,如图4-4所示。

2)事务型数据流图

如果在一个数据流图中明显地存在着一个“事务中心”,即接受一项事务,并根据事务处理的特点和性质,选择分派一个适当的处理单元,给出结果,这种数据流图称为事务型数据流图。它由至少一条接受路径、一个事务中心与若干条动作路径组成,如图4-5所示。

img34

图4-4 变换型数据流图

img35

图4-5 事务型数据流图

2.设计过程

面向数据流设计方法的设计过程如图4-6所示。

img36

图4-6 面向数据流的设计方法的设计过程

3.变换分析

因为变换型结构由输入、处理和输出部分组成,所以从变换型数据流图导出变换型模块的结构图,可分三步进行。

1)找出系统的主加工

为了处理方便,先不考虑数据流图的一些支流,如出错处理等。

通常,数据流图中多股数据流的汇合处是系统的主加工。若没有明显的汇合处,则可先确定哪些数据流是逻辑输入和逻辑输出,从而获得主加工。

从物理输入端一步步向系统中间移动,直至到达这样一个数据流,它再不能被作为系统的输入,则其前一个数据流就是系统的逻辑输入,即离物理输入端最远的,但仍可视为是系统输入的那个数据流就是逻辑输入。

用类似的方法,从物理输出端一步步向系统中间移动,则离物理输出端最远的,但仍可视为系统输出的那个数据流就是逻辑输出。

逻辑输入和逻辑输出之间的加工就是要找的主加工,如图4-7所示。

2)设计顶层模块和第一层模块

首先在与主加工对应的位置上画出主模块,主模块的功能就是整个系统要做的工作,主模块称为主控制模块。主模块是模块结构图的“顶”,接着按“自顶向下,逐步细化”的思想来画模块结构图的各层。每一层均需按输入、变换、输出等分支来处理。模块结构图第一层的画法如下:

(1)为每一个逻辑输入画一个输入模块,其功能是向主模块提供数据;

(2)为每一个逻辑输出画一个输出模块,其功能是把主模块提供的数据输出;

(3)为主处理画一个变换模块,其功能是把逻辑输入变换成逻辑输出。

至此,结构图第一层就完成了。

img37

图4-7 在数据流图中找系统的主加工

在作图时应注意,主模块与第一层模块之间传送的数据要与数据流图(见图4-7)相对应。

3)设计中、下层模块

因为输入模块的功能是向调用它的模块提供数据,所以它本身也需要一个数据来源。此外,输入模块必须向调用模块提供所需的数据,因此它应具有变换功能,能够将输入数据按模块的要求进行变换,再提交该调用模块,从而为每个输入模块设计两个下层模块,其中一个是输入模块,另一个是变换模块。

同理,也应为每个输出模块设计两个下层模块:一个是变换模块,将调用模块所提供的数据变换成输出的形式;另一个是输出模块,将变换后的数据输出。

该过程由顶向下递归进行,直到系统的物理输入端或物理输出端为止,如图4-8所示。每设计出一个新模块,应同时给它起一个能反映模块功能的名字。

img38

图4-8 由变换型数据流图导出的初始模块结构图

运用上述方法,就可获得与数据流图相对应的初始结构图。

4.事务分析

当数据流图(见图4-9)呈现“束状”结构时,应采用事务分析的设计方法。就步骤而言,该方法与变换分析方法大部分类似,其主要差别在于由数据流图到模块结构的映射方式不同。

img39

图4-9 事务型数据流图

进行事务分析时,通常采用以下4步。

(1)确定以事务为中心的结构,包括找出事务中心和事务来源。以图4-9所示的典型事务型数据流结构为例进行说明。

(2)按功能划分事务,将具备相同功能的事务分为同一类,建立事务模块。

(3)为每个事务处理模块建立全部的操作层模块。其建立方法与变换分析方法类似,但事务处理模块可以共享某些操作模块。

(4)若有必要,则为操作层模块定义相应的细节模块,并尽可能使细节模块被多个操作模块共享。

例如,图4-9是一个以事务为中心的数据流图,显然,加工“确定事务类型”是它的事务中心。