数据流图(Data Flow Diagram,简称DFD)是一种常用的系统分析和设计工具,它通过图形化的方式描绘数据在系统中的流动以及数据如何被处理。DFD由四个基本元素构成:数据流、加工(过程)、文件和源/宿。
1. 数据流 (dataflow): 数据流由一组特定的数据组成,它代表了数据在系统内的传输路径。数据流可以从一个加工流向另一个加工,从文件流向加工,反之亦然,或者是从系统外部的源流向系统,再从系统流向外部的宿。
2. 加工 (process): 加工是DFD的核心,它描述了输入数据如何被转换成输出数据的过程。每个加工都有至少一个输入数据流和一个输出数据流,可能有多个输入和输出。加工通常需要一个明确的名称,表示其所执行的操作。
3. 文件 (file): 文件在DFD中代表数据的存储位置,它可以是实际的文件或数据库。文件被加工读取和写入,用于存储和检索数据。
4. 源/宿 (source/sink): 源和宿代表系统外部的实体,它们是数据的起点和终点。源产生数据流,而宿接收数据流。源可以是用户、设备或其他系统,宿则可能是报告、打印输出或其他系统接收数据的地方。
DFD的规范性和一致性是确保模型准确无误的关键:
- 父图与子图平衡: 这意味着在分层数据流图中,父图与子图的边界上的数据流必须一致。子图的输入和输出应与父图中对应加工的输入和输出匹配。
- 数据守恒: 每个加工的所有输出数据流必须能够直接从其输入数据流中获取,或者通过加工过程产生。这确保了数据在系统中的流动是有意义且无丢失的。
- 多余的数据流: 如果一个加工没有使用其所有输入数据流中的数据,那么这些未使用的数据项被认为是多余的。理想情况下,加工应该充分利用其输入,或者明确表示哪些输入未被使用。
- 局部文件: 加工的输出数据流不能与输入数据流同名,以避免混淆。文件是数据的临时或永久存储,其名称应当与输入/输出数据流区分开来。
在DFD中,还有一些特殊的符号用于表示更复杂的情况:
- 星号 (*) 表示数据流的“与”关系,即所有输入数据流都必须存在,加工才会进行,且处理结果会同时产生所有输出数据流。
- 加号 (+) 表示数据流的“或”关系,意味着加工可以接受多个输入数据流,或者可以产生多个输出数据流,但并不需要所有输入都存在,加工仍可进行。
举例来说,图书订购系统DFD中,包含了图书库存、入库单、图书代理商、书库管理、收费、制作财务报表等加工,通过数据流连接各个部分,如订单、核准的订购单、发书单等,形成一个完整的数据处理流程。
总结来说,DFD是一种强大的工具,用于理解和建模系统的信息流动和处理过程。确保DFD的一致性是确保模型准确反映系统功能的关键,这涉及数据流的平衡、数据守恒、避免多余的输入/输出以及正确使用文件和源/宿的概念。