进入系统分析领域会带来一系列全新的概念、术语和图表。在这些内容中,数据流图(DFD)是可视化信息在系统中如何流动的核心工具。它清晰地展示了流程、数据存储以及与外部的交互,而不会陷入技术实现的细节中。然而,对于刚入门的分析师来说,理解其中的细微差别可能颇具挑战。本指南将解答新接触DFD的分析师们最常见的十个问题。我们将探讨定义、区别以及最佳实践,以确保你的图表能有效地与利益相关者和开发人员沟通。

数据流图是一种以图形方式表示数据在信息系统中流动的工具。与展示操作顺序或控制流的流程图不同,DFD专注于数据的流动。它回答了这样一个问题:“数据从哪里来,去往何处,以及在途中如何变化?”这种抽象使得利益相关者能够在不了解具体编程语言或数据库架构的情况下,理解系统的逻辑需求。
主要特征包括:
理解这一区别至关重要。当分析师创建DFD时,实际上是在绘制业务逻辑的地图。这张地图充当了业务需求与技术规范之间的桥梁,确保在编写任何代码之前,各方对数据的流转路径达成一致。
这是一个常见的混淆点。尽管两者都使用图形和箭头,但它们的目的本质上是不同的。流程图展示的是程序或流程的控制流,它显示决策点(是/否)、循环以及步骤的精确顺序,通常过于详细,不适合高层次的系统分析。
相反,DFD抽象掉了控制逻辑,不显示循环或决策分支,而是展示数据的转换过程。如果你在设计数据库,流程图可能展示查询逻辑,而DFD则展示数据从用户表单流向数据库表的过程。
需要记住的关键区别:
标准的DFD依赖于四个特定符号来表示系统组件。一致地使用这些符号,能确保任何阅读图表的人都能立即理解其符号含义。
| 符号 | 名称 | 功能 | 视觉表示 |
|---|---|---|---|
| 箭头 | 数据流 | 显示组件之间数据的流动 | 带标签的线 |
| 圆或圆角矩形 | 处理 | 将输入数据转换为输出数据 | 圆/方框 |
| 开口矩形 | 数据存储 | 存储数据以供后续使用 | 两条平行线/方框 |
| 矩形 | 外部实体 | 系统外部的数据源或目标 | 方框 |
每个符号都扮演着不同的角色。处理改变数据,数据存储保存数据,外部实体提供或消耗数据,数据流将它们连接起来。混淆这些符号可能导致开发阶段出现重大误解。
复杂系统需要不同层次的细节才能保持可理解性。我们通常将 DFD 分为三个层级。这个过程被称为“分解”或“展开”图表。
每一层都必须与上一层保持一致。除非正确平衡,否则在较低层级中不能引入上一层未出现的新数据流。
平衡是一项关键规则,可确保图表在各层级之间保持完整性。它指出,父过程的输入和输出必须与下层子过程的输入和输出相匹配。如果第1层的过程有一个输入“用户ID”,那么分解该过程的第2层图表也必须显示“用户ID”进入子过程。
违反平衡会导致混淆。它暗示数据被神奇地创造或销毁,这在逻辑系统中是不可能的。审查图表时,务必检查边缘。如果一条线在第1层进入一个方框,那么这条线必须在对应的第2层图表中出现。
这很重要:
名称不仅仅是标签;它们本身就是文档。过程名称应由一个动词后接一个名词组成。例如,“计算税款”比“税款计算”更合适。动词表示一个动作或转换,而名词表示主题内容。
常见的命名错误包括:
命名的一致性有助于分析师快速浏览图表,并在无需图例的情况下理解每个组件的功能。
在数据流图(DFD)中,数据存储表示数据被保存的位置。这是一个逻辑概念。在物理系统中,它可能是一个SQL表、平面文件、电子表格或云存储桶。数据流图并不关心具体的实现技术。
然而,一个常见错误是将数据存储视为临时缓冲区。数据存储必须持久化。即使系统关闭,数据依然存在。这使其与临时数据流区分开来。
在后续设计物理系统时,分析师或架构师必须将每个数据存储映射到一个物理存储方案。如果一个数据存储被标记为“客户记录”,数据库团队就知道需要创建具有该结构的表。如果数据流图表明某个特定数据流无需存储,则不应为此创建数据库表。
外部实体是指与所建模系统交互但位于其边界之外的人、组织或其他系统。它们是数据的来源或目的地。
例如:
必须清楚地区分系统内部的实体和外部的实体。如果一个组件是系统内部逻辑的一部分,它应该是处理过程或数据存储。如果它在边界之外,那就是一个实体。混淆这两者可能导致范围蔓延,即开发人员被要求构建属于第三方系统的组件。
即使是经验丰富的分析师也会犯错。尽早识别这些常见陷阱可以避免后期大量返工。以下是初稿中最常见的问题。
根据这份检查清单来审查你的图表,可以在向利益相关者展示之前显著提升其质量。
图表不是静态的产物,而是一份活文档。随着业务需求的变化,系统必须随之演进。如果处理过程“计算折扣”变为“应用分层折扣”,数据流图就必须更新。未能更新图表会导致文档与实际软件之间脱节。
维护的最佳实践包括:
将数据流图视为必须保持更新的参考文档,可确保未来的开发人员和分析师能够理解系统,而无需仅依赖记忆或过时的笔记。
为了确保你的数据流图能有效发挥作用,请遵循这些核心原则。清晰性是首要目标。如果利益相关者在快速浏览后仍无法理解数据的流动,那么这张图就未能实现其目的。始终一致地使用标准符号。保持层级分明。清晰命名你的处理过程。平衡输入与输出。永远记住,图表是一种沟通工具,而不仅仅是技术要求。
通过掌握这些基础概念,你为复杂系统分析打下了坚实的基础。你为开发团队提供了清晰的路线图,为业务领导者提供了明确的需求视图。这种共同的理解是成功实施系统的关键。
请记住,数据流图的价值在于它简化复杂性的能力。它让你能够同时看到森林和树木。用它来指导你的分析,验证你的需求,并传达你的愿景。通过练习,绘制这些图表将成为你工作流程中的自然组成部分,帮助你自信地应对系统设计的复杂性。