一文详解数据流图(DFD)
·
1.数据流图是什么
数据流图是一种从数据传递和数据加工角度,以图形的方式来表达系统的逻辑功能,数据在系统内部的逻辑流向和逻辑交换的过程。(就像系统的数据地图一样,展示数据从哪里来到哪里去的过程)
举个例子,比如你平时点外卖的时候,你下的订单(数据),首先会从你手机流向外卖平台,然后平台会计算价格并分配给商家,随后给订单分配骑手,然后商家出餐,骑手拿到外卖并送出(这一系列就是数据加工),然后平台将这笔订单存储起来(数据存储)。这就是一个简单的数据流图
数据流主要由4个基本元素组成:
(1)数据流:
用带箭头的线表示,箭头方向代表数据的流向,线上标注数据流名称。比如上面的例子中的“订单信息”,它从用户流向平台,这个流向就用带箭头的线表示,“订单信息”就是这条线的名称
(注:数据流的流向必须经过加工)
如:
(2)加工:
也叫数据处理,用圆形或圆角矩形表示,里面写上加工名称,描述了对数据进行的操作,是整个数据流图的核心。上面例子中“计算价格”、“分配商家”、“分配骑手”等就是数据加工
(注:加工必须有数据流输入和数据流输出)
如:
(3)数据存储:
用双横线或半框矩形表示,表示暂时存储的数据,每个数据存储都有名字,就像仓库用来存放货物一样
如:
(4)外部实体:
用矩形表示,代表系统之外的人员、组织或其它外部系统,它们与系统进行数据交互。比如上面例子中的用户、商家和骑手就是外部实体
如:
2.数据流图的层次结构:
(1)顶层数据流图:
顶层数据流图是对整个系统的概括,它只包含一个处理过程,表示整个系统的功能。(顶层数据流图的外部实体主要是用户或其它系统,数据存储是系统的主要数据存储,数据流是系统的主要输入和输出)
(2)中层数据流图:
中层数据流图是对顶层数据流图中的处理过程进行进一步的细化,将一个处理过程分解成多个子处理过程,并描述它们之间的数据流动。(中层数据流图中的外部实体和数据存储可以与顶层数据流图相同,也可以根据需求进一步细化)
(3)底层数据流图:
底层数据流图是对中层数据流图中的子处理过程进行进一步细化,它将一个子处理过程分解成多个更具体的处理步骤,并描述它们之间的数据流动。(底层数据流图中的外部实体和数据存储可以与中层数据流图相同,也可以根据需要进行进一步细化)
3.数据流图的绘制步骤:
(1)确定系统边界:
绘制数据流图的首要任务是明确系统边界,需要深度分析系统需求,与相关人员进行沟通,找出系统与外部环境的交互点(这些交互点决定了数据的输入和输出)
(注:外部实体、数据处理加工过程、数据存储等都可以在绘制前与相关业务人员进行讨论,能更加有效的绘制数据流图)
(2)绘制顶层数据流图:
顶层数据流图是整个系统的高度概括,展现了系统的整个框架(在绘制顶层数据流图时,只需要用一个加工来代表整个系统,然后清晰标识出系统的输入数据流和输出数据流)
(3)逐层分解细化:
从顶层数据流图开始,逐步将系统功能进行分解,绘制出中层和底层数据流图(每一层分解都使我们更深入地了解系统内部的数据处理过程)
(4)检查与优化:
检查与优化是必不可少的环节,确保数据流图的准确性、完整性和一致性(可以从多个方面进行检查,如查看数据流是否有合理的来源和去向,有没有数据凭空出现或无处可去的情况,检查加工的逻辑是否正确,是否符合系统的实际业务需求,数据存储是否设计的合理,是否能满足持久化和快速访问的需求)
4.数据流图的设计原则:
(1)父图与子图的平衡原则:
子图的输入输出数据同父图对应加工的输入输出的数据流必须一致
父图:
子图:
(父图中有提货单的输出流,子图里也应该有提货单的输出流)
(2)数据守恒原则:
每个加工环节的输入数据流和输出数据流之间必须存在明确的对应关系,输出数据流中的数据应该是对输入数据流中数据的加工处理后的结果
数据的数量在加工过程中应该保持不变,加工环节不会增加或减少数据的数量,只会改变数据的形态和内容
数据流图中的每个数据项都应该能够被追溯其来源,并且每个输出数据项都能清晰的说明其去向,确保数据的流动和变换的过程是可理解和可验证的
(注:外部实体和外部实体之间不存在数据流(一个外部实体可以通过系统向另一个外部实体发送数据,但这需要经过系统内部的加工和转换过程);外部实体和数据存储之间不存在数据流;数据存储和数据存储之间不存在数据流)
(3)守恒加工原则:
对于同一个加工来说,输入和输出的名字必须不相同,这有助于在数据流图中清晰的标识和区分不同的数据流
对于上面的加工,输入和输出都是A,加工没有作用。如,人不可能吃什么,出来的就是什么
对于上面的加工,输出是A,但是没有输出。如,人不可能一直吃饭,而不上厕所
对于上面的加工,输出是A,但是没有输入。如,人不可能一直上厕所,而不吃饭
5.数据字典:
为数据流图的每个数据流、文件、加工等做出说明
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐


所有评论(0)