数据流图(DFD)简介

软件需求分析的基础:机构化分析方法。

结构化分析方法适用于数据处理类型软件的需求分析。它提供的主要建模工具包括 数据流图、数据字典、机构化英语、判定表、和判定树等。

 

在这里主要说明DFD图的使用和画法。

数据流图(DFD--Data Flow Diagram)作用

指明数据在系统中移动时如何被变换,描述对数据流进行交换的功能和子功能。

DFD图的特性。

抽象性、概括性、层次性。

DFD图的用途。

1)系统分析员用这种工具可以自顶向下分析系统信息流程。

2)可在图上画出需要计算机处理的部分。

3)根据数据存贮,进一步作数据分析,向数据库库设计过渡。

4)根据数据流向,定出存取方式。

5)对应一个处理过程,用相应的语言、判定表等工具表达处理方法。

DFD图的优缺点。

1)总体概念强,每一层都明确签掉“干什么”,“需要什么”,“给出什么”

2)可以反映出数据的流向和处理过程。

3)由于自顶向下分析,容易及早发现系统各个部分的逻辑错误,也容易修正。

4)容易与计算机处理相对照。

5)不直观,一般都要咋作业流程分析的基础上加以概括、抽象、修正来得到。

6)如果没有计算机系统的帮助,人工绘制会太麻烦,工作量较大。

数据流图的画法。

具体参考: https://baike.baidu.com/item/%E6%95%B0%E6%8D%AE%E6%B5%81%E5%9B%BE

另外, 也可以参考: https://wenku.baidu.com/view/74deb16b580216fc700afdb4.html

 

1、数据流图的定义

简称DFD,它从数据传递和加工角度,以图形方式来表达系统的逻辑功能、
数据在系统内部的逻辑流向和逻辑变换过程,是结构化系统分析方法的主要表达工具及用于表示软件模型的一
种图示方法。
数据流图是结构化分析方法中使用的工具,它以图形的方式描绘数据在系统中流动和处理的过程,由于它只反映
系统必须完成的逻辑功能,所以它是一种功能模型。在结构化开发方法中,数据流图是需求分析阶段产生的结果。

数据流程图包括:
a.指明数据存在的数据符号,这些数据符号也可指明该数据所使用的媒体。
b.指明对数据执行的处理的处理符号,这些符号也可指明该处理所用到的机器功能。
c.指明几个处理和(或)数据媒体之间的数据流的流线符号。
d.便于读、写数据流程图的特殊符号。

2、数据流图的使用方法

数据流图采用分层的形式来描述系统数据流向,每一层次都代表了系统数据流向

的一个抽象水平,层次越高,数据流向越抽象。高层次的DFD图中处理可以进一

步分解为低层次、更详细的DFD图。

2.1数据流图表示法(Gane-Sarson模型)

2.2数据流图表示法中各图形的定义

数据源点和数据汇点:指系统以外又与系统有联系的人或事物。

用来表达该系统数据的外部来源和去向。

数据流:指处理功能的输入或输出,箭头表示数据流向。

加工或处理:指对数据进行处理加工,使数据变换。

数据存储:表示某种独居保存后的逻辑统称,一般为表结构。

2.3数据流图的分层结构

2.4数据流图实例

顶层数据流图

a

第一层数据流图

b

第二层数据流图-1

c

第二层数据流图-2

d

第二层数据流图-3

e

第二层数据流图-4

3、注意事项

3.1层次的划分遵守原则

(1)同一张图上所有处理过程应该处于同一个抽象层次上。
(2)一个处理经过展开,一般以分解为4~10个处理为宜。

3.2正确性检查

(1)数据守恒,或称为输入数据与输出数据匹配
①处理有输入就应该有输出
②处理有输出就肯定有输入
③输入的数据应该全部流出该处理或者要用于产生流出该处理的数据(排除无用数据)
④输出的所有数据必须曾经流入过该处理或者是由流入该处理的数据加工产生(保证必要数据)
(2)在一套数据流图中的任何一个数据存储,必定有流入的数据流和流出的数据流。
(3)父图中的某一处理的输入、输出数据流必须出现在相应的子图中。

