Uml 如何在活动图中对无条件决策建模?

Uml 如何在活动图中对无条件决策建模?,uml,activity-diagram,Uml,Activity Diagram,例如,用户可以在工具中执行动作A、动作B或动作C。无论他们选择A、B还是C,这些动作的顺序以及重复的次数取决于用户,他们选择A、B或C的原因以及为什么选择特定顺序尚不清楚。此外,任何操作都可以在用户完成另一个操作后再次重复 编辑:一个更具体的例子是创建图像。用户可以绘制形状、选择新形状、选择新颜色并保存图像。在绘制时,这4个动作可以以任意顺序和任意数量交错执行,仅由用户的突发奇想引导。 还可以选择从头开始创建新图像或编辑现有图像以创建新图像。好吧,您只需离开防护: 现在这条路可以走任何路。然而

例如,用户可以在工具中执行动作A、动作B或动作C。无论他们选择A、B还是C,这些动作的顺序以及重复的次数取决于用户,他们选择A、B或C的原因以及为什么选择特定顺序尚不清楚。此外,任何操作都可以在用户完成另一个操作后再次重复

编辑:一个更具体的例子是创建图像。用户可以绘制形状、选择新形状、选择新颜色并保存图像。在绘制时,这4个动作可以以任意顺序和任意数量交错执行,仅由用户的突发奇想引导。
还可以选择从头开始创建新图像或编辑现有图像以创建新图像。

好吧,您只需离开防护:

现在这条路可以走任何路。然而,既然有选择,那就是用户采取行动并选择他喜欢的路径


编辑稍微考虑一下“自然”控制流似乎很明显,在ConditionalNode之前,您会发现一个动作,如
提供选择
(例如,在OP的具体示例中:“绘制”、“选择形状”、“选择颜色”等)。因此ConditionalNode的结果是用户选择的结果之一,而用户选择的结果应该具有适当的保护。因此,以上只是一个示意图,可以认为是不完整的。然而,向读者展示这幅素描会让他感到“啊哈”,或者问我想了一会儿后想到的问题。不管怎样,在ConditionalNode之后只会有一条路径。

好吧,您只需离开防护:

现在这条路可以走任何路。然而,既然有选择,那就是用户采取行动并选择他喜欢的路径


编辑稍微考虑一下“自然”控制流似乎很明显,在ConditionalNode之前,您会发现一个动作,如
提供选择
(例如,在OP的具体示例中:“绘制”、“选择形状”、“选择颜色”等)。因此ConditionalNode的结果是用户选择的结果之一,而用户选择的结果应该具有适当的保护。因此,以上只是一个示意图,可以认为是不完整的。然而,向读者展示这幅素描会让他感到“啊哈”,或者问我想了一会儿后想到的问题。不管怎样,ConditionalNode之后只会有一条路径。

当使用任何符号对任何事物建模时,记住创建模型的目的以及谁将使用它是很重要的

如果您只是省略了圆弧上的防护,那么模型就没有描述系统行为的信息。它不能指导其他开发人员创建软件,它不会记录设计者的意图

用户在系统边界之外,因此要执行什么操作的决定权在别处。系统行为应建模为其状态、输入或事件的条件——这些是系统可以操作的内容,也是开发人员希望在UML模型中找到的指导他们的内容

所使用的确切UML构造将取决于如何跨系统边界传达该选择-活动图可能不是传达该选择的最佳方式,或者您可能会对每个交互使用多个图


正在建模的软件不会做出无条件的选择,模型中的信息应该反映出足够的细节,以便下一个查看它的人使用。

当使用任何符号对任何东西建模时,记住创建模型的目的以及谁将使用它是很重要的

如果您只是省略了圆弧上的防护,那么模型就没有描述系统行为的信息。它不能指导其他开发人员创建软件,它不会记录设计者的意图

用户在系统边界之外,因此要执行什么操作的决定权在别处。系统行为应建模为其状态、输入或事件的条件——这些是系统可以操作的内容,也是开发人员希望在UML模型中找到的指导他们的内容

所使用的确切UML构造将取决于如何跨系统边界传达该选择-活动图可能不是传达该选择的最佳方式,或者您可能会对每个交互使用多个图

正在建模的软件不会做出无条件的选择,模型中的信息应该反映出足够的细节,以便下一个查看它的人使用。

通常情况下,循环节点可以帮助您解决问题。如果标志isTestedFirst,则循环节点是while do循环。 然而,这不是活动图中最简单的节点。 它有三个部分:设置部分、每次迭代测试的测试部分和主体部分。 也许从sparx文档中提取的此图像可以帮助您: 希望这些帮助,也许其他人可以提供更多细节。

通常情况下,循环节点可以帮助您解决问题。如果标志isTestedFirst,则循环节点是while do循环。 然而,这不是活动图中最简单的节点。 它有三个部分:设置部分、每次迭代测试的测试部分和主体部分。 也许从sparx文档中提取的此图像可以帮助您:
希望这些帮助,也许其他人可以提供更多详细信息。

非常简单的问题解决方案如下

如果您不希望您的活动有不确定的行为,请不要忽略“决策后防护”节点。决策节点向具有真正保护的第一个流提供一个令牌,而保护的评估顺序没有定义<