转自https://www.visual-paradigm.com/cn/guide/data-flow-diagram/what-is-data-flow-diagram/数据流图 (DFD) 用于表示业务信息系统中的数据流它表达了系统中的据传从输入到存储间所涉及的程序。数据流图可以分为逻辑形和物理形。逻辑数据流图描述了用以完成某业务功能所涉及的、业务层面的数据流动 物理数据流图则描述系统层面的数据流动。一、为什么绘画数据流图数据流图以将用以寻找、编辑、存储和分发数据的功能或过程图像化方便用户和系统设计人员沟通。数据流图的结构也容让开发人员从高点分析系统继而生成一系列用以深入分析的图表。数据流图被广泛应用原因如下用于表达系统的逻辑信息流用于寻找系统需求简单、以理解的图形符号建立手动和自动系统需求二、数据流图的符号数据流图有四个基本符号。1. 程序一个程序负责接收输入的数据并产生具有不同内容或形式的输出。程序可以简单如将收集的数据保存在数据库也或者复杂如将数据加以分析并生成报表。每个程序都有一个名称来标识它所执行的功能。名字由一个动词组成后跟一个单数名词。例子申请付款计算佣金验证订单符号圆角矩形为了便于参考程序都被赋予 ID程序示例2. 数据流数据流是数据从信息系统的一个部分移动到另一个部分的路径。数据流可以表示单个数据元素例如客户 ID或者一组数据元素 或数据结构。例子Customer_info 姓氏名字SS电话号码等Order_info OrderIdItemOrderDateCustomerID 等。数据流示例符号带输入箭头的直线即为输入数据流带输出箭头的直线即为输出数据流注意由于每个程序都将数据从一种形态转换为另一种形态故每个程序必须至少有一个输入数据流和一个输出数据流。一些数据流的规则数据流图的一大原则是数据不能自行转换成另一形态数据必须经由某程序的处理才可被分发至系统的某个部份。通过这条规则我们可以非常容易地识别出错误的画法并加以纠正。错误正确画法原因没有经由程序处理故实体不能将数据传送至另一个实体。数据不能直接从实体移动到数据存储而没有事先经由程序处理。数据不能直接从数据存储移动至实体而没有事先经由程序处理。数据不能直接从一个数据存储移动到另一个数据存储而没有事先经由程序处理。其他常犯的错误当一个程序步骤的输出与其输入不匹配时会出现第二类错误它们可以分类为黑洞 - 程序步骤可能有输入流但没有输出流。奇迹 - 一个程序步骤可能有输出流但没有输入流。灰孔 - 程序步骤的输出可能大于其输入的总和3. 数据存储当系统必须保留数据以让一个或多个程序使用或存储数据便可以数据存储来表达。符号将数据写入数据存储数据流连结线以外出箭头表示。从数据存储中读取数据数据流连结线以输入箭头表示。一些数据存储的例子库存应收账款订单和每日付款。数据存储示例注意数据存储必须以数据流连接到程序。每个数据存储必须至少有一个输入数据流和至少一个输出数据流即使输出数据流是一个确认讯息。4. 外部实体外部实体是向系统提供数据或从系统接收输出的人、部门、外部组织或其他信息系统。外部实体是信息系统边界之外的组件它们代表了信息系统如何与外界交互。矩形只提供或接收数据不处理数据符号客户提交订单然后从系统收到账单供应商发出发票外部实体示例注意外部实体也被称为终止符因为它们是数据的源头或目的地。必须通过数据流将外部实体连接到程序。三、高至低分解 (Top-Down Decomposition)高至低分解用于展示更多细节。透过平整我们将绘制出多张数据流图一张比一张详细直到达到所需的细节层次为止。如下图所示我们会​​先在最高层次的数据流图中将目标系统表达成单个程序然后将程序分解成更多层的数据流图以表达更多细节直到所有程序都是功能性程序为止。数据流图之间的一致性当对数据流图进行高至低分解时输入和输出数据流必须在数据流图之间保存一致。例如级别nn 1必须具有相同的输入和输出。四、数据流图指南背景图 - 第 0 阶背景图须容于一个页面中 (不能过大)。背景图中的程序名称须为信息系统的名称。例分级系统订单处理系统注册系统。背景图又被称为第 0 阶图。使用独特的名称别重覆使用相同的名称表达不同的概念。例如在不同层次的数据流图中只能有一个实体 CUSTOMER。数据流图没有交叉线达到此目的的一种方法是严格控制数据流图中的程序数。人类只能同时处理 7 / - 2 个符号在具有多个程序的较低阶的数据流图中也不应该有多于九个程序。避免交叉线的另一种方法是复制外部实体或数据存储。使用特殊符号如星号表示重复的符号。编号习惯为每个程序符号使用一个唯一的参考号码。其他程序号码在以下层次中(1, 2, 3,…);(1.1, 1.2, 1.3, …, 2.1, 2.2, 2.3,…);(1.1.1, 1.1.2, 1.1.3,…).五、第 0 阶背景图背景图用于表达一个系统的概览它是数据流图中的最高级别只包含一个代表整个系统的程序。这程序会被分解成更多细节的主要程序每个主要程序可能会进一步分解以提供更多细节。背景图显示了所有的外部实体以及来自它们的主要数据流。该图不包含任何数据存储。背景图的单个程序可以被分解为下一级图中的主要程序其被称为第 0 阶数据流图。六、第 1 阶数据流图第 0 阶数据流图中的程序 具有整数可以进一步分解以表示程序的细节。下面的例子显示了程序被分解成下一个阶级第 1 阶。注意虽然下面的第 1 阶数据流图只有三个程序 但是这些程序涉及不少数据的输入和输出继而导致交叉线的出现。为避免这个情況我们可以在数据流图中使用多重视角让同一元件重复出现在图中的不同位置。七、第 2 阶数据流图如果一个程序跟大量外部实体存在数据的输入和输出我们可以首先将该程序和相关的外部实体提取到单独的数据流图然后再将该进程细化到单独的数据流图级别通过这种方式可以更容易确保它们之间的一致性。八、逻辑与物理数据流图数据流图被分类为逻辑形或物理形。逻辑数据流图主要表达了业务和业务运作它不关心系统将如何构建。我们可以忽略实现细节如计算机配置、数据存储技术、信或消息传递方法而集中表达系统所执行的功能如数据收集、数据跟信息的转换和信息报告。物理数据流程图显示系统将如何被建设起来包括系统中的硬件、软件、文件和人员。它使逻辑数据流图中描述的程序正确地实现以达到业务目标。逻辑数据流图的好处逻辑数据流图主要呈现业务信息该图以业务活动为中心故有助于与用户间的交流和沟通。逻辑数据流图乃基于业务事件而绘制并且独立于特定的技术或物理布局这让系统更加稳定。逻辑数据流图让分析师更了解正在研究的业务并确定决策背后的原因。基于逻辑数据流图而实现的系统更容易维护因为业务功能不会经常发生变化。很多时候逻辑数据流图不包含文件或数据库以外的数据存储这比物理数据流图更易于绘制。通过修改逻辑数据流图可以很容易地产生物理数据流图。物理数据流图的好处厘清哪些程序是手动的哪些流程是自动的手动程序需要详细的文档而自动化流程则需要开发计算机程序。比逻辑数据流图更详细地描述过程描述处理数据的所有步骤。排序过程必须按照特定顺序完成描述导致有意义结果的活动顺序。例如必须在生成摘要报告之前执行更新。识别临时数据存储描述临时存储例如在杂货店中用于顾客收据报告的销售交易文件。指定文件和打印输出的实际名称逻辑数据流图描述了实际的文件名和报告以便程序员在系统的开发阶段将它们与数据字典 (Data Dictionary) 联系起来。添加控件以确保过程正确完成。精炼逻辑数据流图成物理数据流图以下示例显示了一家杂货店收银员的逻辑数据流图和物理数据流图客户将ITEMS带到注册表中;所有项目的价格均已预订然后合计;接下来付款最终交给收银员客户收到收据。逻辑数据流图示例 - 杂货店逻辑数据流图说明了所涉及的过程而没有详细描述活动的物理实现。物理数据流图示例 - 杂货店物理数据流图显示条形码 - 使用大部分杂货店商品上找到的 UPC PRICE 代码此外物理数据流图提到手动处理如扫描并表达了临时文件被应用于储存项目的小计付款可以通过CASHCHECK或者DEBIT CARD进行最后它用上收款人的名字现金注册收据