如何在UML序列图中包括条件?


13

我喜欢画一个UML序列图来显示系统不同部分的动作和交互的顺序(我认为它们称为参与者)。

但是,我需要在if then else此处添加语句。我做错什么了吗?我可以在UML序列图中使用条件if语句吗?怎么样?

Answers:


18

与许多类型的UML图一样,您可以使用防护来表示条件。保护是一个布尔表达式,您可以在过渡中编写该表达式。

这是带有示例的图片: 在此处输入图片说明

注意“ [pastDueBalance = 0]”条件。

您还可以将组合的片段用于更复杂的条件逻辑。有关更多信息,请参见这篇不错的msdn文章


4

我知道(随着功率的增加)有四种可能性:

  1. 最简单的方法就是使用guards,它们是简单的,无副作用的布尔表达式。
  2. 使用组合的片段(请参见第54页),您可以将消息集组合在一起以在顺序图中显示条件流(替代方案,选项,循环)
  3. 对象约束语言(OCL)更加强大,它可以附加地量化(对于所有存在而言),并提供成熟的(DesignBy-)合同语言(几乎与完整的一阶逻辑一样具有表现力)。
  4. 最强大的方式是表达使用您的约束UML语言的行动可执行UML(XUML)一个符合UML动作语义。

我的选择将是最无力的选择,对于您想做的事情仍然可以充分表达。例如,4.中的动作可能会产生副作用,这使其比OCL更加脆弱。


2

虽然顺序图非常适合您的描述,但请务必检查“活动图”。

当您想显示内部详细信息(包括详细规则)时,您想使用活动图。普通的活动图着重于活动和规则的顺序,并且在显示Actor职责方面表现不佳,不过,您可以使用泳道突出显示各个Actor的职责。每个通道都将包含演员负责的活动。

这些链接讨论带泳道的活动图:

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.