写点什么

一文搞定架构思维,DFD 的结构化分析,只需明白这 3 点

作者:老崔说架构
  • 2022 年 8 月 18 日
    湖北
  • 本文字数:1319 字

    阅读完需:约 4 分钟


在架构设计中为了更加清晰地将业务进行拆解,通常会使用到结构化分析的方法。结构化分析方法的基本思想是自顶向下逐层分解。其目的是为了将复杂的问题进行拆解和抽象。

因为,对复杂的业务问题,一时间人们很难问题的所有方面和全部细节,需要将大问题分解成小问题,小问题分解成更小的问题,经过多次逐层分解,让最底层的问题变得足够简单、容易解决的,让问题更容易量化、评估、定义。

结构化分析的目的就是化繁为简,当然这都是概念上的定义,为了实现上述功能会提供一些工具支撑结构化分析的思想,工具包括:数据流图(Data Flow Diagram,DFD)、数据字典(Data Dictionary,DD)、结构化语言、判定表、判定树等等。在众多的工具中给大家介绍使用比较普遍的数据流图(DFD)。

数据流图(Data Flow Diagram,DFD)的分层

DFD 是一种图形化的系统模型,它在一张图中展示信息系统对业务数据的主要处理过程,包括:过程、外部实体、数据存储、数据流、实时连接等部分。



如上图所示,DFD 是一个逐级分层的图,最上层的 DFD 描述的是系统主要业务数据的处理过程,随着层级向下会将上层的业务处理过程进行分解,直至最底层的详细处理过程。

通常来说我们把顶层结构的图叫 context 图,它描述了系统上下文的关系,他会将所有的外部实体和进出系统的数据流都画在一张图中


DFD context 层


如上图所示,就是一个 context 图, 图中方框表示的就是外部实体,包括:教务处、教师和学生。圆角的矩形表示过程:课程注册系统,同时用编号 0 表示。

有 context 图就需要对其进行拆解,于是就得到下面的图:


DFD 0 层


如图所示,外部实体:教务处、教师和学生没有发生变化,它们传递的数据流也没有变化。只是将 context 层中处理 0 进行了拆解,拆解成了处理 1(安排课程)、处理 2 (注册学生)、处理 3(产生班级列表)三个处理流程,同时加入了“提供的课程”和“学生”两个数据存储。

由于对处理 0 的分解,因此也称之为 DFD 0 层图。如果对 DFD 0 层的处理(编号为 1、2、3)进行分解,那么就称之为 DFD 1 层图,依次类推。

绘制 DFD 的注意事项

  • 输入和输出:用带箭头的线表示,箭头的方向就是数据流动的方向。在画的时候,尽可能多地将输入、输出画出来,然后再进行修改,避免遗漏。

  • 拆解数据流图的内部:将系统的输入、输出用一系列的处理连接起来,也就是将数据处理过程进行细化,其中可以加入处理、存储等中间部件,让数据处理过程更加合理。

  • 数据流命名:使用动宾短语进行命令。

绘制 DFD 的原则

  • 复杂性最小化原则。DFD 分层结构就是把业务处理过程划分为小的、独立的子集,每个子集可以单独成为一个 DFD。如果要了解某个处理过程的详细信息,可以跳转到该处理过程的下一层查看,如果要知道一个 DFD 之间的关联,可以跳转到上一层的 DFD 进行查看。

  • 接口最小化原则。是复杂性最小化的一种具体规则。在对 DFD 分层拆解时,应使得模型中各个元素之间的接口数或连接数最小化。

  • 数据流一致性原则。处理过程和它的分解在数据流内容中不能存在差异,尽量保持数据流的一致性。保证每个数据流入和流出都有对应的处理过程,用来对数据进行加工。

绘制 DFD 的注意事项

避免处理过程有输入没有输出,产生数据黑洞。

避免处理过程有输出没有输入,数据没有源头,数据无中生有;

避免没有加工的数据直接进行存储

发布于: 刚刚阅读数: 4
用户头像

还未添加个人签名 2019.01.02 加入

还未添加个人简介

评论

发布
暂无评论
一文搞定架构思维,DFD 的结构化分析,只需明白这3点_老崔说架构_InfoQ写作社区