数据流图(DFD)是系统分析与设计中的基础工具。它以可视化方式展示信息在系统中的流动过程,突出显示输入、输出、存储和处理环节。对于初学者而言,在尝试绘制复杂工作流程之前,理解DFD的运作机制至关重要。本指南探讨了构建准确图表所需的核心原则、组成部分和规则,且无需依赖特定软件工具。

数据流图是一种结构化分析技术,用于可视化系统内数据的流动。与侧重于控制逻辑和决策点的流程图不同,DFD仅专注于数据的移动。它回答的问题是:数据从哪里来,它去往何处,以及它会发生什么变化?
使用DFD的主要目标包括:
当你开始分析一个系统时,目标是创建一个利益相关者能够理解的模型。一个构建良好的图表可以消除关于数据处理的模糊性。它作为开发人员和分析师的蓝图,确保所有人对信息的流动方式达成一致。
要绘制有效的图表,必须理解四种基本图形及其含义。这些组件构成了数据流建模的语言。每个元素在系统架构中都有特定的作用。
外部实体代表被建模系统外部的数据源或目的地。它们也被称为终止符或代理。这些实体与系统交互,但不属于系统内部逻辑。
实体必须是外部的。如果实体属于系统内部逻辑,则应将其表示为一个处理过程。此处的混淆常常导致边界定义错误。
处理过程是将输入数据转换为输出数据的操作。它们代表系统内部正在进行的工作、计算或决策逻辑。处理过程会改变数据的状态或内容。
每个过程必须至少有一个输入和一个输出。一个只有输入而没有输出,或只有输出而没有输入的过程是无效的。这分别被称为一个黑洞或一个奇迹,分别。
数据存储是信息被保存以供后续使用的场所。它们不会转换数据,只是简单地存储数据。这可以是一个数据库、一个文件、一个实体文件柜,甚至是一个临时存放区域。
数据流可以进入和离开数据存储,但存储本身不会改变数据。它充当一个被动的存储库。在现代系统中,这通常与数据库表相关联。
数据流表示实体、过程和存储之间数据的流动。它们显示信息传输的方向。数据流必须始终标注,以明确指出正在移动的信息。
数据流必须有源和目标才能存在,不能在空中漂浮。此外,数据流不应在没有特定交点的情况下与其他流交叉,尽管某些符号系统为了简化允许这样做。
复杂系统无法在单页上表示。为了管理复杂性,DFD被分解为多个层次。这种技术称为分解它允许你在保持整体视图的同时,放大查看特定区域。
上下文图是最高层级的视图。它将整个系统视为一个单一过程。它标识出系统名称以及与之交互的所有外部实体。此视图中不显示任何数据存储或内部过程。
第1层图将上下文图中的单一过程分解为主要子过程。它揭示了系统的主功能区域。这通常是第一个创建的详细图表。
第2层图进一步分解第1层中的特定过程。如果第1层中的某个过程较为复杂,则在第2层中将其扩展为多个子过程。此过程持续进行,直到过程足够简单,可直接实现。
| 层级 | 关注点 | 过程数量 | 主要受众 |
|---|---|---|---|
| 上下文 | 系统边界 | 1 | 管理层,利益相关者 |
| 一级 | 主要功能 | 3到7 | 分析师,设计师 |
| 二级 | 子功能 | 可变 | 开发者,实施者 |
创建数据流图不仅仅是画线;它还涉及遵循逻辑规则。违反这些规则会导致技术上错误且令人困惑的图表。遵循标准规范可确保文档的一致性。
每个元素都必须清晰命名,以避免歧义。命名不当是初学者图表中最常见的错误。
命名的一致性使读者能够在图表的多个层级间追踪数据而不会混淆。
平衡是跨层级转换时的一项关键规则。父流程的输入和输出必须与分解后生成的子图的输入和输出相匹配。
始终将分解后流程边界进入和离开的箭头与父流程进行核对。
数据流可以流入和流出数据存储。然而,数据流不能在没有中间处理过程的情况下直接从一个数据存储流向另一个数据存储。必须通过一个处理过程作为中介来转换或路由数据。
此规则确保数据不会被无目的地移动。每一次移动都应意味着某种逻辑或操作正在执行。
在编程中,while 循环很常见,但在数据流图(DFD)中,它们可能表明设计存在缺陷。数据流不应在未经过其他组件的情况下立即返回到同一处理过程。如果数据流返回,意味着需要延迟或使用不同的处理过程。
初学者常常混淆数据流图和流程图。虽然两者都使用类似的图形,如方框和箭头,但它们的目的本质上是不同的。
| 特性 | 数据流图(DFD) | 流程图 |
|---|---|---|
| 关注点 | 数据流动 | 控制逻辑 |
| 决策点 | 未明确显示 | 中心组件(菱形) |
| 处理过程 | 数据转换 | 步骤顺序 |
| 时间 | 不显示顺序 | 显示顺序和时间 |
| 上下文 | 系统分析 | 算法或过程 |
如果你需要展示什么数据发生了什么变化,就使用数据流图。如果你需要展示如何系统接下来如何决定做什么,就使用流程图。使用数据流图来绘制控制逻辑,通常会导致图表杂乱且难以阅读。
一旦你理解了理论,实际应用就会遵循一个逻辑顺序。你不需要昂贵的软件来开始;纸和笔对于早期草图同样有效。
即使是经验丰富的分析师也会犯错。意识到常见错误可以节省审查阶段的大量时间。
数据流图并非适用于所有情况。理解其适用的恰当场景,是实现有效文档化的关键。
DFD不是一次性交付物。系统会变化,你的图表也应随之更新。维护工作包括确保文档与实际软件保持同步。
通过维护准确的图表,可以降低未来更新时出错的风险。过时的图表往往比没有图表更糟糕,因为它会误导开发团队。
数据流图是可视化系统行为的强大工具。它们关注数据的流动,而非控制逻辑。通过掌握四个核心组件——外部实体、处理过程、数据存储和数据流,你可以创建清晰且有效的模型。请记住将复杂系统分解为不同层级,保持严格的命名规范,并遵守平衡规则。避免常见的陷阱,如幽灵流和控制逻辑。通过练习,你将能够自信而清晰地绘制复杂的信息系统。