UML中的用户组聚合关系

UML中的用户组聚合关系,uml,aggregation,Uml,Aggregation,如果一个用户可以是多个组的一部分,并且一个组可以包含多个用户,那么在UML中,这种关系必须表示为聚合关系?或者我们可以只使用简单的关联?在大多数情况下,关联就足够了。您很可能会在任意一端添加多重性,以显示用户(应该)至少在一个组中,或者可以在多个组中(当然这取决于域),因此您将看到一个1..*多重性。反之亦然,组将有0..*用户 您可以使用聚合(组侧的空心菱形)来显示一个组是由多个用户组成的。使用组合通常(在用户管理上下文中)没有意义,因为这意味着只有当有属于它的用户时,一个组才能组成 无论如何

如果一个用户可以是多个组的一部分,并且一个组可以包含多个用户,那么在UML中,这种关系必须表示为聚合关系?或者我们可以只使用简单的关联?

在大多数情况下,关联就足够了。您很可能会在任意一端添加多重性,以显示用户(应该)至少在一个组中,或者可以在多个组中(当然这取决于域),因此您将看到一个
1..*
多重性。反之亦然,组将有
0..*
用户

您可以使用
聚合
(组侧的空心菱形)来显示一个组是由多个用户组成的。使用组合通常(在用户管理上下文中)没有意义,因为这意味着只有当有属于它的用户时,一个组才能组成


无论如何,在用户管理上下文中,我不会使用聚合。原因是用户和组都是几乎相同级别(YMMV)的概念,而使用聚合将告诉读者聚合元素的级别比聚合元素的级别低。

在这种情况下,很明显,“复合”不是选项,因此可能是“共享”或“无”。OMG规范对共享的定义如下:

“共享聚合的精确语义因应用程序区域和建模者而异。”

所以你可以从任何一种选择中选择。如果您想在UML图中表示这一点,,,,,

(“1..*”可能是正确的多重数..)

我的答案基于UML规范2.4.1-[7.3.2 AggregationKind]

AggregationKind是以下文字值的枚举:

指示属性没有聚合

共享

指示属性具有共享聚合

综合

指示属性以复合方式聚合,即复合对象负责组合对象(部件)的存在和存储

语义变化点

共享聚合的精确语义因应用程序区域和建模者而异

未定义创建零件实例的顺序和方式