数据流图(DFD)被应用于系统开发的各个阶段,从最初的需求数收集到详细设计,甚至在系统文档中。它们帮助利益相关者,包括开发人员、分析师和最终用户,清晰地理解数据在系统内部是如何被处理和转换的。通过可视化这些交互,数据流图促进了更好的沟通,识别潜在的瓶颈或低效环节,并确保系统满足其功能需求。
本教程旨在提供一份全面的指南,帮助您理解并创建数据流图。我们将深入探讨支撑数据流图的关键概念,分析其各个组件之间的关系,并提供实用的技巧和指导,帮助您绘制出高效且富有洞察力的图表。无论您是初次接触数据流图,还是希望提升自己的技能,本教程都将为您提供在项目中有效运用数据流图所需的知识与技术。
数据流图元素符号
数据流图(DFD)使用多种符号来表示系统中的不同元素。您提供的图片展示了四种不同的数据流图元素符号:Yourdon DeMarco、Gane & Sarson、SSADM 以及 Yourdon 和 Coad。让我们逐一探讨每种符号及其对外部实体、处理过程、数据存储和数据流的表示方式:
1. Yourdon DeMarco 符号
- 外部实体:以标有“实体”的矩形框表示。它代表系统外部的数据来源或目的地。
- 处理过程:以标有“处理过程”的圆形表示。它代表系统内部对数据执行的操作或转换。
- 数据存储:以标有“数据存储”的开口矩形表示。它代表数据被存储并可被处理过程访问的位置。
- 数据流:以箭头表示,指示数据在实体、处理过程和数据存储之间流动的方向。
2. Gane & Sarson 符号
- 外部实体:以标有“实体”的矩形框表示,与 Yourdon DeMarco 符号类似。
- 处理过程:以标有“处理过程”并带有编号(例如 1.0)的圆角矩形表示,编号表示处理层级或顺序。
- 数据存储:以左侧带有一条竖线的开口矩形表示,标有“数据存储”。竖线可包含参考编号(例如 D1)。
- 数据流:以箭头表示,显示元素之间的数据流动方向。
3. SSADM(结构化系统分析与设计方法)符号
- 外部实体:以标有“实体”的椭圆形表示,与其他符号区分开来。
- 处理过程:以标有“处理过程”的圆角矩形表示,与 Gane & Sarson 符号类似,但不附加编号。
- 数据存储:以标有“数据存储”的矩形表示,与 Gane & Sarson 符号不同,不带竖线。
- 数据流: 用箭头表示数据流动的方向。
4. Yourdon 和 Coad 表示法
- 外部实体: 用标有“实体”的矩形框表示,与 Yourdon DeMarco 和 Gane & Sarson 类似。
- 处理过程: 用标有“处理过程”的圆圈表示,与 Yourdon DeMarco 类似。
- 数据存储: 用标有“数据存储”的开口矩形表示,与 Yourdon DeMarco 类似。
- 数据流: 用箭头图示元素之间的数据流动方向。
主要差异
- 形状与标注: 每种表示法对外部实体、处理过程和数据存储使用不同的形状和标注规范。
- 处理过程的表示: Gane & Sarson 和 SSADM 使用圆角矩形表示处理过程,而 Yourdon DeMarco 和 Yourdon 与 Coad 使用圆圈。
- 数据存储的表示: Gane & Sarson 包含一条带编号的竖线,而其他表示法使用简单的矩形。
理解这些表示法有助于分析人员和设计人员选择最适合其项目需求和偏好的一种,以确保系统设计的清晰和有效沟通。

关键概念
1. 外部实体
外部实体是与系统交互但不受其控制的数据来源或目的地。它们可以是用户、其他系统或外部数据库。
- 示例: 在提供的图像中,“客户”和“经纪人”是外部实体。
2. 处理过程
处理过程将输入数据转换为输出数据。它表示对数据执行的操作或一组操作。
- 示例: “录入订单”处理过程以“采购订单”作为输入,输出“订单数据”。
3. 数据存储
数据存储保存可由处理过程访问和修改的数据。它表示一个用于未来使用的数据存储位置。
- 示例: “订单”数据存储保存了可以由进程检索或更新的订单详细信息。
4. 数据流
数据流表示外部实体、过程和数据存储之间的数据流动。它们以箭头表示,显示数据流动的方向。
- 示例: 从“客户”到“录入订单”的箭头表示“采购订单”从客户流向该过程。
DFD组件之间的关系
外部实体到过程
- 交互: 外部实体向过程提供输入数据,或从过程接收输出数据。
- 示例: “客户”向“录入订单”过程提供一份“采购订单”。
过程到数据存储
- 交互: 过程从数据存储读取或向数据存储写入数据。
- 示例: “录入订单”过程将“订单数据”写入“订单”数据存储。
数据存储到过程
- 交互: 数据存储在需要时向过程提供数据。
- 示例: “订单”数据存储向需要这些信息的过程提供订单详细信息。
过程到外部实体
- 交互: 过程将输出数据发送给外部实体。
- 示例: “录入订单”过程向“客户”发送订单确认信息。

