数据流图-1(DFD基本组成)

数据流图(Data Flow Diagram,简称DFD) 是一种最常用的结构化分析工具,它从数据传 递和加工角度,以图形的方式刻画系统内的数据运动情况。

数据流图中具有四种基本成分,如图1.3所示。

图1.3 数据流图的基本成分及其表达符号

数据流表示数据的流动情况;加工表示对数据的加工处理过程,它的名字应能简明扼要地表明所完成的是什么加工;数据存贮在数据流图中起着保存数据的作用,指向数据存贮的数据流可以理解为写数据,从数据存贮引出的数据流可以理解为读数据,双向数据流可以理解为修改数据;数据源点或终点,表示图中出现数据的始发点或终止点,它在图中的出现仅仅是一种符号,并不需要以软件的形式进行设计和实现。

在数据流图中,如果有两个以上数据流指向一个加工或从一个加工中引出,则这些数据流之间往往存在一定的关系。我们通常用图1.4所示符号表示这种关系。

图1.4 多个数据流与加工关系的表示

在画数据流图时,如下几个问题值得注意:

1)是画数据流图而不是画程序框图

对于很多人来说,通过学习计算机语言已经比较熟悉程序框图了,在画数据流图时很容易将它们搞混。程序框图是从对数据进行加工的角度描述系统的,其箭头是控制流,表示的是对数据进行加工的次序,它用于描述怎样解决问题;数据流图则是从数据的角度来描述系统的,其箭头是数据流,表示的是数据的流动方向,它用于描述是什么问题。

2)数据流及加工的命名

通常是先为数据流命名,然后再为加工命名。在给数据流命名时,应避免使用象“数据”、“输入”之类的缺乏具体含义的名字;在给加工命名时,理想的做法是取由一个具体的及物动词加一个具体的宾语构成的名字,如果必须用两个动词,则可以考虑将这个加工再分解成两个加工。在命名时,所取的名字应适合整个数据流或加工,而不是仅仅反映它的某些成分。如果发现某个数据流或加工难以命名,那么很可能是数据流图分解不当造成的,此时应该考虑重新分解数据流图。

数据流图-2(分层数据流图)

对于比较复杂的实际问题,在数据流图上常常出现十几个乃至几十个、上百个加工,这样的数据流图看起来很不清楚。采用层次结构的数据流图则能很好地解决这个问题。

如图中的系统S

图1.5 系统加工数据流图

它的输入输出反映了系统与外界环境的关系或接口,仅用这个图是不能表明数据的加工要求的,需要进一步细化。如果S可以分解成三个子系统S1、S2、S3,则可画出它们加工及其相关的数据流。子系统S1又可以进一步细化为S1.1、S1.2、S1.3,等等,如图1.6所示。

图1.6 分层数据流图

按照这种方法对系统进行自顶向下的逐步细化和分层分解,并以分层的数据流图反映这种结构关系,就能比较清楚地表达和容易地理解整个系统。在画分层数据流图应考虑如下几个问题:

1) 编号

为便于管理和阅读,要对每个层次上的图及其加工进行编号。层次编号自上而下分别为顶层图(系统图)、0层图、1层图、等等。各层图的关系为父子关系,下层图为子图,上层图为父图。子图的编号就是其父图中相应加工的编号;子图中加工的编号由子图号、小数点和局部号组成。在这种编号中,图号中的小数点的个数就是该图所在的层次号,最后一个小数点前的号码就是其父图的编号。例如,编号为3.2.1的图,是2层图中的一个子图,其父图编号为3.2。

2)父图和子图的数据平衡

子图是父图的细化,因此,子图的输入、输出数据流应和父图中相应加工的输入、输出数据流一致。

3)分解的程度

对一个加工进行细化分解,一次分解成两个或三个加工,可能需要的层次过多;但分解得过多又难于让人理解。根据心理学的研究成果,人们能有效地同时处理问题的个数不超过7个 。因此,一个加工每次分解细化出的子加工个数一般不要超过7个。当所分解出的子处理已十分简单时,就可停止这种分解过程。

4)图表格式

对于一个较大的系统来说,其数据流图可能多达十几张、几十张,一般都将它们装订成册。为了方便收集、整理和阅读,可以设计一个类似图1.7所示的图表进行格式化。其中,假设 大学教务管理系统是大学教学管理系统0层数据流图中的第2个子加工,是1层数据流图中的一 个子图。

图1.7 数据流图图表格式

数据流图-3(数据词典)

尽管数据流图给出了系统数据流向和加工等情况,但其各个成分的具体含义仍然不清楚或不明确,因此,在实际中常采用数据词典这一基本工具对其作进一步的详细说明。

