4.2 面向过程的设计:流程图

面向过程的设计

4.2 面向过程的总体设计

结构化的总体设计方法

•首先研究、分析和审查数据流图。 从软件的需求规格说明中弄清数据流加工的过程,对于发现的问题及时解决。

•然后根据数据流图决定问题的类型。数据处理问题典型的类型有两种:变换型和事务型。针对两种不同的类型分别进行分析处理。

•由数据流图推导出系统的初始结构图。

•利用一些启发式原则来改进系统的初始结构图,直到得到符合要求的结构图为止。【系统结构图】

•修改和补充数据词典。

在系统结构图中的模块

▪传入模块 ─ 从下属模块取得数据,经过某些处理,再将其传送给上级模块。它传送的数据流叫做逻辑输入数据流。

▪传出模块 ─ 从上级模块获得数据,进行某些处理,再将其传送给下属模块。它传送的数据流叫做逻辑输出数据流。

▪变换模块 ─ 它从上级模块取得数据,进行特定的处理,转换成其它形式,再传送回上级模块。它加工的数据流叫做变换数据流。

▪协调模块 ─ 对所有下属模块进行协调和管理的模块。

变换型系统结构图

▪变换型数据处理问题的工作过程大致分为三步,即取得数据,变换数据和给出数据。

▪相应于取得数据、变换数据、给出数据,变换型系统结构图由输入、中心变换和输出等三部分组成。

一般对应四个节点:取得输入、变换节点、取得输出、给出输出。其中“取得输出”是中心节点,另三个节点都有可能与其他变换结构的节点合并。

事务型系统结构图

它接受一项事务,根据事务处理的特点和性质,选择分派一个适当的处理单元,然后给出结果。

在事务型系统结构图中,事务中心模块按所接受的事务的类型,选择某一事务处理模块执行。各事务处理模块并列。每个事务处理模块可能要调用若干个操作模块,而操作模块又可能调用若干个细节模块

变换与事务分析

  • 在很多软件应用中,存在某种作业数据流,它可以引发一个或多个处理,这些处理能够完成该作业要求的功能。这种数据流就叫做事务。
  • 与变换分析一样,事务分析也是从分析数据流图开始,自顶向下,逐步分解,建立系统结构图。

变换分析过程

  1. 重画数据流图
  2. 区分有效(逻辑)输入、有效(逻辑)输出和中心变换部分
  3. 进行一级分解,设计上层模块
  4. 进行二级分解,设计输入、输出和中心变换部分的中、下层模块

变换分析过程注意事项

  1. 深度遍历模块设计
  2. 耦合与内聚
  3. 使用“黑箱”技术
  4. 控制直接下属模块数
  5. 停止模块功能分解的情况

事务分析过程

混合结构分析

•变换分析是软件系统结构设计的主要方法。

•一般,一个大型的软件系统是变换型结构和事务型结构的混合结构。

•所以,我们通常利用以变换分析为主、事务分析为辅的方式进行软件结构设计。

详细设计工具

可以分为以下三类:

  • 图形设计符号:流程图、盒图等
  • 表格设计符号:决策表等
  • 程序设计语言: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 (程序设计语言)

  • 是一种用于描述功能模块的算法设计和加工细节的语言。

  • 它是一种伪码。伪码的语法规则分为“外语法”和“内语法”。

  • 具有严格的关键字外语法,用于定义控制结构和数据结构,同时它的表示实际操作和条件的内语法又是灵活自由的,可使用自然语言的词汇。

判定表(决策表)

•判定表用于表示程序的静态逻辑

在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理

要求将程序流程图中的多分支判断都改成两分支判断

无多分支流程图—>判定图

posted @   Dinesaw  阅读(1229)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示