数据流图(DFDS) 表示通过系统的信息流。DFD 迅速成为可视化软件系统流程中涉及的主要步骤和数据的流行方式。

数据流图 (DFD) 是表示流程或系统(通常是信息系统)的数据流的一种方式,例如:

  • 数据来自哪里
  • 它去哪里
  • 如何存储

换句话说,它显示了系统如何使用自上而下的分解技术(或称为逐步细化)在输入和输出方面处理数据。

什么是逐步细化?

其中一个有效的方式来解决一个复杂的问题是把它分解成更简单的子问题。您首先将整个任务分解为更简单的部分。

逐步细化本质上是对系统进行分解,以深入了解构成系统的子系统,称为自顶向下分解法。

例如,系统概述被开发为系统上下文图,它指定但不指定子系统的任何级别。然后将这些子系统中的每一个细化为更详细的内容(例如 DFD 中的级别 0、1、2 等),有时在许多其他子系统级别上进行细化,直到将整个规范简化为基本元素。

通常,头脑风暴产生的想法(实际上是我们待办事项列表中的事情)处于不同“细节”级别 — — 其中一些比其他的“低”,或者,我们可以说,一些包含其他。

让我们按层次排列这些。换句话说,让我们确定哪些步骤是另一个步骤的一部分。一种方法是将每个动作视为一组动作。

逐步细化示例

收拾屋子

{真空餐厅,整理客厅}

厨师

{选择食谱,购买食材,烤鸡。做蔬菜}

设置表

{找到桌布,取出盘子,取出玻璃器皿,取出银器,餐巾}

烤鸡

{烤箱预热至400 度,将鸡肉放入锅中,将鸡肉放入400 度烤箱中90分钟}

做蔬菜

{切菜,煮菜}

(*来源:自上而下的设计和逐步细化 — — 维基书籍)

一旦确定了这些基本元素,我们就可以将它们构建到计算机模块中。一旦它们建成,我们就可以把它们放在一起,用这些单独的组件组成整个系统。

DFD中的自顶向下分解技术

在 DFD 中,自顶向下分解(也称为调平或逐步细化)是一种用于在较低级别的 DFD 中显示更多细节的技术。调平是通过绘制一系列越来越详细的图表来完成的,直到达到所需的详细程度。如图所示,DFD Leveling 首先将目标系统显示为单个进程,然后显示更多细节,直到所有进程都是功能原语。

  • 处于较高级别的 DFD 不太详细
  • 高层次的 DFD 将分解为更详细的较低层次的 DFD
  • 上下文图是层次结构中最高的(参见 DFD 创建规则)。所谓的零级后跟 DFD 0,从流程编号(EG、流程 1、流程 2)开始。
  • 在下一步中,所谓的第一级 — DFD 1 — 编号继续。EG流程1分为DFD的前三个级别,分别编号为1.1、1.2和1.3。
  • 同样,第二级 (DFD 2) 中的进程编号为 EG 1.1.1、1.1.2、1.1.3 和 1.1.4。
  • 层数取决于模型系统的大小。级别 0 中的每个过程可能不具有相同数量的分解级别。

DFD 示例 — 客户服务系统示例

数据流图是一个层次结构图,包括:

  1. 上下文图(概念级别为零)
  2. 一级 DFD
  3. 以及可能的 Level-2 DFD 和进一步级别的功能分解,具体取决于您系统的复杂性

上下文DFD

下图显示了为铁路公司的客户服务系统绘制的上下文数据流图。它包含一个表示要建模的系统的过程(形状),在本例中为“ CS 系统”。它还显示将与系统交互的参与者,称为外部实体。在此示例中,CS 助手乘客是将与系统交互的两个实体。在流程与外部实体之间,存在数据流(连接器),表明实体与系统之间存在信息交换。

编辑此 Yourdon 和 Coad DFD 示例

上下文 DFD 是数据流模型的入口。它只包含一个进程,不显示任何数据存储。

1 级 DFD

下图为1级DFD,即上下文DFD所示的CS System流程的分解(即分解)。通读该图,然后我们将基于该图介绍一些关键概念。

编辑此 Yourdon 和 Coad 图示例

编辑此 Yourdon 和 Coad 图示例

CS 系统数据流图示例包含四个进程、两个外部实体和四个数据存储。尽管没有管理数据流图中形状定位的设计指南,但我们倾向于将流程放在中间,将数据存储和外部实体放在两侧,以便于理解。

根据该图,我们知道乘客可以从Inquiry Transport Details过程接收运输详细信息,这些详细信息由数据存储Transport DetailsRailway Live Statistic 提供。存储在Transport Details中的数据是持久数据(由标签“D”表示),而存储在Rails Live Statistic中的数据是短暂保存的数据(由标签“T”表示)。标注形状用于列出乘客可以查询的详细信息类型。

CS Assistant可以启动购买纪念品流程,这将导致将订单详细信息存储在订单数据存储中。虽然客户是购买纪念品的真实人,但访问系统存储订单详细信息的是CS助手。因此,我们让数据从CS Assistant流向Buy Souvenir流程。

CS Assistant还可以通过提供订单详细信息来启动买票流程,详细信息将再次存储在订单数据存储中。数据流图是以高度抽象的方式绘制的高级图。这里绘制的数据存储Order,并不一定意味着真正的订单数据库或数据库中的订单表。订单详细信息的物理存储方式将在稍后实施系统时决定。

最后,CS Assistant可以通过提供事件和物品详细信息来启动报告丢失过程,该信息将存储在丢失物品数据库中。

通过示例了解更多 DFD

  • 证券交易平台

  • 点餐系统

  • 客户服务系统(铁路公司)

  • 超市应用

  • 车辆维修站