3.3提高易读性

(1)简化处理间的关系(利用数据存储)
例:
设P1,P2为处理,D1为数据存储
P1->P2可以改变为:P1->D1 D1->P2
(2)均匀分解
(3)适当的命名

3.4确定系统边界

(1)排除纯手工活动
(2)排除其他外部系统的活动
(3)和系统外的外部源点之间的接口通过数据流来实现
另外, 的例子
--------------
DFD画法? ?(来自百度百科)(1)确定系统的输入输出

由于系统究竟包括哪些功能可能一时难于弄清楚,可使范围尽量大一些,把可能有的内容全部都包括进去。此时,应该向用户了解“系统从外界接受什么数据”、“系统向外界送出什么数据”等信息,然后,根据用户的答复画出数据流图的外围。

(2)由外向里画系统的顶层数据流图

首先,将系统的输入数据和输出数据用一连串的加工连接起来。在数据流的值发生变化的地方就是一个加工。接着,给各个加工命名。然后,给加工之间的数据命名。最后,给文件命名。

(3)自顶向下逐层分解,绘出分层数据流图

对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,即用分层的方法将一个数据流图分解成几个数据流图来分别表示

举例说明:
举例一:

下图是一个飞机机票预订系统的数据流图,它反映的功能是:旅行社把预订机票的旅客信息 (姓名、年龄、单位、身份证号码、旅行时间、目的地等)输入机票预订系统。系统为旅客安排航班,打印出取票通知单(附有应交的账款)。旅客在飞机起飞的前一天凭取票通知单交款取票,系统检验无误,输出机票给旅客。

(1)首先画系统的输入输出,即先画顶层数据流图。顶层流图只包含一个加工,用以表示被开发的系统,然后考虑该系统有哪些输入数据、输出数据流。顶层图的作用在于表明被开发系统的范围以及它和周围环境的数据交换关系。图3-3为飞机机票预订系统的顶层图。

(2)画系统内部,即画下层数据流图。不再分解的加工称为基本加工。一般将层号从0开始编号,采用自顶向下,由外向内的原则。画0层数据流图时,分解顶层流图的系统为若干子系统,决定每个子系统间的数据接口和活动关系。例如,在上面的机票预订系统按功能可分成两部分,一部分为旅行社预订机票,另一部分为旅客取票,两部分通过机票文件的数据存储联系起来,图3-4为0层数据流图

(3)注意事项。

①命名。不论数据流、数据存储还是加工,合适的命名使人们易于理解其含义。

②画数据流而不是控制流。数据流反映系统“做什么”,不反映“如何做”,因此箭头上的数据流名称只能是名词或名词短语,整个图中不反映加工的执行顺序。

③一般不画物质流。数据流反映能用计算机处理的数据,并不是实物,因此对目标系统的数据流图一般不要画物质流。

④每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。

⑤编号。如果一张数据流图中的某个加工分解成另一张数据流图时,则上层图为父图,直接下层图为子图。子图及其所有的加工都应编号。

⑥父图与子图的平衡。子图的输入输出数据流同父图相应加工的输入输出数据流必须一致,此即父图与子图的平衡。

⑦局部数据存储。当某层数据流图中的数据存储不是父图中相应加工的外部接口,而只是本图中某些加工之间的数据接口,则称这些数据存储为局部数据存储。

⑧提高数据流图的易懂性。注意合理分解,要把一个加工分解成几个功能相对独立的子加工,这样可以减少加工之间输入、输出数据流的数目,增加数据流图的可理解性

举例二:

(1)接受顾客的订单,检验订单,若库存有货,进行供货处理,即修改库存,给仓库开备货单,并且将订单留底;若库存量不足,将缺货订单登入缺货记录。

(2)根据缺货记录进行缺货统计,将缺货通知单发给采购部门,以便采购。

(3)根据采购部门发来的进货通知单处理进货,即修改库存,并从缺货记录中取出缺货订单进行供货处理。

(4)根据留底的订单进行销售统计,打印统计表给经理