软件工程中的数据流图 (DFD)

2025年4月15日 | 阅读7分钟

数据流图 (DFD) 是一种可视化或图形化描述,它使用一套标准的符号和约定来描述业务如何处理数据。诸如结构化系统分析和设计方法 (SSADM) 等正式技术经常包含 DFD。尽管 DFD 在表面上可能与流程图或统一建模语言 (UML) 相似,但它们并不旨在描绘程序逻辑的细节。

Data Flow Diagrams

数据流图的目的是什么?

DFD 使用信息流和处理步骤顺序的图形化描述,而不是文本描述,从而简化了应用程序业务需求的说明。它们最初记录业务分析的结果,然后在整个开发过程中使用。然后改进描述,以展示数据如何在应用程序流中传输和被应用程序流改变。有自动化和手动过程的示例。

数据流图的历史是什么?

UML 出现于 DFD 之后,DFD 于 20 世纪 70 年代末首次亮相软件工程。加州大学洛杉矶分校的 David Martin 和 Gerald Estrin 的数据流图计算模型,启发了计算机专家 Larry Constantine 和 Ed Yourdon 出版的《结构化设计》一书,该书推广了 DFD。面向对象设计,即软件工程中一个重要的范式转变,至今仍被广泛使用,是由结构化设计的概念带来的。计算专家 Chris Gane、Trish Sarson 和 Tom DeMarco 提供了成为 DFD 方法规范的符号和约定。

那些早期的 DFDs 彻底改变了软件工程、软件开发和业务流程。通过定义工作流程、识别可访问的数据存储以及将系统设计与系统支持的活动联系起来,绘制数据处理系统中的数据流有助于理解业务流程本身中的数据流。

数据流图规则

大多数数据流图都遵循以下基本指南

  1. 正在传输的数据类型由附着在每个数据流上的简短、描述性文本标签标识。
  2. 使用描述正在进行的数据转换的简短动词短语来标识每个过程。
  3. 描述数据类型和存储的术语或名词短语附着在每个数据存储上。
  4. 每个过程和数据存储至少有一个输入和一个输出。
  5. 外部实体不能直接附加到数据存储。
  6. 来自外部源的数据不能直接发送到数据存储,但可以发送到过程。
  7. 为了清晰起见,数据流不应相交。

数据流图组成部分

DFD 由以下四个主要部分组成

  1. 外部实体
  2. 进程
  3. 数据存储
  4. 数据流
Data Flow Diagrams

外部实体

这些是 DFD 中数据流的起点和终点。外部实体位于 DFD 的边界上,以表示数据进入和退出整个系统或过程。一个人、一个组或一个系统都可以被视为外部实体。例如,在模拟购买过程并获取销售收据的 DFD 中,客户可以是一个外部实体。终止符、参与者、源和汇是外部实体的其他名称。

进程

改变或转换数据的活动称为过程。这些操作可能包括计算、排序、验证、重定向以及任何使该部分数据流向前推进所需的其他更改。例如,在客户购买 DFD 过程中发生的一个过程是信用卡支付验证。

数据存储

在 DFD 中,数据被保留以供将来使用。数据存储可以代表数据库、文档、文件或任何其他类型的数据存储库。产品库存数据库、客户地址数据库和交货时间表电子表格是产品履行 DFD 中存储的一些数据示例。

数据流

信息在外部实体、过程和数据存储之间移动的路径称为数据流。例如,在电子商务 DFD 中,数据流会将用户输入的登录信息与身份验证网关链接起来。

物理 DFD 与逻辑 DFD 的区别是什么?

逻辑 DFD 使用相当抽象的语言来描述逻辑信息流。这意味着它们将提供广泛的系统、过程和活动,但不会提供关于技术的细节。物理 DFD 显示更多物理信息流的细节,特别是与数据库、应用程序和信息系统相关的细节。此外,它们通常包含附加功能,以更准确地说明信息流、对数据进行的或与数据一起进行的活动以及涉及这些活动的资源。

DFD 有多种逻辑和物理解释。直线型组织和企业架构师经常使用逻辑 DFD,而对物理 DFD 的细节描述较少。另一方面,开发团队比逻辑 DFD 更倾向于使用物理 DFD。

DFD 中使用了哪些约定和符号?

DFD 中使用的概念和符号因使用的方法模型而异。尽管不推荐,但某些组已经开发了自己的约定。

Data Flow Diagrams

