软件工程7-面向过程的系统设计

面向过程的系统设计

总体设计

  • 首先研究、分析和审查数据流图。从软件的需求规格说明中弄清数 据流加工的过程,对于发现的问题及时解决。
  • 然后根据数据流图决定问题的类型。数据处理问题典型的类型有 两种:变换型和事务型。针对两种不同的类型分别进行分析处理。
  • 由数据流图推导出系统的初始结构图。
  • 利用一些启发式原则来改进系统的初始结构图,直到得到符合要 求的结构图为止。
  • 修改和补充数据词典。

系统结构图

模块

  • 传入模块:从下属模块取得数据,经过某些处理,再将其传送给上级模块。 它传送的数据流叫做逻辑输入数据流。
  • 传出模块:从上级模块获得数据,进行某些处理,再将其传送给下属模块。 它传送的数据流叫做逻辑输出数据流。
  • 变换模块:它从上级模块取得数据,进行特定的处理,转换成其它形式,再 传送回上级模块。它加工的数据流叫做变换数据流。
  • 协调模块:对所有下属模块进行协调和管理的模块。

image-20241028110021277

变换分析

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

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

变换分析方法由以下四步组成:

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

注意:

  • 在选择模块设计的次序时,必须对 一个模块的全部直接下属模块都设计完 成之后,才能转向另一个模块的下层模 块的设计;
  • 在设计下层模块时,应考虑模块的 耦合和内聚问题,以提高初始结构图的 质量。
  • 使用“黑箱”技术: 在设计当前模块时,先把这个模块的所有下层模块定义成“黑 箱”,在设计中利用它们时,暂时不考虑其内部结构和实现。在这一步定义好的“黑 箱”,在下一步就可以对它们进行设计和加工。这样,又会导致更多的“黑箱”。最 后,全部“黑箱”的内容和结构应完全被确定。
  • 在模块划分时,一个模块的直接下属模块一般在5个左右。如果直接下属模块超过 10个,可设立中间层次。
  • 如果出现了以下情况,就停止模块的功能分解:
    • 模块不能再细分为明显的子任务;
    • 分解成用户提供的模块或程序库的子程序;
    • 模块的界面是输入/输出设备传送的信息;
    • 模块不宜再分解得过小。

image-20241028110206123

事务分析

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

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

在很多软件应用中,存在某种作业 数据流,它可以引发一个或多个处 理,这些处理能够完成该作业要求 的功能。这种数据流就叫做事务。

与变换分析一样,事务分析也是从 分析数据流图开始,自顶向下,逐 步分解,建立系统结构图。

过程:

  1. 识别事务源:利用数据流图和数据词典,从问题定义和需求分析的结果中,找出各种需要处理的事 务。通常,事务来自物理输入装置。有时,设计人员还必须区别系统的输入、中心加 工和输出中产生的事务。
  2. 规定适当的事务型结构:在确定了该数据流图具有事务型特征之后,根据模块划分理论,建立适当的事务型结 构。
  3. 识别各种事务和它们定义的操作:从问题定义和需求分析中找出的事务及其操作所必需的全部信息,对于系统内部产生 的事务,必须仔细地定义它们的操作。
  4. 注意利用公用模块 在事务分析的过程中,如果不同事务的一些中间模块可由具有类似的语法和语义的若 干个低层模块组成,则可以把这些低层模块构造成公用模块
  5. 对每一事务,或对联系密切的一组事务,建立一个事务处理模块;如果发现在系 统中有类似的事务,可以把它们组成一个事务处理模块;
  6. 对事务处理模块规定它们全部的下层操作模块
  7. 对操作模块规定它们的全部细节模块

image-20241028110631858

混合结构分析

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

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

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

组件设计

结构化组件设计

组件级设计也称为过程设计,位于数据设计、体系结构设计和接口设计完成之后;

任何程序总可以用三种结构化的构成元素来设计和实现

  • 顺序:任何算法规约中的核心处理步骤
  • 条件:允许根据逻辑情况选择处理的方式
  • 重复:提供了循环

详细设计工具可以分为以下三类:

  • 图形设计符号:流程图、盒图等
  • 表格设计符号:决策表等
  • 程序设计语言:PDL等

流程图

利用各种方块图形、线条及箭头等符号来表达解决问题的步骤及进行的顺序;

流程图是算法的一种表示方式。

标准作业流程是企业界常用的一种作业方法,其目的在使每一项作业流程均能清楚呈现,任何人只要看 到流程图,便能一目了然,有助于相关作业人员对整体工作流程的掌握。

优点

  • 所有流程一目了然,工作人员能掌握全局。
  • 更换人手时,按图索骥,容易上手。
  • 所有流程在绘制时,很容易发现疏失之处,可适时予以调整更正,使各项作业更为 严谨。

基本符号

image-20241028111115247

image-20241028111128225

基本结构

  • 顺序结构:处理程序顺序进行
  • 选择结构:包括0二元选择,多重选择,流程依据某些条件,依条件是否成立,分别进行不同处理程序。
  • 循环结构
    • while-do结构,依据条件是否成立,决定执行的情况。当条件 成立时,不断重复执行处理程序,直到停止执行的条 件成立后,即离开重复执行,至下一个流程。
    • do-while结构,:重复执行处理程序,直到条件变成假(false)为止。

绘制原则

  • 各项步骤有选择或决策结果,如“可/否”、“通过/不通过”或其他相对文字时,请检查校正流程是否 有遗漏,以避免悬而未决的状况。
  • 流程图符号绘制排列顺序,为由上而下,由左而右。
  • 处理程序可用阿拉伯数字,从1开始,依处理程序排列顺序编号,并以文字依处理程序功能命名。
  • 相同流程图符号宜大小一致。
  • 路径符号宜避免互相交叉。
  • 同一路径符号的指示箭头应只有一个。
  • 开始符号在流程图中只能出现一次,但结束符号则不限。若流程图能一目了然,则开始符号和结束符号 可省略。
  • 选择结构与重复结构的选择或决策条件,文字叙述应简明清晰,路径加注“是”、“否”或其它相对性 文字指示说明。
  • 流程图中若有参考到其他已定义流程,可使用已定义处理程序符号,不必重复绘制。
  • 流程图若一页绘制不下,可以使用分级分页绘制方式,并在处理程序编号上表示其级别

盒图(N-S图)

五种基本控制结构有五种图形构件表示:

image-20241028111737767

决策表

  • 判定表用于表示程序的静态逻辑
  • 在判定表中的条件部分给出所有的两分支判断的列表,动作部分给出相应的处理
  • 要求将程序流程图中的多分支判断都改成两分支判断

PDL(伪代码)

PDL是一种用于描述功能模块的算法设计和加工细节的语言,称为程序设计语言。它是一种伪码。

伪码的语法规则分为“外语法”和“内语法”。

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