![f8b5ebff1d0a1e56b96cca55688f79c7.png](https://img-blog.csdnimg.cn/img_convert/f8b5ebff1d0a1e56b96cca55688f79c7.png)
返回目录:
Chilan Yuk:软件工程分析设计图库目录zhuanlan.zhihu.com![2180f46c10be42835ac39f994622173d.png](https://img-blog.csdnimg.cn/img_convert/2180f46c10be42835ac39f994622173d.png)
一、基本符号
1. 数据流图的基本符号
(1)数据的源点或终点
![0e594c802053acd9bd0a4c82418b3fae.png](https://img-blog.csdnimg.cn/img_convert/0e594c802053acd9bd0a4c82418b3fae.png)
软件系统外部环境中的实体(包括人员、组织或其他软件系统),一般只出现在数据流图的顶层图中。
(2)加工或处理
![20c2c103f6ad68e00cf8104606d16ed2.png](https://img-blog.csdnimg.cn/img_convert/20c2c103f6ad68e00cf8104606d16ed2.png)
加工是对数据进行处理的单元,它接收一定的数据输入,对其进行处理,并产生输出。
(3)数据存储
![6f7dd9576d980b8e840b42d821afdba7.png](https://img-blog.csdnimg.cn/img_convert/6f7dd9576d980b8e840b42d821afdba7.png)
又称数据文件,指临时保存的数据,它可以是数据库文件或任何形式的数据组织。
(4)数据流
![edad157b6149cf820d0fa401525a695f.png](https://img-blog.csdnimg.cn/img_convert/edad157b6149cf820d0fa401525a695f.png)
特定数据的流动方向,是数据在系统内传播的路径。
2. 数据流图的附加符号(可不画)
![d4b34a02a33549bc84056a014c267db2.png](https://img-blog.csdnimg.cn/img_convert/d4b34a02a33549bc84056a014c267db2.png)
二、构建DFD图的具体步骤如下
1. 先确定系统的输入输出,构建顶层DFD
具体内容由以下三部分组成:
- 一个加工,标识被开发的系统。
- 与系统有关的全部外部实体(即数据源点、终点)。
- 与外部实体相关的系统主要输入、输出数据流。
![94b993e71833ebaa843f92e477ca266a.png](https://img-blog.csdnimg.cn/img_convert/94b993e71833ebaa843f92e477ca266a.png)
注:顶层数据流图只包含一个处理,即标识被开发的系统。
2. 对顶层DFD图细化,构建0层DFD
0层数据流图体现系统主体功能及各项功能与外部的接口情况,主体功能体现系统框架。由四部分组成:
- 加工。每个主体功能用一个加工表示。
- 主体功能相关的输入、输出数据流。
- 外部实体。这些外部实体分别通过输入数据流引发各主体功能执行,并接收执行后的输出结果。
- 数据存储。体现主体功能执行后产生的、需要保留在系统内部的结果数据的去处。
![18db6fdeb3147e6b37caef455933b8c6.png](https://img-blog.csdnimg.cn/img_convert/18db6fdeb3147e6b37caef455933b8c6.png)
3. 逐层细化数据流图
首先细化0层图,将一个主体加工分解为不同的加工,每个操作环节分别由一个加工表示。如果主体功能复杂,很难在1层图中全部细化完成,则可以再次细化,产生2层图。以此类推,直到内部的执行逻辑十分简明、不能再细化为止。
![1925a007e8f796af68b5e09c4ba60ed2.png](https://img-blog.csdnimg.cn/img_convert/1925a007e8f796af68b5e09c4ba60ed2.png)
三、数据流图注意事项
1. 命名:数据流图中每个元素必须有名字,且命名合理。
加工名字应该反映整个加工的功能,而不是一部分功能。加工命名一般为动词+名词短语。
数据流名字应该代表整个数据流的内容,而不是仅仅反映它的某些成分。数据流命名为名词。
2. 画数据流不是画控制流。数据流图反映的是系统“做什么”,不反映“如何做”。
3. 每个加工至少有一个输入数据流和一个输出数据流,反映出此加工数据的来源与加工的结果。
4. 按层给加工编号。如果一张数据流图中的某个加工要分解成另一张数据流图时,则上层图为父图,直接下层图为子图,父、子图上的所有处理都应编号。子图的编号是父图中相应处理的编号的扩充,子图上处理的编号是父图号、小数点及子图的局部号组成。
![956d065a8af4d0a829e9577c071d28d5.png](https://img-blog.csdnimg.cn/img_convert/956d065a8af4d0a829e9577c071d28d5.png)
5. 保持父图与子图的平衡。子图的输入、输出数据流同父图相应加工的输入、输出数据流必须一致。
注意:如果父图的一个输入(或输出)数据流对应于子图中几个输入(或输出)数据流,而子图中组成这些数据流的数据项全体恰好是父图中的这个数据流,那么父图和子图仍然是平衡的。可借助数据字典中的关于该数据流的描述来判定。
![1b1b73121393e2769504900d4dcd9f3f.png](https://img-blog.csdnimg.cn/img_convert/1b1b73121393e2769504900d4dcd9f3f.png)
四、案例分析
例1:图书预订系统
书店向顾客发放订单,顾客将所填订单交由系统处理,系统首先依据图书目录对订单进行检查并对合格订单进行处理,处理过程中根据顾客情况和订单数目将订单分为优先订单与正常订单两种,随时处理优先订单,定期处理正常订单。最后系统将所处理的订单汇总,并按出版社要求发给出版社。
1. 构建顶层数据流图
![863755edc5660ea407c972819e1dbf37.png](https://img-blog.csdnimg.cn/img_convert/863755edc5660ea407c972819e1dbf37.png)
2. 构建0层数据流图(细化顶层数据流图)
![61c01e3c826ae8a45dd0876dd8214828.png](https://img-blog.csdnimg.cn/img_convert/61c01e3c826ae8a45dd0876dd8214828.png)
3. 逐层细化数据流图
![d0e80bf1125bc02e5396864e44ea90b2.png](https://img-blog.csdnimg.cn/img_convert/d0e80bf1125bc02e5396864e44ea90b2.png)
例2:商店业务处理系统
1. 顶层数据流图
![3d3a67365aaf8364fd4774014bfc36a4.png](https://img-blog.csdnimg.cn/img_convert/3d3a67365aaf8364fd4774014bfc36a4.png)
2. 第0层数据流图
![11480d992c98c8472288ab9fa3d37474.png](https://img-blog.csdnimg.cn/img_convert/11480d992c98c8472288ab9fa3d37474.png)
3. 销售细化
![a478f78989089f7bdcf5feb59cfa48ec.png](https://img-blog.csdnimg.cn/img_convert/a478f78989089f7bdcf5feb59cfa48ec.png)
4. 采购细化
![c78267c7032548b54050dca849df4dcf.png](https://img-blog.csdnimg.cn/img_convert/c78267c7032548b54050dca849df4dcf.png)
例3:商业自动化系统
- 营业员通过该系统记录每日销售的商品(商品名,商品编号,单价,数量,销售时间);
- 收款员通过该系统记录收到的现金数额以及购物余额;
- 商店经理每日统计销售额,并在必要时查看某种商品的销售情况(商品名,商品编码,金额)。
1. 建立系统环境图,确定系统边界
![dd12c28aee68a86ed0716eb3de495b39.png](https://img-blog.csdnimg.cn/img_convert/dd12c28aee68a86ed0716eb3de495b39.png)
其中:
- 数据流为:销售的商品,日销售额等
- 3个输入流,3个输出流
- 数据源:营业员,经理,收款员
- 数据潭:经理,收款员
- 加工名:要建立的系统名字
2. 自顶向下逐层分解
A.按人或部门的功能要求,将加工“打碎”(将“父图”的每一加工按其功能分解为若干子加工),形成:
![cfdf7a1d2e16b5574d9ae4d42573cdbb.png](https://img-blog.csdnimg.cn/img_convert/cfdf7a1d2e16b5574d9ae4d42573cdbb.png)
B.“分派”数据流(将“父图”的输入流和输出流“分派”到子加工),形成:
![00affc1d230462275a1c03634700190e.png](https://img-blog.csdnimg.cn/img_convert/00affc1d230462275a1c03634700190e.png)
C.引入文件,使之形成一个有机整体系统(在各加工之间建立合理的关系):
![c6dc0b9f0452b125f6b57a301073c011.png](https://img-blog.csdnimg.cn/img_convert/c6dc0b9f0452b125f6b57a301073c011.png)
至此,形成0层数据流图。
3. 逐步细化。例如:加工3可分解为
![7cedd081177db70963dd7e90b9b849ce.png](https://img-blog.csdnimg.cn/img_convert/7cedd081177db70963dd7e90b9b849ce.png)