gpt4 book ai didi

architecture - 在 UML 组件图中重用子组件

转载 作者:行者123 更新时间:2023-12-01 23:39:08 25 4
gpt4 key购买 nike

简而言之:目前我在 Sparx Enterprise Architect 中执行大量白盒建模。但是,我想知道 EA 不允许我两次添加子组件。是 UML 建模问题还是工具问题?

插图:为了解释我的主题,让我们假设我们要为一间公寓建模。公寓由房间组成,即浴室和客厅。两种房间都包括一扇门。门基本上是相同的 - 相同的制造商,相同的产品。

目标:房间的门要相等。因此,我们不应该单独对它们建模,而应该重复使用单个门组件(从我的角度来看)。下图显示了我的设置:

enter image description here

现在,我想创建组件图。我想要实现的目标如下所示。你会猜想我不可能得到想要的模型。相反,红色组件存在问题。

enter image description here

问题:对于组件图,我总是选择将组件作为链接插入到 Sparx Enterprise Architect 中。当我第二次尝试粘贴门(子)组件时,我收到了以下反馈:

enter image description here

注意:根据我的经验,我知道来自 Sparx Enterprise Architect 的错误消息通常表示某些建模错误。我在互联网上阅读了很多书,甚至还买了一本关于该主题的详尽无遗的 UML 书。不幸的是,在这两个来源中,我都无法找到解决我的建模问题的方法。解决此问题的唯一方法是将门组件作为实例而不是链接插入到组件图中,或者深复制门组件。然而,这两种选择都感觉不自然,我觉得它们会在进一步的建模过程中导致后续问题。

最佳答案

您显示的图表是打包 元素的符号。包装没有语义。您可以在模型浏览器和图表中将元素移动到任何您想要的位置。它只会帮助您保持模型井然有序。为此目的,每个元素只能包含在一个包装元素中是有意义的。因此,不可能在两个房间都展示门。

据我了解,您想要建模,浴室和客厅都有一个部分,即门类型。为此,UML 使用复合结构图。它允许显示组件和类的内部结构。 component House在此示例中,复合结构图显示在 House 组件的一个隔间中,该组件显示在组件图中。如您所见,房屋的子组件也可以显示其内部零件。这适用于任何级别的嵌套。当然,如果图太大,也可以使用专用的复合结构图,只展示一个组件的内部结构。

现在,有些人将所有带冒号的东西都称为“实例”。在某种程度上,他们是对的。 every 结构图的语义是它告诉我们允许的实例是什么——而这实际上并不依赖于冒号。只有在这里,图表告诉我们一些关于实例是其他实例的一部分的信息:Door 的两个实例是 Bathroom 和 Living Room 的一个实例的一部分,而后者又是 House 的一个实例的一部分。建模者选择不显示房屋属于哪种类型的实例。它可以是城市,城市可以是州的一部分,州可以是国家的一部分,等等。这实际上取决于图表的重点(以及模型的目的)。显示的图表只说明了 House 的所有实例,无论它是什么的一部分。因此,顶层没有冒号。

我没有使用 Enterprise Architect 对此进行建模。然而,由于这种表示法完全在 UML 规范的范围内,因此应该是可行的。

我假设您在谈论软件组件。如果您在谈论物理房间,您应该考虑使用 SysML,它提供了更多的可能性来模拟事物的内部结构。

关于architecture - 在 UML 组件图中重用子组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65156122/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com