跳转到主要内容
Chinese, Simplified

什么是数据流程图(DFD)?

一图胜千言。数据流图(DFD)是可视化系统中信息流的传统方法。一个整洁而清晰的DFD可以图形化地描述大量的系统需求。它可以是手动的,自动的,或者两者的结合。

它显示了信息是如何进入和离开系统的,是什么改变了信息,以及信息存储在哪里。DFD的目的是显示整个系统的范围和边界。它可以作为系统分析人员与系统中充当重新设计系统起点的任何人员之间的通信工具。

它通常以一个上下文图作为DFD图的第0级开始,DFD图是整个系统的简单表示。为了进一步详细说明,我们深入到第1层图,其中包含从系统的主要功能分解而来的较低层功能。当需要进一步分析时,这可能会继续发展成一个2级图。升级到3级、4级等等是可能的,但超出3级的情况并不常见。请记住,分解特定函数的细节级别取决于该函数的复杂性。

图中的符号

现在,我们想简要地向您介绍一些您将在下面的教程中看到的图表符号。

外部实体

外部实体可以表示人、系统或子系统。它是某些数据的来源或流向。就业务流程而言,它是我们所研究的系统的外部。由于这个原因,人们习惯于在图的边缘绘制外部实体。

notation (external entity)

过程

流程是进行数据操作和转换的业务活动或功能。可以将流程分解为更细的细节级别,以表示如何在流程中处理数据。

notation (process)

数据存储

数据存储表示进程所需和/或产生的持久数据的存储。下面是一些数据存储的例子:成员表单、数据库表等。

notation (data store)

数据流

数据流表示信息流,其方向由箭头表示,箭头显示在流连接器的末端。

notation (data flow)

在本教程中我们将做什么?

在本教程中,我们将向您展示如何绘制上下文关系图以及级别1的关系图。

 

如何绘制上下文级DFD?

  • 要创建新的DFD,从工具栏中选择Diagram > new。
  • 在New Diagram窗口中,选择Data Flow Diagram并单击Next。
  • 输入上下文作为关系图名称,然后单击OK进行确认。
  • 我们现在画出第一个过程。从关系图工具栏中,将流程拖动到关系图上。命名新的过程系统。

draw process onto diagram

  • 接下来,让我们创建一个外部实体。将鼠标指针放在系统上。按下并拖出右上角的资源目录按钮。

drag resource catalog

  • 释放鼠标按钮并从资源目录中选择双向数据流->外部实体。

create external entity from resource catalog

  • 将新的外部实体命名为Customer。

create an entity called Customer

  • 现在,我们将对系统访问的数据库进行建模。使用资源目录创建来自系统的数据存储,其中包含双向数据流。

create data store

  • 命名新的数据存储库存。

create a data store called Inventory

  • 创建另外两个数据存储,Customer和Transaction,如下所示。我们刚刚完成了上下文关系图。

customer and transaction created

如何绘制一级DFD?

  • 我们将分解系统过程以形成一个新的DFD,而不是从头创建另一个图。右键单击System并从弹出菜单中选择分解。

decompose process

  • 连接到所选流程(系统)的数据存储和/或外部实体将在第1级DFD中引用。因此,当提示您将它们添加到新图表中时,单击Yes以确认。
  • 注意:新的DFD最初看起来应该与上下文关系图非常相似。每个元素都应该保持不变,除了系统过程(从这个新的DFD分解而来)现在已经没有了,取而代之的是一个空格(待阐述)。
  • 重新命名新的DFD。右键点击它的背景并选择Rename…在关系图的名称框中,输入Level 1 DFD并按回车键。
  • 在中心创建三个流程(流程订单、发货、收货),如下图所示。那是系统过程的老地方,我们把它们放在那里来阐述系统。

create three processes in Level 1 DFD

  • 连接数据流的连接线

  • 本节中的其余步骤是关于连接图中的模型元素的。例如,客户在下订单进行处理时提供订单信息。
  • 将鼠标指针放在客户上方。拖出资源目录图标并按进程顺序释放鼠标按钮。

connect customer process order

  • 从资源目录中选择数据流。

select data flow

  • 新订单信息有流程说明。

flow caption entered

flow caption entered

  • 同时,流程订单流程也从数据库中接收客户信息来处理订单。
  • 使用资源目录创建从客户到处理订单的数据流。

data flow created between customer and process order

  • 可选:如果您愿意,可以将数据流标记为“客户信息”。但是,由于这个数据流在视觉上是相当不言自明的,我们将在这里省略它。
  • 通过组合来自客户(外部实体)的订单信息和来自客户(数据存储)的客户信息,Process order (Process)然后在数据库中创建一个事务记录。创建从流程顺序到事务的数据流。

data flow created

  • 绘画技巧:
  • 若要重新排列连接线,请将鼠标指针置于要添加轴心点的位置。然后你会看到一个气泡在你的鼠标指针。按下并拖动到需要的位置。

re-routing connector

  • 到目前为止,您的图表应该是这样的。

updated-dfd

  • 一旦存储了事务,接下来就是传递过程。因此,创建一个来自Process Order (Process)的数据流来交付好(Process)。

data flow created

  • 发货时需要阅读交易信息(即订单号,以便包装正确的产品发货)。从事务(数据存储)创建一个数据流来交付好(流程)。

data flow created

  • 注意:如果缺少空间,请随意移动形状以腾出空间。
  • Ship Good还需要读取客户的送货地址信息。从客户(数据存储)创建一个数据流来交付好(流程)。

data flow created

  • Ship Good然后更新库存数据库以反映所运货物。创建一个从发货(流程)到库存(数据存储)的数据流。更新的产品记录。

data flow created

  • 一旦订单到达客户手中,发放收据的过程就开始了。其中,收据是根据存储在数据库中的事务记录准备的。因此,让我们从事务(数据存储)创建一个数据流来发出收据(流程)。

data flow created

  • 然后向客户发出收据。让我们创建一个从问题收据(流程)到客户(外部实体)的数据流。命名数据流接收。

data flow created

  • 您刚刚完成了第一级图的绘制,它应该是这样的。

updated dfd

如何提高DFD的可读性?

  • 上面完成的图表看起来有点死板和忙碌。在本节中,我们将对连接器进行一些更改以提高可读性。
  • 右键单击图表(级别1 DFD)并选择连接器>曲线。图中的连接器现在用曲线表示。

connectors in curve

  • 移动图形,使图表看起来不那么拥挤。

completed dfd

更多过程示例

下面的列表向您介绍了涉及不同业务和问题领域的各种数据流图示例。其中一些包括使用多个上下文级别。

  • 客户服务系统
  • 食品订单系统
  • 证券交易
  • 超市的应用
  • 车辆保养得宝
  • 视频租赁存储

 

资源

  • Order-Processing.vpp
  • Order-Processing_result.vpp

本教程的读者也可以阅读

  • 如何编写有效的用例?
  • 数据流程图:实例-订餐系统
  • 如何使用ERD对关系数据库设计建模?
  • 如何开发现有的和将来的业务流程?
  • 数据流程图与实例-客户服务系统

 

原文:https://www.visual-paradigm.com/tutorials/data-flow-diagram-dfd.jsp

本文:http://jiagoushi.pro/node/857

讨论:请加入知识星球【首席架构师圈】或者飞聊小组【首席架构师智库】

Article
知识星球
 
微信公众号
 
视频号