自顶向下分解
此图表示一个更详细的订单处理系统数据流图(DFD),特别关注客户、经纪人和订单录入过程之间的交互。以下是各组件及其交互的分解说明:

-
外部实体:
- 客户: 该实体通过下单启动流程。
- 经纪人: 该实体在订单流程中充当中介,从客户接收交易详情,并将订单详情转发给系统。
-
流程:
- 在线下单: 此流程处理客户在线下的订单。它直接从客户接收订单详情。
- 交易详情: 此流程管理交易详情,从客户接收输入并将其转发给经纪人。
- 电话下单: 此流程处理通过电话下的订单。它从经纪人接收订单详情。
-
数据存储:
- 订单详情: 此数据存储保存通过在线流程下的订单详情。
- 交易详情: 此数据存储保存已处理并转发给经纪人的交易详情。
-
数据流:
- 订单详情(客户至在线下单): 此数据流表示客户在线下单时提供的订单信息。
- 交易详情(客户至交易详情): 此数据流表示客户提供的交易信息。
- 交易详情(交易详情至经纪人): 此数据流表示正在转发给经纪人的交易信息。
- 订单详情(经纪人至电话下单): 此数据流表示经纪人通过电话下单时提供的订单信息。
-
流程编号:
- 0, 1, 2: 这些数字可能表示系统内流程的顺序或标识。进程0似乎是一个中心进程,与在线订单和电话订单流程都有交互。
解释
- 该图示说明了一个系统,订单可以通过在线或电话方式下单。
- 在线订单由“在线下单”流程直接处理,该流程存储订单详情。
- 对于电话订单,流程涉及一名经纪人,他从客户处接收交易详情,并将订单详情转发给“电话下单”流程。
- 经纪人充当中介,促进电话订单的交易和下单过程。
- 重点在于捕获和管理订单及交易详情,确保无论采用何种下单方式(在线或电话),都能正确处理和存储。
此DFD提供了订单处理系统的更详细视图,突出了不同实体和流程在处理订单和交易中的作用。
技巧与提示
- 从简单开始: 从上下文级DFD开始,以了解系统的整体情况,然后逐步过渡到更详细的层级。
- 一致性: 对流程、数据存储和数据流使用一致的命名规范,以避免混淆。
- 清晰性: 确保数据流被清晰标注,箭头方向正确,以显示数据的流动方向。
- 模块化: 将复杂流程分解为更小、更易管理的子流程,以提高清晰度和理解度。
- 验证: 定期与利益相关者一起验证DFD,以确保其准确反映系统的数据流。
指南
- 识别边界: 明确界定系统边界,以区分内部流程和外部实体。
- 关注数据: 强调数据流动,而非控制流或操作顺序。
- 详细程度: 从高层次的DFD(第0级)开始,逐步细化为更详细的层级(第1级、第2级等)。
- 使用标准符号: 遵循流程、数据存储、外部实体和数据流的标准符号,以保持清晰性和一致性。
- 记录假设:记录与DFD相关的任何假设或限制,以提供背景信息并避免误解。
结论
数据流图不仅仅是视觉辅助工具;它们是系统分析与设计中不可或缺的工具。通过提供一种清晰且结构化的方式来表示数据流,DFD有助于弥合抽象系统需求与具体实现细节之间的差距。它们使利益相关者能够直观地了解数据在系统中的处理方式,识别改进区域,并确保系统设计与其预期功能保持一致。
在本教程中,我们探讨了DFD的基本概念,包括外部实体、处理过程、数据存储和数据流。我们分析了这些组件之间的相互作用,并提供了创建有效DFD的实用技巧和指导原则。通过掌握这些概念和技术,您不仅能准确地表示系统中的数据流,还能使其在整个开发生命周期中成为有价值的沟通工具。
在继续使用DFD的过程中,请记住清晰性、一致性和细节关注至关重要。定期与利益相关者验证您的图表,并在对系统的理解不断深化时,毫不犹豫地进行迭代和优化。通过实践和扎实掌握DFD原则,您将能够应对最复杂的系统分析挑战。拥抱数据流图的力量,开启系统设计中更高层次的洞察力与效率。