数据流图(DFD),是一种图形表示方法,用于描绘系统中数据的流动、存储、处理及外部实体之间的交互过程。它通过将复杂的系统分解为易于理解的组件和流程,帮助开发者、分析师及利益相关者直观地理解系统的数据流向和逻辑结构。
外部实体:代表系统之外的元素,如用户、其他系统或数据源。它们是数据的来源或目的地。
数据存储:表示系统中用于存储数据的组件,如数据库、文件系统等。
过程/处理:描述系统中对数据进行操作或转换的步骤,如计算、筛选、格式化等。
数据流:连接各个元素的有向箭头,表示数据的流动方向。
根据详细程度和用途的不同,数据流图通常分为两类:
逻辑数据流图:侧重于描述系统“应该做什么”,主要表达业务和业务运作,强调数据处理逻辑,比如数据收集、数据跟信息的转换和信息报告,而不涉及具体的物理实现,比如计算机配置、数据存储技术、信息传递方法等。
物理数据流图:更加具体,展示系统“如何实际运作”,包括硬件、软件组件及它们之间的物理连接。它使逻辑数据流图中描述的程序可以准确地实现已达到业务目标。
系统设计:在软件或信息系统开发初期,数据流图是规划系统架构、定义功能模块和接口的关键工具。
问题诊断:当系统出现故障或性能瓶颈时,通过数据流图可以追踪数据路径,快速定位问题所在。
优化流程:通过可视化数据流动,识别冗余步骤或瓶颈,优化数据处理流程,提高效率。
培训与教育:对于新加入团队的成员,数据流图是理解系统工作原理、快速上手的有效手段。
决定系统的范围,决定输入输出数据流。它说明系统的边界,把整个系统的功能抽象为一个加工。主要突出数据的源点和终点。
顶层DFD只有一张,表示整个系统与外部实体之间的关系,但并不深入到系统的内部。
在这一层中,通常只显示一个系统框和与之交互的外部实体,以及它们之间的主要数据流。
比如下图是某电子商务平台系统的顶层数据流图:
顶层数据流图比较笼统,仅从这张图上无法了解系统内部的具体数据和关系,下一步就应该把基本的系统模型进行分解细化,形成第0层数据流图。
比如还是某线上购物系统,将系统内的主要功能分为用户登录管理,交易管理,订单管理等,这些功能下增加了购物车列表,订单表等多个数据存储。
接下来是对功能级(0层)数据流图中的系统功能进一步细化,比如将上述0层数据流图中的用户登录管理、交易管理等功能进行进一步分解,展开每个主要功能下的内部细节。
中间层次的多少一般视系统的复杂程度而定。例如,在0层的基础上,可以创建第0层数据流图,进一步展开系统的主要组成部分;再针对第1层中的主要过程,可以创建第2层数据流图,进一步展开每个主要过程的内部细节。
在这些层次中,系统被细分为更小的功能单元(即加工),并通过数据流相互连接。
底层数据流图是指其加工不能再分解的数据流图。
其加工称为“原子加工”,即最基本的、不能再进行分解的加工过程。在这一层中,展示了每个加工节点的详细数据流转情况。
使用专业的绘图工具可以提高绘图效率,更加专注于思考,这里推荐使用ProcessOn制作数据流图,ProcessOn是免费在线的流程图、思维导图、UML、网络拓扑图等图的专业绘制工具。
1. 登录ProcessOn,进入个人文件页,选择新建流程图。
2. 确定系统的输入与输出:该阶段应该尽可能了解系统从外界接受或输出什么数据,因此绘制时需要将尽可能多的数据流绘制出来,再删除多余的,增加遗漏的。
3. 由外向里画系统的顶层数据流图:确定系统的输入输出后,将它们用加工连接起来,在数据流的值发生变化的地方就是一个加工。可以从输入数据流画向输出数据流,也可以从中间的数据流画出去。然后按照加工→加工间的数据→文件这个顺序进行命名。
4. 从顶层向下逐层分解,绘制分层数据流图:对于大型的系统,为了控制复杂性,便于理解,需要采用自顶向下逐层分解的方法进行,当进一步分解将涉及如何具体地实现一个功能时,就不应该再继续分解了。
还应该注意在数据流图中对处理进行编号的方法。顶层数据流图的处理元素可以按照1,2,3…来编号,当处理1被进一步分解时,它的组成编号将是1.1,1.2,1.3…,如果将1.1进一步分解,将得到编号为1.1.1,1.1.2…的处理。以该处理命名规则以此类推。
5. 为了使数据流图更加容易理解,可以添加必要的注释或说明,来解释元素的作用。
6. 合理安排元素位置,确保数据流清晰、逻辑连贯。
以上就是数据流图的相关内容,数据流图既能指导技术人员的系统设计和故障排查,也能使业务人员更好地理解数据流动和处理过程,加深对业务的理解。
以上数据流图的范例全部来自ProcecssOn模板社区,如果想尝试绘制数据流图或查看更多范例,可以进入ProcessOn官方网站。