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

对于一个复杂的问题,人们很难一下子考虑问题的所有方面和全部细节,需要将大问题分解成小问题,小问题分解成更小的问题,经过多次逐层分解,让最底层的问题变得足够简单、容易解决的,让问题更容易量化、评估、定义。这个过程就是分解过程。

结构化分析与面向对象分析方法之间的最大差别是:结构化分析方法把系统看作一个过程的集合体,包括人完成的和电脑完成的;而面向对象方法则把系统看成一个相互影响的对象集。

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

数据流图的表示

DFD 是一种图形化的系统模型,它在一张图中展示信息系统的主要需求,即输入 、 输出 、 处理(过程) 、 数据存储。由于从 DFD 中可以很容易地看出系统紧密结合的各个部分,而且整个图形模式只有5个符号需要记忆,所以深受分析人员的喜爱,因而广为流行。DFD 中包括以下几个基本元素。

1.png

数据流图的层次

正如前面提到的,结构化分析的思路是依赖于数据流图进行自顶而下的分析。这也是因为系统通常比较复杂,很难在一张图上将所有的数据流和加工描述清楚。因此,数据流图提供一种表现系统高层和低层概念的机制。也就是先绘制一张较高层次的数据流图,然后在此基础上,对其中的过程(处理)进行分解,分解成为若干独立的 、 低层次的 、 详细的数据流图,而且可以这样逐一地分解下去,直至系统被清晰地描述出来。

2.png

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

Context 图

Context 图,也就是系统上下文范围关系图。这是描述系统最高层结构的 DFD 图。它的特点是,将整个待开发的系统表示为一个过程,将所有的外部实体和进出系统的数据流都画在一张图中。

Context 图用来描述系统有什么输入 、 输出数据流,与哪些外部实体直接相关,可以把整个系统的范围勾画出来。

3.png

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

逐级分解

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

4.png

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

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

绘制 DFD 的注意事项

  • 输入和输出:用带箭头的线表示,箭头的方向就是数据流动的方向。在画的时候,尽可能多地将输入、输出画出来,然后再进行修改,避免遗漏。
  • 拆解数据流图的内部:将系统的输入、输出用一系列的处理连接起来,也就是将数据处理过程进行细化,其中可以加入处理、存储等中间部件,让数据处理过程更加合理。
  • 数据流命名:使用动宾短语进行命令。

绘制 DFD 的原则

  • 复杂性最小化原则。DFD分层结构就是把业务处理过程划分为小的、独立的子集,每个子集可以单独成为一个DFD。如果要了解某个处理过程的详细信息,可以跳转到该处理过程的下一层查看,如果要知道一个DFD之间的关联,可以跳转到上一层的DFD进行查看。
  • 接口最小化原则。是复杂性最小化的一种具体规则。在对DFD 分层拆解时,应使得模型中各个元素之间的接口数或连接数最小化。
  • 数据流一致性原则。处理过程和它的分解在数据流内容中不能存在差异,尽量保持数据流的一致性。保证每个数据流入和流出都有对应的处理过程,用来对数据进行加工。

绘制 DFD 的注意事项

  1. 避免处理过程有输入没有输出,产生数据黑洞。
  2. 避免处理过程有输出没有输入,数据没有源头,数据无中生有。
  3. 避免没有加工的数据直接进行存储。

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

系统架构设计笔记(35)—— 结构化分析与设计

标签: none

评论已关闭