软件工程之结构化分析与设计

文章链接:https://codemouse.online/archives/2020-03-27132020

结构化分析方法概述

  • 一种面向数据流的传统软件开发方法,以数据流为中心构建软件的分析模型和设计模型

  • 分为:

    1. 结构化分析(Structured Analysis 简称SA)
    2. 结构化设计(Structuresd Design 简称SD)
    3. 结构化程序设计(Structured Programmin 简称SP)
  • 主要思想:抽象与自顶向下的逐层分解

  • 关系

  • 分层:根据自顶向下逐层分解的思想将数据流图画成层次结构,每个层次画在独立的数据流图中,加工个数可大致控制在“7加减2”的范围中。

  • 示例——资格和水平考试的考务处理系统

考务处理系统顶层图:

  • 步骤

    1. 画系统的输入和输出。
    2. 画系统内部。
    3. 画加工内部。
    4. 重复第3步,直至每个尚未分解的加工都足够简单(即不必再分解)

分层数据流图的审查

  • 概念:检查图中是否存在错误或不合理(不理想)的部分。

  • 两大特性:

    一致性:分层DFD中不存在矛盾和冲突。

    完整性:是否有遗漏的数据流、加工等。

分层数据流图的一致性

  1. 父图与子图平衡
  2. 数据守恒
  3. 局部文件:在从最外层到内存过程中,第一次出现的时候(父图),一定要有读和写,而在后面的子图中,只会出现读或者写。
  4. 一个加工的输出数据流不能与该加工的输入数据流同名
  • 父图与子图不平衡的实例

  • 数据不守恒的实例

  • 加工的输出/输入数据流不能同名

    • 同一个加工的输出数据流和输入数据流即使组成成份相同,仍应对它们取不同的名字,以表示它们是不同数据流

    • 例如,“ 名单”和“合格 名单”

    • 允许一个加工有二个相同的数据流分别流向二个不同加工

分层数据流图的完整性

  1. 每个加工至少有一个输入数据流和一个输出数据流。
  2. 在整套分层数据流中,每个文件至少有一个加工读该文件,有另一个加工写该文件。
  3. 分层数据流图中的每个数据流和文件都必须命名(除了流入或流出文件的数据流) 。
  4. 分层DFD中的每个基本加工(即不再分解子图的加工)都应有一个加工规约。
  • 其它需注意的问题

    1. 适当命名

    2. 画数据流而不是画控制流

    3. 避免一个加工有过多的数据流

    4. 分解尽可能均匀

    5. 先考虑稳定状态,忽略琐碎的枝节

    6. 随时准备重画

  • 数据流图重新分解示例

启发式设计策略

  • 改造程序结构图,降低耦合度,提高内聚度
  • 避免高扇出,并随着深度的增加,力求高扇入
  • 降低模块接口的复杂程度和冗余程度,提高一致性
  • 模块的功能应是可预测的,避免对模块施加过多限制

事务流

    进行第一级分解

    • 分解步骤如下

      • 输入控制模块的分解:从变换中心的边界开始,沿着输入路径向外移动,把输入路径上的每个加工映射成结构图中受输入控制模块控制的一个低层模块
      • 输出控制模块的分解
      • 变换控制模块的分解:把变换中心的每个加工映射成结构图中受变换控制模块控制的一个低层模块

    “统计成绩”第二级分解的结构图

事务分析的步骤

  • 确定事务中心:数条动作路径的起点,动作路径呈幅射状从该点流出

  • 将DFD映射成事务型的结构图

  • 分解每条动作路径所对应的结构图

    接收模块的分解
    动作路径控制模块的分解

分层DFD的映射

  • 0层图
  • “考试 名”结构图的改进-1

    由于检查 名和输入 名可以一起完成,而打印 名单出错信息可以在检查 名单后干,直接合并在一起,变成输入并检查 名单。

      “考试 名”结构图的改进-3

      输入控制, 名处理和输出控制没有实质作用,应该作为 可以直接融合进考试 名中。

      “考务处理系统”结构图的整体改进

      由于分析试题难度和分类统计跟统计成绩没有特别大的联系,所以可以直接提出来做一个菜单,属于自己判断,可以放,可以不放。

    • 应尽可能研究整张结构图,而不是只考虑其中的一部分
    • 声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2020年5月18日
下一篇 2020年5月18日

相关推荐