概述
数据流图也称数据流程图(Data Flow Diagram,DFD),精确地在逻辑上描述系统的功能、输入、输出和数据存储
等,是系统逻辑模型的重要组成部分。
基本元素
数据流(Data Flow)、加工(Process)、数据存储(Data Store)、外部实体(External Agent)
数据流:由
一组固定成分的数据
构成,表示数据的流向。
- 从一个加工流向另一个加工(P -> P)
- 写:从加工流向数据存储(P -> D)
- 读:从数据存储流向加工(D -> P)
- 输入:从外部实体流向加工(E -> P)
- 输出:从加工流向外部实体(P -> E)
加工:描述了输入数据流到输出数据流之间的变换。
- 一个加工可以有多个输入/输出数据流,但
至少有一个输入数据流和一个输出数据流
。- 一个加工的输入数据流必须足以产生输出数据流。
数据存储 :用来存储数据。
- 用双向箭头的数据流指向存储数据,表示对数据的修改。
外部实体:存在与软件系统之外的人或组织。
- 它指出系统所需数据的发源地(源)和系统所产生的数据的归宿地(宿)。
扩充符号
描述多个数据流之间的关系。
- 星号(
*
):表示数据流之间存在 “与” 关系。若是输入数据流表示所有输入数据流全部到达后才能进行加工处理;若是输出数据流则表示加工结束后将同时产生所有的输出数据流。 - 加号(
+
):表示数据流之间存在 “或” 关系。若是输入数据流表示其中任一数据流到达就能进行加工;若是输出数据流则表示加工处理的结果是至少产生其中一个输出数据流。 - 异或(
⊕
):表示数据流之间存在互斥关系。若是输入数据流表示当且仅当其中一个输入数据流到达后才能进行加工;若是输出数据流则表示加工处理的结果仅产生输出数据流中的一个。
层次结构
- 顶层图: 分层数据流图的顶层图只有一张图,其中
只有一个加工(即整个软件系统)
;该加工描述了软件系统与外界之间的数据流。 - 0层图: 顶层图中的加工(系统)经分解后的图称为0层图,也只有一张。
- 中间层:其中至少有一个加工被分解成一张子图。
- 底层图:处于分层数据流图的最底层的图,底层图中所有加工不再进行分解。
- 基本加工:不能再分解子图的加工。
- 加工编号
- 顶层图中只有一个加工(系统),不比编号。
- 0层图中加工编号依次为:1、2、3、…。
- 子图号为父图中被分解的加工号
- 子图加工编号,若父图中对应加工编号(子图号)为 x,该子图中加工编号依次为:x.1、x.2、…
原则
- 加工和数据流的正确使用
- 一个加工必须既有输入又有输出
- 数据流只能和加工相关,即加工流向加工,数据源流向加工,或加工流向数据源。
- 父图和子图必须平衡
- 父图中某加工的输入/输出(数据流) 和分解这个加工的子图的输入/输出(数据流)必须完全一致。