在 UML 中指示 类 到二进制工件的分布的正确方法是什么?
What is the correct way to indicate distribution of classes to binary artifacts in UML?
我试图用 UML 显示 plugin-/component-based 系统的整体架构。作为这个问题的一个简单示例,我将展示一个加载插件接口库(定义插件的通用接口)的主应用程序,以及两个示例性插件(其中一个带有一些内部细节),如下所示以下 UML class 图1:
在我的 UML 图中,我想强调这些 classes(和接口)是如何分布到单独的二进制文件2,以阐明什么无需重新编译即可替换部分系统。
现在,虽然我知道 UML 提供了相当大的回旋余地,并且 UML 的要点不是坚持严格的符号,而是以一种易于理解的方式表达信息,但我仍然希望有一个通用的做法对于这种情况。
表示我想到的信息的一种直接方法是使用 UML component diagram. Wikipedia cites 定义
a modular part of a system, that encapsulates its content and whose manifestation is replaceable within its environment.
对于一个组件。这似乎很合适,因为我想展示的正是一个可更换的组件。因此,通过将上述类型放入组件中,我得到了:
虽然这是可以理解的,但我有点怀疑这是可以接受的表示法,因为我能找到的关于组件图的几乎所有资源(包括 aforementioned Wikipedia article)都非常强调定义所需的和提供的接口。从形式上讲,看起来我应该在图中各处添加小矩形端口或棒棒糖形接口,其中关系连接组件之间的元素。我不太喜欢这种前景,因为实现起来听起来有些麻烦,更重要的是,如果不提供任何附加信息,它会使图形变得混乱。
或者,package might be an acceptable notation. My purpose seems to match with what Wikipedia 在相应文章的第二个列表中描述为
When organizing component models, use packages to group the components according to ownership and/or reuse possibilities.
包图如下所示:
另一方面,我有点担心使用包符号可能会与实际的代码内包(名称空间)混淆,这些包实际上与程序集 正交 。事实上,there are resources 将 UML 包解释为 1:1 映射到 Java 包,这不是我想要传达的(为了论证,所有描述的类型都可能很好驻留在完全相同的命名空间中,类似于 MyGreatSystem.Plugins
).
唯一可能有点合适的其他 UML 图类型可能是这样的图中的 deployment diagram, but definitions such as the one from Wikipedia make it rather clear that a node 要么是物理机器,要么是执行环境,两者都明显不同于简单地处于单独的二进制文件。
我能想到的最后一个替代方法是通过使用 UML 注释连接类型来指示二进制文件:
但是,这对我来说似乎更像是一种解决方法,我觉得额外的节点和边缘(而不是在程序集中 内部 类型,它们实际所在的位置)使图表 更少 可读。
传达最终产品中哪些类型驻留在哪些二进制文件中的适当 UML 方法是什么?
1: 这里没有显示classes和接口的成员,因为它们暂时不相关。这在我的最终图表中可能相同也可能不同,因为重点主要不在于完整的内部 class 结构。
2:在我的例子中是 .NET 程序集,但这个问题对其他 environments/technologies.
同样有效
我对你的第一个图和使用包的图都很满意。组件可以很好地包含元素(根据 UML 规范,它由 PackageableElements
组成)。为了便于阅读,我会放大 Core Application
以便钻石完全位于内部。第三种选择就是:另一种选择。我更喜欢第一个。
您应该区分组件和它们所在的二进制文件"manifested"。
组件 是逻辑 行为分组。实际的 物理 二进制程序集在 UML 中表示为一个清单 Artifact.
最密集的符号可以在第 221 页图 11.40 的 UML 规范 v 2.5(测试版)中找到
确保在组件和其他元素之间使用正确的关系。
也可以使用一些替代符号。来自相同的 UML 2.5 规范:
我试图用 UML 显示 plugin-/component-based 系统的整体架构。作为这个问题的一个简单示例,我将展示一个加载插件接口库(定义插件的通用接口)的主应用程序,以及两个示例性插件(其中一个带有一些内部细节),如下所示以下 UML class 图1:
在我的 UML 图中,我想强调这些 classes(和接口)是如何分布到单独的二进制文件2,以阐明什么无需重新编译即可替换部分系统。
现在,虽然我知道 UML 提供了相当大的回旋余地,并且 UML 的要点不是坚持严格的符号,而是以一种易于理解的方式表达信息,但我仍然希望有一个通用的做法对于这种情况。
表示我想到的信息的一种直接方法是使用 UML component diagram. Wikipedia cites 定义
a modular part of a system, that encapsulates its content and whose manifestation is replaceable within its environment.
对于一个组件。这似乎很合适,因为我想展示的正是一个可更换的组件。因此,通过将上述类型放入组件中,我得到了:
虽然这是可以理解的,但我有点怀疑这是可以接受的表示法,因为我能找到的关于组件图的几乎所有资源(包括 aforementioned Wikipedia article)都非常强调定义所需的和提供的接口。从形式上讲,看起来我应该在图中各处添加小矩形端口或棒棒糖形接口,其中关系连接组件之间的元素。我不太喜欢这种前景,因为实现起来听起来有些麻烦,更重要的是,如果不提供任何附加信息,它会使图形变得混乱。
或者,package might be an acceptable notation. My purpose seems to match with what Wikipedia 在相应文章的第二个列表中描述为
When organizing component models, use packages to group the components according to ownership and/or reuse possibilities.
包图如下所示:
另一方面,我有点担心使用包符号可能会与实际的代码内包(名称空间)混淆,这些包实际上与程序集 正交 。事实上,there are resources 将 UML 包解释为 1:1 映射到 Java 包,这不是我想要传达的(为了论证,所有描述的类型都可能很好驻留在完全相同的命名空间中,类似于 MyGreatSystem.Plugins
).
唯一可能有点合适的其他 UML 图类型可能是这样的图中的 deployment diagram, but definitions such as the one from Wikipedia make it rather clear that a node 要么是物理机器,要么是执行环境,两者都明显不同于简单地处于单独的二进制文件。
我能想到的最后一个替代方法是通过使用 UML 注释连接类型来指示二进制文件:
但是,这对我来说似乎更像是一种解决方法,我觉得额外的节点和边缘(而不是在程序集中 内部 类型,它们实际所在的位置)使图表 更少 可读。
传达最终产品中哪些类型驻留在哪些二进制文件中的适当 UML 方法是什么?
1: 这里没有显示classes和接口的成员,因为它们暂时不相关。这在我的最终图表中可能相同也可能不同,因为重点主要不在于完整的内部 class 结构。
2:在我的例子中是 .NET 程序集,但这个问题对其他 environments/technologies.
同样有效我对你的第一个图和使用包的图都很满意。组件可以很好地包含元素(根据 UML 规范,它由 PackageableElements
组成)。为了便于阅读,我会放大 Core Application
以便钻石完全位于内部。第三种选择就是:另一种选择。我更喜欢第一个。
您应该区分组件和它们所在的二进制文件"manifested"。
组件 是逻辑 行为分组。实际的 物理 二进制程序集在 UML 中表示为一个清单 Artifact.
最密集的符号可以在第 221 页图 11.40 的 UML 规范 v 2.5(测试版)中找到
确保在组件和其他元素之间使用正确的关系。
也可以使用一些替代符号。来自相同的 UML 2.5 规范: