UML组件图中子系统和附加组合组件的区别

Posted

技术标签:

【中文标题】UML组件图中子系统和附加组合组件的区别【英文标题】:the difference between sub-system and additive composition component in UML component diagram 【发布时间】:2022-01-19 03:06:17 【问题描述】:

我试图理解这两个概念之间的区别:

对于子系统,我找到了一个网站:https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-component-diagram/

添加剂成分,在本网站:https://cpentalk.com/618/illustrate-composition-hierarchical-composition-composition

人们说

OnlineStore 子系统示例中,因为OrderSystem 组件正在调用Catalogue 组件。如果它是一种添加剂组合物,里面的所有成分都应该是独立的吗?

我可以说我上面的例子是加法合成,因为profilebank_account 是独立的吗?我基本上使用一些glueCode 将它们的接口组合在一起,因此没有组件依赖。您认为这是添加剂成分的一个很好的例子吗?

【问题讨论】:

人们说是十字架的意义所在。 UML 中没有术语additive composition。所以人们定义了它,它可能意味着它的意思。 【参考方案1】:

子系统和组件

UML 将子系统定义为系统的子部分:

大型系统的层次分解单元。子系统通常是间接实例化的。子系统的定义在领域和方法之间差异很大,预计领域和方法配置文件将专门用于此构造。

UML 将组件定义为系统/子系统的自治子部分:

组件始终可以被视为系统或子系统中的自治单元。 (...) 组件是一个自包含的单元 (...) 组件是一个可替换的单元,可以在设计时或运行时由提供等效功能的组件替换其接口的兼容性。

子系统本身就是一个组件。所以子系统和组件代表了同一种现实。这只是措辞上的细微差别:subsystem 主要用于将较大的系统分解为较小的部分,而 component 通常用于将较小的部分组装为更复杂的部分。因此,不同的术语只是表明更大系统中不同级别的分解/规模。

UML 中的组件组合

有多种方法可以组合组件来组装更复杂的组件。 UML 在这方面没有定义任何东西。您对加法合成的定义似乎对应于并列:这两个组件保持不相关并向外部世界提供服务,就好像它们是单独的组件一样。

不幸的是,您的图表在这方面是模棱两可的:我们不确定胶水是否只是转发行为,或者它是否转换或组合了它。我们甚至不知道它是否是同一个接口,因为接口有不同的名称(同名的方法可能纯属巧合)。

因此,您最好通过端口和委托连接器向外界提供原始接口(例如here):

【讨论】:

我同意大部分答案。但是,图中有一个问题。 UML 2.5.1 说:“[...] 简单端口(具有单个必需或提供的接口的端口)[...]。连接简单端口时,组装或委托的正常连接器符号可能显示为已连接连接到球或插座符号,而不是连接到端口符号本身。” 由于您有一个复杂的端口并且子组件没有端口,因此您必须直接连接到子组件。此外,子组件必须是零件,在这种情况下,它们的名称前面会有一个冒号。 @AxelScheithauer 感谢这篇评论。像这样更好? 是的,这样更好。除了上边界的港口。它并不简单,所以它不应该有以图形方式连接到棒棒糖的连接器。但是,我认为在这种情况下,没有歧义,因为这些是委托连接器,而相反的端口很简单。不过,根据规则,它在形式上并不正确。

以上是关于UML组件图中子系统和附加组合组件的区别的主要内容,如果未能解决你的问题,请参考以下文章

Python设计模式 - UML - 组件图(Component Diagram)

C - UML组件图中有哪些接口

powerdesigner画UML组件图初步

UML建模中构件图和部署图的差别?

求自动售货机的uml组件图和部署图

UML笔记 - 活动图