数据流图(DFD)这么理解吗?

如何画好数据流程图(DFD)?

步骤

  • 确定系统的 inputoutput
  • 表层深层 画系统的顶层数据流图。
  • 自顶向下 逐层 分解,画出分层数据流图。

一、理解数据流图

基本概念

   ~~   数据流图 = 数据流(箭头) + 图。所谓数据流,是由一组固定成分的数据组成,表示 数据的流向,除了输入和输出之外,还包括中间加工、存储等环节。

基本元素

  1. →(data flow):箭头,表示 数据流
  2. 〇 (process):圆或椭圆,表示加工;也就是输入数据流经过什么处理后变成了输出数据。
  3. = (file):双杠,表示数据存储
  4. □ (source or destination):方框,表示数据源点或终点。【外部实体】,指除了系统之外,又与系统有联系的人或事物。

注意事项:每个加工都有一个名字和编号。编号能反映该加工位于分层的数据流图的哪个层次和哪张图中。

简记: 用图形的方式,描绘数据在系统中流动和处理的过程。

二、怎么画数据流图?

   ~~    数据流图采用分层图的形式来描述系统数据流向,每一层都代表了系统数据流向的一个抽象水平,层次越高,数据流向越抽象,(因为抽象的东西是很难有什么变化的,这也为我们对系统的设计猜想有了更好的辅助)。高层次的DFD图中处理可以进一步分解为低层次、更详细的DFD图。

在这里插入图片描述

故此,据层次可以将数据流图划分为顶层、中层和底层数据流图。除了顶层数据流图之外,其他数据流图从零开始编号

下面我们以 销售管理系统 来进一步理解并画出DFD图:

(1) 接受顾客的订单,检验订单,若库存有货,进行供货处理,即修改库存,给仓库开备货单,并且将订单留底;若库存量不足,将缺货订单登入缺货记录。

(2) 根据缺货记录进行缺货统计,将缺货通知单发给采购部门,以便采购。

(3) 根据采购部门发来的进货通知单处理进货,即修改库存,并从缺货记录中取出缺货订单进行供货处理。

(4) 根据留底的订单进行销售统计,打印统计表给经理。

1. 确定系统的输入输出

   ~~   一开始想要直接弄清系统包括的所有功能是困难的,所以我们可以尽可能地让考虑的范围扩大一点,尽可能把有的内容都考虑进去,之后在迭代的过程中再加以补充完善。

   ~~    在这一阶段,应该弄清 “系统从哪些外部实体接受什么数据”、“系统向哪些实体送出什么数据” 等信息,这是绘制顶层数据流图的关键

2. 由表及里的画出顶层数据流图

   ~~    在确定号系统的 input 和 output 之后,我们可以利用”加工“将它们连接起来,也就是状态转移关系"加工",“加工”是数据被处理的整个系统,也就是数据组成或值变化的地方。下图为销售管理系统的顶层图:
在这里插入图片描述

顶层图 {\color{grey}{顶层图}} 顶层图
注意事项: 顶层图只有一张,图中的“加工”也只有一个,表示整个系统,不必为其编号。

3. 自顶向下逐层分解,画出分层数据流图

   ~~    对于大型的系统,为了控制设计的复杂性,便于理解,更倾向于从抽象到具体,采用自定向下逐层分解的方式,将一个数据流图分解成若干个数据流子图来分别表示。

   ~~    在还能够继续分解的层次,我们将其称为 中层数据流图,是对 父层 数据流图中 某个加工的细化。这一层数据流图层数的多少,根据系统实现的复杂程度而定。

   ~~   如前面所说,除了顶层图之外,其他层次的图从零开始编号。特殊的是,0层图,因为它是顶层图的加工的第一次分解,将顶层图的 “粗加工” 分解为若干个 “精加工”,并用数据流(箭头)将这些 ”精加工“连接起来,使得顶层图的 input 经过这些处理后,变成相应的 output

在这里插入图片描述

0 层图 {\color{grey}{0层图}} 0层图
(1) 确定 "加工"方法:

   ~~    “加工“用来表示整个开发系统,也就是数据处理的地方。因此0层图数据流 发生变化的地方可以变成若干个 “精加工”。

注意事项:

  1. 每个加工至少有一个 input 和 一个 output。
  2. 一个加工的 output 不应该与 input 同名,即使它们的数据组成完全相同。
  3. 如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。

在这里插入图片描述

上 : 父图 ; 下 : 子图 {\color{grey}{上:父图;下:子图}} :父图;:子图

  1. 父图与子图的平衡。父图中的某加工的输入输出流必须与他的子图的输入输出数据流在数量上和名字上相同,此即父图与子图的平衡。

(2)确定数据流的方法

   ~~    一串待处理的数据可以看作数据流。

注意事项:

  1. 画数据流而不是画控制流。数据流具体反应系统在”做什么“,不反应”如何做“,因此箭头上面的数据流名称只能是 名词名词短语,整个图中不反应加工的实际执行顺序。
  2. 外部实体之间不应该存在数据流,因为数据流的起点和终点中必须有一个是加工

(3)关于数据存储

   ~~   对于未来要使用的数据,可以组织成为一个数据存储(双杠 =)来表示。

注意事项:

  1. 当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。

   ~~   弄清相关细节之后,如下所示,我们只需要对”精加工“进一步细分拆解,直到到达 ”原子加工“ (底层数据流程图:其加工不能再分解的数据流图)为止。

在这里插入图片描述
1 层图 {\color{grey}{1层图}} 1层图



参考链接及资源

如何画好数据流图?

数据流图(DFD)概念及画法

软件工程——数据流图(DFD)

  • 4
    点赞
  • 61
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
软件工程中,数据流图DFD)和用例图都是常用的工具,用于描述系统的不同方面和功能。 数据流图DFD)是一种图形化的表示方法,它描述了系统内不同组件之间的数据流动。DFD将系统视为一系列的过程(也称为功能或转换),这些过程以数据流的形式接收输入并产生输出。DFD包括多个级,从整体系统到更详细的子系统或模块。它使用箭头表示数据流,圆角矩形表示过程,椭圆表示数据存储,菱形表示数据流的转换点。DFD有助于我们理解系统内部的数据流动,识别功能模块和数据存储,以及确定系统中的依赖关系。 用例图是一种行为建模工具,用于描述系统与其各个利益相关者之间的交互。它主要关注系统的功能和行为。用例图通过显示系统功能和利益相关者之间的交互来描述系统的需求。用例图由参与者(actors)和用例(use cases)组成。参与者是与系统进行交互的外部实体,而用例是描述系统功能和行为的场景。用例图使用椭圆表示用例,人物像表示参与者,并使用连线表示参与者与用例之间的关系。用例图可以用于确定系统的需求、展示系统功能和行为,并提供对系统整体架构的高级视图。 总的来说,数据流图和用例图在软件工程中用于不同的目的。数据流图主要关注系统内部的数据流动和组件之间的关系,帮助我们理解系统的结构和依赖关系;而用例图主要关注系统与其利益相关者之间的交互,帮助我们理解系统的功能和行为。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值