什么是数据流图 Data Flow Diagram (DFD)

2023-11-01

什么是数据流图(DFD)?如何绘制DFD?

一张图片胜过千言万语。数据流图(DFD)是系统内信息流的传统视觉表示。一个整齐而清晰的DFD可以用图形描绘出大量的系统需求。它可以是手动的,自动的或两者的组合。

它显示了信息如何进入和离开系统,什么改变了信息以及信息的存储位置。DFD的目的是显示整个系统的范围和界限。它可能被用作系统分析员和任何参与系统的人之间的交流工具,作为重新设计系统的起点。

它通常以上下文图开始,作为DFD图的0级,这是整个系统的简单表示。为了进一步阐述,我们深入到一级图,将较低级别的功能从系统的主要功能中分解出来。当需要进一步分析时,这可能会继续发展成为二级图。级别3,级别4等等是可能的,但是超出级别3的任何东西都不是很常见。请记住,分解特定函数的细节水平实际上取决于函数的复杂性。

DFD图表符号 (Diagram Notations)

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

外部实体

外部实体可以代表人,系统或子系统。这是某些数据来自或去的地方。就业务流程而言,这是我们研究的系统的外部。出于这个原因,人们习惯于在图表的边缘绘制外部实体。


符号(外部实体)

处理 (Process)

一个过程是一个业务活动或功能,其中的数据处理和转换发生。一个进程可以被分解成更细的细节,用于表示数据在进程中的处理方式。 
符号(过程)

数据存储 (Data Store)

数据存储表示由进程需要和/或产生的持久性数据的存储。这里有一些数据存储的例子:会员表单,数据库表格等 
符号(数据存储)

数据流 (Data Flow)

数据流代表信息流,其方向由流量连接器末端显示的箭头表示。 
符号(数据流)

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

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

注意:我们在这里使用的软件是Visual Paradigm欢迎您下载Visual Paradigm的30天免费 评估版,以便浏览下面的示例。没有注册,电子邮件地址或义务是必需的。

如何绘制 Context  Diagram 级DFD?

  1. 要创建新的DFD,请从工具栏中选择图表>新建
  2. New Diagram窗口中,选择Data Flow Diagram,然后单击Next
  3. 输入上下文作为图表名称,然后单击确定确认。
  4. 我们现在将绘制第一个过程。从图表工具栏,将过程拖到图上。命名新的进程系统
    在图上绘制过程
  5. 接下来,我们来创建一个外部实体。请将鼠标指针悬停在System上按下并拖出右上角资源目录按钮。
    拖动资源目录
  6. 释放鼠标按钮并从资源目录中选择双向数据流 - >外部实体
    从资源目录创建外部实体
  7. 命名新的外部实体Customer
    创建一个名为Customer的实体
  8. 现在我们将模拟系统访问的数据库。使用资源目录从系统创建一个数据存储,其间存在双向数据流。
    创建数据存储
  9. 命名新的数据存储
    创建一个名为Inventory的数据存储
  10. 创建另外两个数据存储,CustomerTransaction,如下所示。我们刚刚完成了上下文图。
    客户和交易创建

