关联的多重性会随着时间的推移而变化吗?

问题描述 投票:0回答:3

我对UML有一个要求:关联的重数可以根据时间而变化。我对此有一些看法,例如,使用列表来存储多重性历史记录,一旦多重性发生变化就创建新的关联。但似乎都不是好的选择。那么有人可以给我一些建议吗?非常感谢。

uml associations multiplicity
3个回答
2
投票

有两种情况需要考虑:多重性的变化可能作为软件系统(不可预见和不可设计的)演化的一部分而发生,或者如果它是已知的(例如周五的 2..5,以及 1.. 3 剩余时间)并成为要设计和构建的系统要求的一部分。

如果多重性的变化是软件系统(不可预见的)演化的一部分,那么你就无法为其进行设计,因此,你只能在它发生时将其容纳在你的系统模型中。软件系统的演变本质上是由于其需求的演变。但是,当您对系统进行建模时,您只有当前的需求作为制作具有类、关联和多重性的信息模型的基础。需求的演变意味着信息模型的相应演变,包括关联的多样性。因此,随着时间的推移,您将获得描述/定义系统的模型的历史序列。

如果在设计时已知多重性的时间变化,那么在模型中捕获这种变化的唯一方法是使用允许变化的最小多重性约束(例如,1..5)并描述变化(在简单英语)位于附加到相关关联端的约束框中。


1
投票

嗯,这很简单:只需为关联分配重数即可。如果未指定下限和上限,则为

0..*
。如果您至少有例如1 将会是
1..*
。上限也是如此(将
*
替换为应有的值)。

如何实现完全取决于编码人员。您只需在 UML 中指定约束即可。例如。如果您有多个

0..*
,编码器可能会选择可变长度数组/集合。如果是
1..2
,最终可能会以
name1
name2
作为单个变量。


0
投票

多重性是模型中表达的约束。 UML 只知道固定的多重性,因为这些将在系统构建时实现。

如果您现在已经知道多重性可能会发生变化,并且您希望您的系统能够应对它,则意味着:

  • 你的模型必须预见尽可能广泛的多重性(所有可能的最小值中的最小值,以及所有可能的最大值中的最大值,在最坏的情况下为 0..*)
  • 您的实现必须允许在运行时定义在给定时刻强制执行的约束。例如,您可以使用具有最小值和最大值以及日期间隔的 MultiplicityConstraint 类,该类将用于验证创建、修改或删除的对象。

当多重性发生变化时,你还必须考虑处理不一致的情况。这可能是您实施过程中最具挑战性的。例如,如果动态多重性为 3..10,并且约束更改为 5..7,您将如何处理仅具有 3 个或已经有 8 个链接实例的实例?

© www.soinside.com 2019 - 2024. All rights reserved.