【发布时间】:2019-03-19 17:28:02
【问题描述】:
是否有任何限制只能为具有面向对象方法的系统绘制 UML 图?我们可以将它们用于其他方法(例如:程序)吗?
【问题讨论】:
标签: uml
是否有任何限制只能为具有面向对象方法的系统绘制 UML 图?我们可以将它们用于其他方法(例如:程序)吗?
【问题讨论】:
标签: uml
是的,您绝对可以使用 UML 与其他方法进行建模,例如用例图或活动图与 OOP 无关。
another exchange 的 cmets 中的讨论导致我在这里做出另一个答案,因为我认为另一个答案有点短。
实际上,UML 的原作者Booch、Jacobson 和Rumbaugh,在他们的书中(The UML User Guide、The UML Reference Manual)从 OOP 的角度描述了 UML。
OMG 目前从Meta-Object Facility (MOF) 的角度进行语言的演变。在UML 2.5 beta 2 document 范围部分(第 1 页),事情变得微妙。该主题的文字相当模糊。
UML 的初始版本 (UML 1) 起源于三种领先的面向对象方法(Booch、OMT 和 OOSE)
(...)
相对于 UML 1,此版本的 UML 已通过更精确的定义进行了增强 其抽象的语法规则和语义,更加模块化的语言结构,以及极大改进的大型建模能力 规模系统。
(...)
UML 的目标是提供系统 架构师、软件工程师和软件开发人员,以及基于软件的分析、设计和实施工具 系统以及对业务和类似流程进行建模。
(...)
UML 的主要目标之一是通过实现对象可视化建模工具的互操作性来推动行业发展。 但是,为了在工具之间实现有意义的模型信息交换,需要就语义和语法达成一致。
根据章节的不同,是否提到了 OOP。 “模块化语言结构”可能会导致一些元素可以在 OOP 之外使用。
我个人认为 MOF 是与 OOP 的直接链接(请给我任何面向对象平台之外的 MOF 示例)。在我看来,毫无疑问,UML 在基因上与 OOP 紧密相关。
然而,一些 UML 图(state diagram、activity diagram)允许表示软件系统,避免明显依赖于 OOP 特性。这就是为什么可以将 UML 用于任何编程风格的原因,但这并不是 UML 的原始用途。
结论
UML 的目的是 OOP,但您可以将它用于任何您想要的:没有任何法律禁止这样做。
【讨论】:
UML 说“一切都是类”,请参阅 OMG 页面上的 MOF。一些 UML 图有非对象起源(如用例图或活动图),但现在是基于对象/分类器概念的表示法。 OOP 和“分类器系统”不一样......您可以将 UML 用于基于分类器和对象概念的所有模型(参见 SysML,UML 配置文件)。
【讨论】: