31

回到黑暗时代(1980 年代中期),我大量使用了结构化分析中的数据流图,发现它们非常有用。

我现在的雇主喜欢 UML。我通常使用 BOUML,它不做非 UML 绘图。

数据流图对应的UML图是什么?

如果没有,推荐用什么 UML 图来呈现相应的数据?

4

8 回答 8

24

可能最接近的是活动图。不太一样;比dfd受流程图的影响更大。但是:您可以在 DFD 中做一些有用的事情,例如 AD 确实支持并发并区分控制流和数据流。

有关此问题中比较和差异的更多详细信息。

[fwiw,我仍然使用 DFD:它们在许多情况下更简单、更优雅]

hth。

于 2011-10-10T17:59:01.770 回答
10

UML 2 对数据流图有一个很好的模拟:“信息流图”。

信息流程图在这里解释: https ://web.archive.org/web/20121118061853/http://www.uml-diagrams.org/information-flow-diagrams.html

请注意,UML 2.5 具有信息流和信息项,但术语“信息流图”不是官方 UML 2.5 图表分类的一部分。因此,正式地,您只需创建一个包含大量信息流的类或组件图,即可获得您的“信息流图”。我一直这样做,使用 UML 的信息项来表示我的数据。

于 2017-06-23T07:02:16.803 回答
4

OOD 中没有等效模型。DFD 的重点是与函数分离的数据。这在以程序方式处理时最有帮助。DFD 的规模比 OOD 好得多,如果您尝试使用 OOD 向外扩展(到世界观),您最终会使用用例图,这对于捕捉本质很有用。我喜欢 DFD,它们非常高级,但可以通过打开 DFD 盒子并将其称为 1 级等来扩展。

我目前正在学习 Go 编程语言,它不使用任何对象,在某些方面我觉得 DFD 建模更适合它。

我也在寻找可以完成此类工作的图表。在 Go 中,结构被大量使用,它们是基本数据类型。您可以附加一个类似于 OO 的原始扩展方法,但实际上,如果您查看汇编代码,它似乎是函数的语法糖,其第一个参数是您希望函数对其进行操作的结构。

我的建议是,如果您正在编写 OO 代码,请使用 OOD。他们更好地映射,并有助于思考一个系统。您需要一段时间才能摆脱程序代码,特别是如果您来自 80 年代/90 年代的编程。一旦您进入考虑对象的区域,OOD 方法就可以正常工作。它不是严格意义上的方法论,因为对于您使用的部分没有直接的答案,只是在我认为最难的部分中思考对象。关于这方面的一本好书是“对象思维——大卫韦斯特”……它有助于首先考虑对象。一旦你开始很难停止,你甚至可能会喜欢一些人最终被困在名词王国,这是一个可怕的地方,因为你编写了无穷无尽的样板代码,只是为了完美地描述系统。

如果您使用允许过程代码甚至混合 OO/Procedural 的语言进行编码,则需要在开始编码之前确定您的范式,例如在 Python 和 Object Pascal (Delphi) 中,您可以采用 OO 或过程的路径编码将代码混合成一堆范式。这将决定应该使用哪些图表工具,以及您将如何分析系统。

最近,Java 和 c# 发生了转变,以提供函数式编程技术。我发现的这些不属于任何一种编程类别(OO 或程序)。试图将函数式编程代码映射到一个对象是一场噩梦。

很抱歉,我没有提供答案,但这取决于您正在编写的代码。

于 2013-05-15T15:53:02.223 回答
3

没有直接的类比,因为 UML 强调 OO 设计,而 DFD 来自结构化系统分析和设计 (SSAD)。在 UML 中,许多图,特别是带有交互图组的图,具有可能对数据流和处理的元素进行建模的特征。通信图通常可用于反映 DFD 的大多数方面,而序列图可以对特定的流程序列进行建模。如果您想建议 DFD 语义,那么您可以将原型对象用于数据处理和数据存储,并将参与者用于外部实体。

值得注意的是,Sparx Systems Enterprise Architect 主要是一个 UML 工具,其中包含 DFD 作为扩展。

于 2011-10-11T14:23:11.967 回答
2

类似的图表将是:

  1. 信息流程图
  2. 通讯图
  3. 序列图
于 2018-08-07T20:57:48.487 回答
0

理论上,新的图表种类可以在 UML 中定义,可选地扩展一种或多种传统图表种类。UML 中定义的规范图类型本质上定义为 UML 元模型本身的一部分。

形式上,对象管理组 (OMG) 发布的UML 规范中提供了 UML 元模型的定义,以及 MOF 定义的相应元元模型——其中也有相应的规范——此外,还伴随着正式的OCL 规范,关于 UML 中 OCL 语言应用程序中 UML 模型中约束的定义 - 然后是XMI 规范,关于如何以机器可读格式存储 UML 模型的规范。

从表面上看,所有这些规范都可以组合起来用于应用,就像在任何单个 UML 建模框架的“幕后”一样——无论是在 UML 元模型的 Ecore 子集的应用程序中,还是在规范的 UML 中。

回顾关于数据流图的简短学术报告——尽管在某种程度上偏离了 UML 图类型的正式定义,但仍然在 MOF 元元模型(可能是规范的BPMN元模型)在其传统的图形抽象语法中的应用的更广泛背景下-也许 BPMN 可以用来提供类似于数据流图的东西?

当然,建模实践可能因供应商和应用程序环境而异。

于 2016-04-30T09:00:08.280 回答
0

我将数据流图视为序列图,数据生产者和数据消费者通过同步和/或异步消息创建、使用和销毁数据对象。

于 2017-09-11T14:51:50.517 回答
0

我使用 Enterprise Architect 'Dynamic View' 分析图。
控制 = 流程
信息 = 数据存储
在许多方面,他们的分析图比数据流图要好得多,因为您还可以以发送和接收的形式显示事件,并且还有一个流程符号,但我更喜欢控制。它包括对象和决定。

于 2020-03-03T08:55:17.760 回答