4.2 面向过程的设计:流程图
面向过程的设计
4.2 面向过程的总体设计
结构化的总体设计方法
•首先研究、分析和审查数据流图。 从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。
•然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的类型分别进行分析处理。
•由数据流图推导出系统的初始结构图。
•利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。【系统结构图】
•修改和补充数据词典。
在系统结构图中的模块
▪传入模块 ─ 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。
▪传出模块 ─ 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。
▪变换模块 ─ 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。
▪协调模块 ─ 对所有下属模块进行协调和管理的模块。
变换型系统结构图
▪变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。
▪相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。
一般对应四个节点:取得输入、变换节点、取得输出、给出输出。其中“取得输出”是中心节点,另三个节点都有可能与其他变换结构的节点合并。
事务型系统结构图
它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。
在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块。
变换与事务分析
- 在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。
- 与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统结构图。
变换分析过程
- 重画数据流图
- 区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分
- 进行一级分解,设计上层模块
- 进行二级分解,设计输入、输出和中心变换部分的中、下层模块
变换分析过程注意事项
- 深度遍历模块设计
- 耦合与内聚
- 使用“黑箱”技术
- 控制直接下属模块数
- 停止模块功能分解的情况
事务分析过程
混合结构分析
•变换分析是软件系统结构设计的主要方法。
•一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。
•所以,我们通常利用以变换分析为主、事务分析为辅的方式进行软件结构设计。
详细设计工具
可以分为以下三类:
- 图形设计符号:流程图、盒图等
- 表格设计符号:决策表等
- 程序设计语言:PDL等
流程图(flow chart)
- •“利用各种方块图形、线条及箭头等符号来表达解决问题的步骤及进行的顺序;
- •是算法的一种表示方式。标准作业流程”(SOP, Standard operating procedure)
- •企业界常用的一种作业方法, 其目的在使每一项作业流程均能清楚呈现,任何人只要看到流程图,便能一目了然, 有助于相关作业人员对整体工作流程的掌握。
优点
-
所有流程一目了然,工作人员能掌握全局。
-
更换人手时,按图索骥,容易上手。
-
所有流程在绘制时,很容易发现疏失之处,可适时予以调整更正,使各项作业更为严谨。
流程图的基本符号
流程图的基本结构
•顺序结构(Sequence)
•选择结构(Selection)【二元选择结构、多重选择结构】
•循环结构(Iteration)【while-do结构、do-while结构】
顺序结构(Sequence)
二元选择结构(基本结构)
语法
If (条件) {
处理程序1;
} else {
处理程序2;
}
If (条件) {
处理程序3;
}
多重选择结构
语法
switch (条件) {
case p=1:
处理程序1;
case p=2:
处理程序2;
…
case p=n:
处理程序n;
}
面向过程的其他组件设计方法:
盒图(N-S图)
五种基本控制结构由五种图形构件表示。
盒图示例
优点:容易确定局部与全局数据的作用域,易于发现程序结构性错误(比如缺少分支)等;
缺点:复杂度接近代码本身,修改需要重画整个图。
PDL (程序设计语言)
-
是一种用于描述功能模块的算法设计和加工细节的语言。
-
它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。
-
具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词汇。
判定表(决策表)
•判定表用于表示程序的静态逻辑
在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理
要求将程序流程图中的多分支判断都改成两分支判断