数据词典(Data Dictionary,简称DD)和数据流图密切配合,能清楚地表达数据处理的要求 。数据词典用于对数据流图中出现的所有成分给出定义,它使数据流图上的数据流名字、加工名字和数据存贮名字具有确切的解释。每一条解释就是一条词条,按一定的顺序将所有词条排列起来,就构成了数据词典,就象日常使用的英汉词典、新华词典一样。

数据词典包括数据流、数据存贮和加工等条目类型,下面分别介绍它们的表示方法。

1)数据流表示

采用自上而下、逐层分解的方式对每一条数据流进行定义。在数据流的定义式中,通常采用下述符号:

= 被定义为

+ 与

m· · n 界域

[...,...] 或,选择括号内的某一项

[...|...] 或,选择括号内的某一项

{...} 重复,花括号内的项多次重复出现,重复次数的上、下限也可在括 号边上标出

(...) 可选,圆括号内的项可出现也可不出现

"..." 引号内给出的是基本数据元素,它们无需进一步定义

以大学教务管理问题数据流图中的数据流的定义为例:

(D01) 学生证=学号+密码

(D02) 申请单=学号+(课程号+选课学期)

(D03) 谢绝=["非法证件"|"不合格单"|"证单不符"]

(D04) 注册=学号

(D05) 选课=学号+课程号+选课学期

(D06) 无此课=学号+课程号+"无此课"

(D07) 注册记录无效=学号+"注册无效"

(d01.1) 学号="00000001".."99999999"

(d01.2) 密码="000001".."999999"

(d02.2) 课程号=1{"英文字母"}4+"0001".."9999"

(d02.3) 选课学期="0001".."9999"+["春季"|"秋季"]

2)数据存贮表示

有两种类型的数据存贮,一种是文件形式,另一种是数据库形式。对于文件形式,其定义包括定义文件的组成数据项和文件的组织方式两项内容,其中文件组成数据项的定义方式与数据流的定义方式相同。例如,某图书馆借书系统数据流图中的文件的定义为:

文件组成数据项

(F1) 借书记录={证号+姓名+书号+书名 +借书日期 }

(F2) 库存书目={书号+书名+"库存总数"+"现库存数"}

(F1.5) 借书日期=日期

文件组织方式:

借书记录=按借书日期先后排列

库存书目=按书名先后排列

对于数据库形式,我们将在1.3节专门讨论。

3)加工表示

数据词典中只需列出基本加工的定义即可,因为任何一个加工最后总能分解成一些基本加工,只要有了基本加工的定义,就可以理解其它加工。

加工的定义又称为小说明,它集中描述一个加工做什么,也可包括一些与加工有关的信息,如执行条件、优先次序、执行频率和出错处理等。目前小说明采用如下几种方式描述。

1)结构化语言

用结构化语言描述小说明的形式如下:

加工编号:在数据流图中的编号

加工名:在数据流图中的加工名字

加工逻辑:本加工的处理方法说明

有关信息:执行条件等

例如,大学教务管理问题中的加工定义如下。

加工编号:2.1

加工名: 检验

加工逻辑:读入“学生证”及“申请单”,检验“学生证”的有效性和“申请单”的合格性,如果检验均通过则让“申请单”通过,否则输出“谢绝”。

加工编号:2.2

加工名: 审查接受申请

加工逻辑:根据传送过来的“申请单”审查申请人的以往注册记录,如果审查通过则根据申请内容区分不同的申请事务,否则输出“注册记录无效”。

加工编号:2.3

加工名:注册登记

加工逻辑:为申请人进行本次注册登记。

有关信息:每学期开学注册时间内执行此加工。

加工编号:2.4

加工名:检索课程

加工逻辑:根据“申请单”检索课程开设情况,如果有满足要求的课程则让“选课”通过,否则输出“无此课”。

有关信息:每学期开学选课时间内执行此加工。

加工编号:2.5

加工名:选课登记

加工逻辑:为申请人进行选课登记和选课单打印。

有关信息:每学期开学选课时间内执行此加工。

2)判定表

判定表用于描述一些结构化语言不易表达清楚的加工逻辑。例如,旅游票预订系统中,在旅游旺季7~9月份、12月份,如果订票超过50张,则优惠票价的15%;50张以下,优惠5%。 在旅游淡季1~6月份、10月份和11月份,若订票超过50张,优惠30%;50张以下,则只优惠20%。用语言表达显得罗嗦,如果用表1.1所示的判定表形式表示,则简单明了,如表1.2所示。

表1.1 判定表一般结构

条件名

(条件项)

......

(条件项)

......

 

 

 

条件名

(条件项)

......

(条件项)

操作名

(操作项)

......

(操作项)

......

 

 

 

操作名

(操作项)

......

(操作项)

表1.2 旅游预订票系统判定表

旅游时间

7~9月,12月

1~6月,10月,11月

订票量

<=50

>50

<=50

>50

折扣量

5%

15%