使用逐步细化开发 DFD相关推荐

  1. 学习ios(必看经典)牛人40天精通iOS开发的学习方法

     亲爱的学员们: 如今,各路开发者为淘一桶金也纷纷转入iOS开发的行列.你心动了吗?想要行动吗?知道如何做嘛?速来学习由51CTO学院整理的iOS精品视频集,42个视频课程一步步引领你成为一名iO ...

  2. 学习ios牛人40天精通iOS开发的学习方法

    学习ios(必看经典)牛人40天精通iOS开发的学习方法 描述 这是一套从一个对iOS开发感兴趣的学员到iOS开发高手的系统.专业的课程体系.以培养企业开发真正需要的人才为目标,每个知识点都用案例来讲 ...

  3. 【转】 学习ios(必看经典)牛人40天精通iOS开发的学习方法【2015.12.2

    原文网址:http://bbs.51cto.com/thread-1099956-1.html 亲爱的学员们: 如今,各路开发者为淘一桶金也纷纷转入iOS开发的行列.你心动了吗?想要行动吗?知道如何做 ...

  4. 《CISP》(十)软件安全开发

    本系列是学习<CISP>中易混淆点的记录,文章顺序是按照教材讲解而定 目录 一.软件生命周期模型 1.瀑布模型 2.迭代模型RUP 3.增量模型 4.快速原型模型 5.螺旋模型 6.净室模 ...

  5. 系统架构设计笔记(35)—— 结构化分析与设计

    结构化分析与设计方法是一种面向数据流的需求分析和设计方法,它适用于分析和设计大型数据处理系统,是一种简单 . 实用的方法,曾获得广泛的应用. 1 结构化分析 结构化分析方法的基本思想是自顶向下逐层分解 ...

  6. 全国计算机等级三级数据库技术知识点

    第一次用xmind做思维导图,然后做出来的图太大了转成了大纲模式,将就看吧 第 1 章 数据库应用系统开发方法      1.1 数据库应用系统生命周期          1.1.1 软件工程与软件开 ...

  7. 计算机三级数据库技术备考知识点总结:第1~3章

    (黑色为普通内容,蓝色备注,红色重点) 第一章 数据库应用系统开发方法 数据库系统 DBS 主要提供应用数据的组织.存储.维护.访问等数据管理功能,数据库应用系统 DBAS 不仅为用户提供数据管理功能 ...

  8. 计算机三级数据库知识点汇总附思维导图

    目录 第一章:数据库应用系统开发方法 第二章:需求分析 第三章:数据库结构设计 第四章:数据库应用系统功能设计与实施 第五章:UML与数据库应用系统 第六章:高级数据查询 第七章:数据库及数据库对象 ...

  9. 计算机四级数据库工程师重难点

    今天报名了 计算机四级数据库工程师,刚才在网上搜到的,分享给大家! 第1章 引言 1. 数据是描述现实世界事物的符号记录,是用物理符号记录下来的可以识别的信息.   数据是信息的符号表示,是载体:信息 ...

  10. ②⭐全网首发☀️数据有道之数据库技术❤️干货大全【持续更新】❗❗❗

    目录 2.1 需求分析 考点1 需求分析的概念与意义 考点2 需求获取的方法 考点3 需求分析过程 2.2 需求分析方法 考点1 需求分析方法概述 考点2 DFD需求建模方法 考点3 其他需求建模方法 ...

最新文章

  1. 无穷级数求和7个公式_考研数学闭关修炼习题讲解(16)无穷级数 附(6)补充解释
  2. stm32-USART1重映射
  3. html列表无序嵌套,HTML/CSS - 如何正确定位这些嵌套的无序列表?
  4. Allegro如何导出生产文件
  5. wxWidgets:wxSpinButton类用法
  6. java命令_JAVA与模式之命令模式
  7. github 公钥 私钥_理解公钥与私钥
  8. Linux学习之SAMBA共享(无密码)
  9. IT男1-10分打分标准,请对号入座!
  10. python 获取当前月份月初日期和月末日期
  11. 学长们的求职血泪史(C/C++/JAVA)
  12. 第九届蓝桥杯本科Java B组题解【省赛】
  13. AutoCAD查询插件的开发
  14. 为心爱的人做一个超具创意的表白网页吧❤(告白气球)HTML+CSS+JavaScript
  15. isalpha、isalnum、islower、isupper等字符函数
  16. VSCode配置Python教程
  17. [HTML5]简单网页本地音乐播放器
  18. 记一次腾讯面试:进程之间究竟有哪些通信方式?如何通信? ---- 告别死记硬背
  19. 计算机组成原理中阶符是什么,计算机组成原理习手册.doc
  20. c51中断优先级c语言,51单片机中断优先级设置,中断优先级如何设置

热门文章

  1. windows家庭版关闭windows defender
  2. 2022年中式烹调师(初级)考试题库及在线模拟考试
  3. 苹果手机越狱软件_手机资讯:iPhone6/6 Plus不越狱怎么下载软件
  4. ninja: error: ‘xxx‘, needed by ‘xxx‘, missing and no known rule to make it
  5. python小游戏————坦克大战
  6. 回国后无线网safari无法连接服务器,解决Mac能连上WIFI但无法上网的问题
  7. linux查看照片命令,php 及 linux 命令行方式读取 图片 exif 信息
  8. Win7串口开发的的一些错误以及解决方案
  9. excel与python生成正态分布的数据,实践
  10. 看完不会你揍我!!Pytorch利用文本数据建立自己的数据集- Dataset Dataloader详解 附案例