数据流图(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开始,以全面了解系统,然后逐步过渡到更详细的层级。
- 一致性: 对流程、数据存储和数据流使用一致的命名规范,以避免混淆。
- 清晰性: 确保数据流标注清晰,箭头方向正确,以显示数据的流向。
- 模块化: 将复杂流程分解为更小、更易管理的子流程,以提高清晰度和理解度。
- 验证:定期与利益相关者验证数据流图,以确保其准确反映系统的数据流动。
指南
- 识别边界:明确界定系统边界,以区分内部流程和外部实体。
- 关注数据:强调数据流动,而非控制流或操作顺序。
- 详细程度:从高层次的数据流图(第0级)开始,逐步细化为更详细的层级(第1级、第2级等)。
- 使用标准符号:遵循用于处理过程、数据存储、外部实体和数据流的标准符号,以保持清晰性和一致性。
- 记录假设:记录与数据流图相关的任何假设或约束,以提供背景信息并避免误解。
结论
数据流图不仅仅是视觉辅助工具;它们是系统分析与设计相关人员不可或缺的工具。通过提供一种清晰且结构化的方式来表示数据流动,数据流图有助于弥合抽象系统需求与具体实现细节之间的差距。它们使利益相关者能够直观地了解数据在系统中的处理方式,识别改进空间,并确保系统设计与其预期功能保持一致。
在本教程中,我们探讨了数据流图的基本概念,包括外部实体、处理过程、数据存储和数据流。我们分析了这些组件之间的相互作用,并提供了创建高效数据流图的实用建议和指南。通过掌握这些概念和技术,您不仅能准确地呈现系统数据流,还能使其成为开发生命周期中极具价值的沟通工具。
在继续使用数据流图的过程中,请记住清晰性、一致性和细节关注至关重要。定期与利益相关者验证您的图表,并在对系统理解不断深化时,毫不犹豫地进行迭代和优化。通过实践和扎实掌握数据流图原则,您将能够应对最复杂的系统分析挑战。拥抱数据流图的力量,开启系统设计中更高层次的洞察与效率。