20%

30%

           

3)判定树

判定树以图形方式描述加工逻辑,它结构简单,易读易懂。例如上面的判定表,若用判定树来表示就很清晰,如图1.8所示。

图1.8 旅游预订票系统的判定树

加工逻辑可以用结构化语言、判定表、判定树等多种形式表示,也可将它们结合起来表示。

好东西大家分享: 怎么画数据流图相关推荐

  1. 好东西大家分享: 怎么画数据流图 1

    数据流图(Data Flow Diagram ,简称DFD) 是一种最常用的结构化分析工具,它从数据传 递和加工角度,以图形的方式刻画系统内的数据运动情况. 数据流图中具有四种基本成分,如图1.3 所 ...

  2. 哥们,好东西一起分享,这是新地址:http://elves.cnblogs.com/

    哥们,好东西一起分享,这是新地址:http://elves.cnblogs.com/ 哥们,好东西一起分享,这是新地址:http://elves.cnblogs.com/ 哥们,好东西一起分享,这是新 ...

  3. 一篇文章彻底学会画数据流图

    一篇文章带你学会如何画数据流图(DFD) 文章目录 数据流图 数据流图基本符号 数据流图层次结构 顶层流图 中间数据流图 底层流图 数据流图设计原则 1.父图-子图平衡原则 2.数据守恒原则 3.守恒 ...

  4. 数据流图的画法,如何画数据流图

    1.数据流图的定义: 数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映系统必须完成的逻辑功能,所以它是一种功能模型. 数据流图英文缩写DFD(Data ...

  5. 软件设计师认证 -如何画数据流图

    1. 数据流 企业活动包含各种流,比如说物资流.事务流.货币流.人员流.机器及设备流. 而数据流是记录以上各种流的抽象表示. 2.什么是数据流图 DFD? 数据流图 = 数据流程图,便于理解的分析系统 ...

  6. 编程文档中心-(好东西一起分享)

    原地址引用自:  http://www.seeitco.com/doc name="google_ads_frame" marginwidth="0" marg ...

  7. 漫画条漫怎么画分镜?分享个人画分镜的方法

    漫画条漫怎么画分镜?怎样才能快速画好漫画分镜?想画好漫画条漫分镜的教程有哪些?想必这些问题都是初学者比较伤脑筋的问题,那么初学者到底怎样才能画好漫画条漫的分镜呢?今天小编就在收集整理了关于漫画条漫怎么 ...

  8. Mysql的ER图怎么画_分享——如何画数据库ER图   王慧芬(10100340214)

    如何画ER图 以自底向上设计概念结构的方法为例,它通常分为两步: 第一步:首先要根据需求分析的结果(数据流图.数据字典等)对现实世界的数据进行抽象, 设计各个局部视图即分E-R图. 第二步:集成局部视 ...

  9. 好东西大家分享: 微软界面设计指导

    假如你在Windows环境下开发,微软定义了一套称为"用户体验"的参考规范(当然,"用户体验"的内容已经超出了狭义的"用户界面").这个规范 ...

最新文章

  1. Golang TDD实践报告:快速排序Quick Sort
  2. 前方高能:1024程序员节读书攻略来来来来啦!
  3. jps could not synchronize with target
  4. MongoDB 4.0 事务实现解析
  5. 洛谷 P1019 单词接龙 (DFS)
  6. instanceof java list_Java:Instanceof和泛型
  7. Linux中的一个命令行计算器bc简介
  8. 阿里、字节为何都如此偏爱Go语言?
  9. mysql中phpmyadmin安装教程_phpmyadmin安装方法
  10. 【C语言】强迫症是不是病QAQ
  11. H3C 典型数据链路层标准
  12. Android中Dialog的使用
  13. 北京的小伙伴,本周五阿里聚安全约你来玩
  14. android+3.1.2+imagebutton监听,android Button ImageButton 差别
  15. 【Linux学习】Vim 怎么设置显示行号以及永久性显示行号
  16. 金山毒霸遭国际评测组织除名
  17. CST2020 安装包和安装步骤
  18. 新手用canvas画时钟
  19. 制作往图片里插入视频,视频添加到图片上播放
  20. 3D-HEVC解码器一

热门文章

  1. xdoj-87-跳一跳
  2. 【wordpress】文章编辑器插件
  3. 2022卡塔尔世界杯。CSDN世界杯勋章来啦
  4. excel表格的上传和下载
  5. transform.position 绝对位置与相对位置
  6. Matlab虚拟现实工具箱——没有VRML Editor时的使用办法(应该是Simulink 3D Animation Demo版本的都是这样)
  7. 斑马zpl指令二维码换行
  8. 基于51单片机的自动浇花系统
  9. Mac系统原生支持NTFS格式硬盘
  10. 【法规】投标申请人资格预审须知-刘俊平