各种 DFD 约定包括以下内容

  • Sarson 和 Gane
  • DeMarco 和 Yourdon
  • SSADM
  • DFDs 可以使用 UML,UML 通常用于映射软件架构。

每个 DFD 概念代表以下内容

  • 外部方:数据进入或离开正在描述的系统。
  • 流动:描述数据进入、离开和在正在描述的系统内部的流动。
  • 存储:数据被保留或存储的位置,通常是数据库或数据库表。
  • 过程:转换数据。

各种 DFD 方法使用不同的符号约定。由于显著的差异和不同的符号规则,不熟悉某个方法的技术人员可能会发现理解 DFD 存在困难。

例如,在 Gane 和 Sarson 约定中,过程带有圆角,而实体是方形盒子。在 Yourdon 和 DeMarco 技术中,过程是圆圈,而实体是方形。Gane 和 Sarson 约定在 SSADM 方法中几乎是颠倒的。在 De Marco 和 Yourdon 中,存储显示为平行线,而其他所有方法都使用不同的表示法。这就是为什么公司选择并坚持一种方法和符号至关重要的原因。

DFD 有哪些层和级别?

在 DFD 中,级别或层用于表示系统或过程信息的不断增加的级别。这些级别包括以下内容

  • 0 级:最高级别,也称为上下文图,提供正在显示的系统的简单、高层视图。
  • 1 级:尽管包含更多信息和子过程,但这仍然是系统的相当通用的视图。
  • 2 级:根据需要继续分解子过程,并提供更深入的细节。
  • 3 级:尽管此详细程度很少见,但它对于表示复杂的系统可能很有用。

尽管理论上可能存在更多层,但它们很少使用,并且可能表示比数据流图通常显示的更多细节。

如何创建数据流图?

以下是创建 DFD 的过程的简单摘要,尽管它可能因使用的程序而异

步骤 1:选择要绘制图表的系统或过程。

步骤 2:在选择相关利益相关者后,将它们分组为外部实体、流动、过程和存储。

步骤 3:使用简单的连接来描绘 0 级上下文图。

步骤 4:创建更复杂的 1 级图,其中包含来自上下文图过程的分支的链接流、存储、额外过程和外部实体。

步骤 5:根据需要并以所需的详细程度重复此操作。

步骤 6:在每个级别上定期审查图表至关重要,以确保没有遗漏或多余的过程或流。

DFD 有哪些类型?

关于单一方法的文档或课程是 DFD 的最佳示例。当在没有方法框架的情况下审查示例 DFD 时,理解其结构和视觉效果可能会很困难。与显示软件流程或软件架构的流程图或 UML 不同,大多数 DFD 示例显示的是业务或功能视角的过程。

下面提供了一个使用 Gane 和 Sarson 技术说明学校烹饪课程的示例。

有哪些工具可以创建 DFD?

尽管 DFD 可以手工绘制,但这在临时讨论之外很少这样做。图形或演示工具,特别是那些允许开发自定义符号的工具,可用于生成 DFD。然而,此类工具通常需要选择固定的页面大小,这对大多数 DFD 用户来说受到限制。

大多数 DFD 是使用专门的 DFD 工具创建的,这些工具有时会与特定方法相关的其他功能结合使用。有许多工具,包括开源和专有的。DFD 也可以使用云托管技术创建。选择一种与要使用的方法相辅相成的工具至关重要,因为其中许多工具与特定方法相关。组织应考虑使用标准工具,因为不同工具之间的导入和导出功能可能受到限制。

以下是一些 DFD 工具的示例

  1. Canva
  2. ConceptDraw
  3. Creately
  4. Lucid Software Inc 的 Lucidchart
  5. Miro
  6. SmartDraw
  7. Venngage
  8. Visual Paradigm
  9. Edraw 的 EdrawMax

DFD 的优点

DFD 提供以下优点

  1. 更清晰的图像:DFD 提供了对系统或过程中数据流的可理解的可视化描述。
  2. 提高理解力:DFD 对数据在过程中发生情况的可视化描述鼓励对过程有更好的理解,并可能激发发现。
  3. 更好的数据资源之间的连接:DFD 格式使得理解和管理数据存储资源识别、批处理和实时操作及其相互连接更加容易。
  4. 故障排除:DFD 对过程的可视化解释简化了查找数据流中可能的瓶颈或其他问题。
  5. 改进的记录:系统或过程中数据流的可视化表示有助于与他人沟通。

下一个主题数据字典