如何绘制1级 (Level 1) DFD?

  1. 我们将不再从头创建另一个图表,而是分解系统进程以形成一个新的DFD。右键单击系统,然后从弹出菜单中选择分解
    分解过程
  2. 连接到所选进程(系统的数据存储和/或外部实体将在1级DFD中被引用。因此,当系统提示您将其添加到新图时,单击确认。 
    注意:新的DFD看起来应该与上下文图非常相似。每个元素都应该保持不变,除了系统进程(从这个新的DFD分解)现在消失了,并被一个空白空间(将被阐述)取代。
  3. 重新命名新的DFD。右键单击其背景,并选择重命名...在图的名称框中,输入Level 1 DFD,然后按ENTER
  4. 如下所示,在中心创建三个流程(流程订单,运送情况,发货收据)。这是系统过程的旧点,我们把它们放在那里来详细说明系统
    在1级DFD中创建三个流程

用连接线 (Connection Line) 连接数据流

本节中的其余步骤是关于连接图中的模型元素。例如,客户在下订单处理时提供订单信息。

  1. 将鼠标指针放在Customer上拖出资源目录图标并释放流程订单上的鼠标按钮
    连接客户流程订单
  2. 从资源目录中选择数据流。
    选择数据流
  3. 输入订单信息有流量的标题。
    流标题输入
  4. 同时流程订单流程也接收来自数据库的客户信息以处理订单。 
    使用资源目录创建从客户流程订单的数据流。 
    在客户和流程订单之间创建数据流 
    可选:如果您愿意,您可以标记数据流“客户信息”。但是由于这个数据流在视觉上是相当自明的,所以我们在这里省略它。
  5. 通过结合来自客户(外部实体)的订单信息和来自客户(数据存储)的客户信息流程订单(过程)然后在数据库中创建交易记录。创建从流程订单交易的数据流。 
    数据流创建 
    绘图提示: 
    要重新排列连接线,请将鼠标指针放在要为其添加枢轴点的位置。然后你会在鼠标点看到一个气泡。点击并拖动到你需要的地方。 
    重新路由连接器 
    到目前为止,你的图应该看起来像这样。 
    更新-DFD
  6. 一旦交易被储存,运输过程就会结束。因此,创建一个从流程订单(流程)到货运状态(流程)的数据流。 
    数据流创建
  7. Ship Good需要读取交易信息(即Order_为了打包正确的产品交付,从Transaction(数据存储)创建一个数据流到Ship Good(处理) 
    数据流创建 
    注意:如果缺少空间,感觉自由移动周围的形状,以腾出空间。
  8. Ship Good也需要阅读他/她的送货地址的客户信息。Customer(数据存储)创建一个数据流到Ship Good(流程)。 
    数据流创建
  9. 装船好,然后更新库存数据库,以反映出货。创建一个从船舶良好(过程)到库存(数据存储)的数据流将其命名为更新产品记录。 
    数据流创建
  10. 一旦订单到达客户手中,问题回执过程就开始了。其中,基于存储在数据库中的交易记录来准备收据。所以让我们创建一个从Transaction(数据存储)到Issue Receipt(process)的数据流
    数据流创建
  11. 然后收据发给客户。让我们创建一个从问题收据(流程)到客户(外部实体)的数据流命名数据流收据。 
    数据流创建 
    你刚完成绘制1级图应该看起来像这样。 
    更新了dfd

如何提高DFD的可读性 (Readability)?

上面完成的图表看起来有点僵硬和忙碌。在本节中,我们将对连接器进行一些更改以提高可读性。

  1. 右键单击图(Level 1 DFD)并选择连接器>曲线图中的连接器现在是曲线。 
    连接器在曲线中
  2. 移动周围的形状,使图看起来不那么拥挤。
    完成dfd

更多的DFD例子

下面的列表将引导您查看涵盖不同业务和问题域的各种数据流图示例。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

什么是数据流图 Data Flow Diagram (DFD) 的相关文章

  • EA14.0 中的“覆盖属性初始值设定项”行为更改为 EA12.5 中的“设置运行状态”

    我观察到 EA14 0 中的行为与 EA12 5 中的行为有所不同 Summary 在 EA12 5 中使用时Deployment Specification必须设置Instance Classifier on the Deployment
  • 如何用UML绘制NoSQL数据库(面向文档)?

    我是 NoSQL 使用的初学者 目标是构建一个超级数据库 是否可以使用 UML 绘制 CouchDB 数据库 面向文档 特别是如何进行联接 或者还有其他更适合 NoSQL 数据库建模的替代方案吗 您可以使用UML 类图对应用程序域的实体和聚
  • 这是实体关系图还是类图

    嘿 基本上我对类图和 ERD 的区别感到困惑 我创建了一个我认为是 ERD 的东西 但我的室友似乎认为它是一个类图 它是什么 与已接受的答案相反 xmojmr 也注意到这是NOTUML 图 而是实体关系图 ERD 最明显的区别是连接器末端的
  • 在序列/类图中将消费/生产事件表示为从微服务到消息队列[Kafka]的UML组件

    我有一个生成一些事件的用例 消费其他微服务生成的事件以及自己生成的事件 如何在序列图 类图中表示 Kafka 系统 运行中的微服务以及生产 消费事件 在 UML 中 我们有一个来自 DB 的特殊图表 我们有 Kafka 和 cron 作业的
  • 显示事件的典型 uml 图

    我有几个模块 他们通过事件相互交流 通常使用什么 UML 图来显示这一点 人们使用非 uml 图吗 有什么例子吗 我想你肯定想要一个顺序图 http en wikipedia org wiki Sequence diagram按顺序显示模块
  • 模板继承的 UML 图

    在我的库的文件中 我有一个继承自模板的类 我的代码示例 class data class dataA public data class dataB public data inheritance from a template templ
  • 使用基于关联数组的 UML 建模类型

    假设有一个 PHP 子系统 它仅使用关联数组来存储某种结构化数据 因此 实际上在语言级别上没有机制来约束这些结构 但您希望在设计中使用 UML 来定义它们 E g 在 PHP 中 联系人可能是这样的关联数组 name gt John Doe
  • 学习如何分析项目

    我刚刚偶然开始为我公司的一个客户 中小企业 分析一个项目 我是一名 Net 开发人员 5 年 在分析软件方面经验很少 来自学校的 UML 我们刚刚结束了与用户两周的交谈 并得到了一份不错的需求清单 显然 我们已经过滤掉了最重要的需求 并且必
  • 如何在重写方法中表示调用基类方法?

    我有一个子类想要向基类函数添加更多功能 我如何表示它也执行基类函数而不仅仅是新添加的功能 有趣的问题 我用 Enterprise Architect 尝试过 它确实让我选择了父级的操作 但图中的显示没有改变 看来您需要为此使用注释 如你看到
  • 传统的基于代码的工程和模型驱动的工程方法有什么区别?

    我在文献中找到了这段话 但我不明白它的含义 设计实践正在从传统的基于代码的工程转向 在整个开发生命周期中进行严格的分工 模型驱动的工程方法 其中所有人员都参与设计 流程可以对模型有发言权 任何帮助将不胜感激 基于代码的工程意味着大部分工作是
  • 如何在 UML 中指定“一次一个”?

    我正在制作一个类图Classroom and a Course class 我怎样才能表明Classroom只能有一个Course一次在其中吗 我知道我可以使用多重性来指定教室可以只开设一门课程 但这并不能完全指定在不同时间可以有除该一门课
  • 如何在 UML 活动图上显示异步操作

    我即将绘制 记录一些客户端 服务器连接建立代码 以更好地理解它 有几个操作是在单独的线程中异步完成的 连接线程 数据接收线程等 我应该在单独的图表上显示它们吗 我更愿意将其放在单个图表上以掌握整体视图 但不知道如何在活动图上表示它 我不确定
  • 聚合、组合、关联、直接关联

    我正在复习面向对象编程方面的知识 在类之间的关系主题下 我遇到了一些对我来说有点模糊的关系 我知道依赖项 uses a 和继承 is a 但我对聚合 组合 关联和直接关联有点不熟悉 另外 其中哪一个是 has a 关系 有些可以与关联互换使
  • 如何在 UML 类图中表示“事件”?

    这是我的代码片段 public class Notation INotifyPropertyChanged public event PropertyChangedEventHandler PropertyChanged private N
  • Eclipse:如何安装 UML2 工具

    我想尝试 UML2 Tools for Eclipse 如图所示本教程 http www vogella de articles UML article html 我目前拥有面向 Java EE 开发人员的 Eclipse 3 6 Heli
  • 如何使用 js/uml 对 JavaScript 文件进行逆向工程?

    Goal 我的目标是从我的 JavaScript 项目 由多个 js 文件组成 中获取 UML 模型并将其存储为 XMI 我已经走了多远 我在网上搜索了一下 发现js uml是第一个去的地方 我已经设法让 js uml 插件与 Eclips
  • IBM Rhapsody 中状态图终止连接器的理解

    在IBM Rhapsody中 如果我使用new创建了一个类的实例 那么我们是否必须通过调用delete来处理内存的释放 或者Termination Connector将在其状态图中通过内存释放来处理其销毁 如果您使用 C 和 OXF 对象执
  • UML状态图中守卫和事件的区别

    我以为我可以区分event and guard 但我遇到了一个与守卫类似的事件 counter gt 4 pin is high switch on event 我将变量计数器从小于 4 的某个值更改为大于 4 的值作为事件 这是否意味着事
  • 有没有办法在 Visual Studio 或 MATLAB 中“映射”程序执行顺序?

    我所说的 地图 是指我有一个 主 函数 它调用内部的许多其他程序 我希望能够看到哪个文件首先运行 第二个 第三个等等 基本上 我希望能够请参阅这个大型 OOP 设计程序 创建者没有为其制作 UML 类图 中的依赖项列表和顺序 以帮助破译代码
  • 如何在时序图上表示 if 条件 1 else if 条件 2?

    我想知道 如何在序列图上表示 if cond1 else if cond2 语句 if condition1 Do something else if condition2 Do something else if 我不确定是否有两个独立的

随机推荐

  • 机器学习实战——第三章(分类):决策树算法与实例(一)

    前言 今天看了会 机器学习实战 第三章 决策树 很迷 似懂非懂 专业术语太多了 而且有点混乱 对于一个大一概率论没学好的学渣来说 如今大三的我看到那些概率公式和一些概率论专业术语就头疼 马上就打了退堂鼓 早起看了半个小时没看明白果断又躺回了
  • 设置swiper轮播图的css样式无效?

    项目场景 在做vue项目的时候 使用到了vue awesome swiper三方库 当时小编想重写 覆盖轮播图的分页器小圆点的css样式 其次 小编做项目时 使用的css预编译器是SCSS 问题描述 当小编在重写分页器小圆点css样式时 发
  • Vim配置及使用总结

    Vim配置及使用总结 我的Vim配置 Vim安装及配置文件 Vim安装 Vim配置文件 我的Vim配置 Vim配置详解 Vim使用技巧 基本使用介绍 命令模式 输入模式 底线命令模式 技巧总结 二进制文件查看 下面是我在使用vim时的一些配
  • Sass -- 条件语句、循环语句、自定义函数

    文章目录 条件语句 循环语句 for while each 自定义函数 条件语句 在Sass中可以使用 if if else if else 来进行条件判断 用法和JS相同 循环语句 在Sass中可以使用 for while each 来进
  • 4. Hadoop伪分布式运行模式

    文章目录 Hadoop伪分布式运行模式 1 启动HDFS并运行MapReduce程序 1 1 配置集群 配置hadoop env sh 配置core site xml 配置hdfs site xml 1 2 启动集群 格式化NameNode
  • window.open()的所有参数列表(转)

    前言 经常上网的朋友可能会到过这样一些网站 一进入首页立刻会弹出一个窗口 或者按一个连接或按钮弹出 通常在这个窗口里会显示一些注意事项 版权信息 警告 欢迎光顾之类的话或者作者想要特别提示的信息 其实制作这样的页面效果非常的容易 只要往该页
  • Python-玩转数据-Scrapy框架介绍及安装

    一 Scrapy框架说明 1 Scrapy介绍 Scrapy框架官方网址 http doc scrapy org en latest Scrapy是用纯Python实现一个为了爬取网站数据 提取结构性数据而编写的应用框架 用途非常广泛 用户
  • 如果访问云服务器上的文件,如果访问云服务器上的文件

    如果访问云服务器上的文件 内容精选 换一换 WinSCP工具可以实现在本地与远程计算机之间安全地复制文件 与使用FTP上传代码相比 通过 WinSCP 可以直接使用服务器账户密码访问服务器 无需在服务器端做任何配置 通常本地Windows计
  • [Qt]不带标题栏(FramelessWindowHint)的窗体移动及调整大小

    Qt窗体若设置了 setWindowFlags Qt FramelessWindowHint 运行后该窗体是无法进行移动和调整大小的 那要如何才能让它和普通窗体一样进行移动和调整其大小的呢 方案如下 void QFramelessWindo
  • 【八组输入输出你都了解多少】

    目录 前言 一 总览 一 只能从标准流 std 中输入和输出数据 二 可以从所以流中读取和写入数据 三 只能从字符串中读取和写入数据 二 详细描述 一 scanf fscanf sscanf 1 scanf 2 fscanf 3 sscan
  • 震惊,docker操作竟如此简单

    Docker概述 1 什么是Docker Docker 是一个开源的应用容器引擎 让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中 然后发布到任何流行的Linux和Windows操作系统的机器上 也可以实现虚拟化 容器是完全使用沙箱
  • c#—OpenFileDialog(打开文件对话框)

    OpenFileDialog是什么 OpenFileDialog是一个类 实例化此类可以设置弹出一个文件对话框 比如 我们发邮件时需要上传附件的时候 就会弹出一个让我们选择文件的对话框 我们可以根据自己的需求 自行设置一些对话框的属性 那么
  • ASP.NET WebAPI 连接数据库

    ASP NET Web API 是一种框架 用于轻松构建可以访问多种客户端 包括浏览器和移动设备 的 HTTP 服务 ASP NET Web API 是一种用于在 NET Framework 上构建 RESTful 应用程序的理想平台 本文
  • window11中Jdk1.8下载,安装和环境配置(超详细)

    一 下载安装包 这里为了方便大家 提供百度网盘下载 链接 https pan baidu com s 1 Qz7pO226To7yy6ytdPR Q https pan baidu com s 1 Qz7pO226To7yy6ytdPR Q
  • Windows——进程间通信

    进程间通信 进程间通信的概念 Mailslots 关于Mailslots 命名规则 使用 创建 Mailslot 写入 Mailslot 读取Mailslot 管道 关于管道 匿名管道 匿名管道创建 命名管道 命名规则 访问模式 相关操作
  • Spring Boot 多数据源及事务解决方案

    一个主库和N个应用库的数据源 并且会同时操作主库和应用库的数据 需要解决以下两个问题 如何动态管理多个数据源以及切换 如何保证多数据源场景下的数据一致性 事务 本文主要探讨这两个问题的解决方案 希望能对读者有一定的启发 1 数据源切换原理
  • 关于Springboot 无法捕获异常(@Transactional注解导致)

    在工作中发现了一个非常奇怪的事情 就是我突然间捕获不了异常 异常捕获 关于为什么会出现这样的问题呢 经过研究发现 原来是在这个类上 被加上了事务的注解 Transactional 这个事务的注解 就把我的异常给处理掉了 所以在这个被事务注解
  • 使用IntelliJ IDEA创建基于Gradle的kotlin项目

    一 首先打开Idea 选择Create New Project 二 选择Gradle项目并勾选 三 填写项目信息 四 然后一路默认下去就可以了 五 最终创建好的项目如下 六 写个HelloWorld
  • STM32F103ZET6【标准库函数开发】------按键扫描和外部中断的优先级对比

    1 打开正点原子的库函数源码可以看到关于按键的程序有两个 一个是按键输入实验 一个是外部中断实验 从最后体现的效果来看 这两个似乎是一样的 那么如果按键输入和外部中断冲突了 那么哪个优先级比较高呢 今天就来试试 2 首先还是简单介绍 硬件用
  • 什么是数据流图 Data Flow Diagram (DFD)

    什么是数据流图 DFD 如何绘制DFD 一张图片胜过千言万语 数据流图 DFD 是系统内信息流的传统视觉表示 一个整齐而清晰的DFD可以用图形描绘出大量的系统需求 它可以是手动的 自动的或两者的组合 它显示了信息如何进入和离开系统 什么改变