如何在UML图中显示可重复的活动

如何在UML图中显示可重复的活动,uml,activity-diagram,Uml,Activity Diagram,我正在进行一个项目,并试图在UML活动图中显示一个用例 我想使用它来表明这个特定用例的需求得到了满足 我还想用它来开发需要为此用例编写的测试用例 我已经订购了《UML2.0简而言之》一书,但在这本书出版之前,我正在尽我最大的努力阅读文章和youtube视频剪辑,因此图表可能不符合适当的标准 问题1: 我试着向大家展示ExecuteInThread函数作为一个整体有一个try-catch块来阻止任何异常冒泡并使应用程序崩溃,但我不确定我是否正确地展示了这一点 问题2: 我还想说明的是,将任务状态更

我正在进行一个项目,并试图在UML活动图中显示一个用例

我想使用它来表明这个特定用例的需求得到了满足

我还想用它来开发需要为此用例编写的测试用例

我已经订购了《UML2.0简而言之》一书,但在这本书出版之前,我正在尽我最大的努力阅读文章和youtube视频剪辑,因此图表可能不符合适当的标准


问题1:

我试着向大家展示ExecuteInThread函数作为一个整体有一个try-catch块来阻止任何异常冒泡并使应用程序崩溃,但我不确定我是否正确地展示了这一点

问题2:

我还想说明的是,将任务状态更新为Failed/In Progress/Completed是在数据库上完成的,如果数据库不可用,它会在失败之前重试10次连接

是否有可能在我可以为每个更新活动引用的一侧有一个可重复的块来显示这一点

问题3:

我已经读到,在用例级别,我不应该显示任何实现细节

我猜这意味着完全避免显示涉及的数据库,并且不显示任何try/catch逻辑,除非它影响用户的操作。我在这里做的事情完全错了吗

重试逻辑是这个用例的一个要求,尽管如此,我的第一次尝试是将其包括在内,因为它将有助于编写测试用例和显示应用程序的弹性

图表:


问题1:

异常处理程序可以保护任何操作。这是图表中的之字形线。另一端的操作是处理程序主体。我不能有传入或传出控件或对象流。当异常处理程序完成时,受保护的操作在其传出流上生成令牌,就好像它已正常结束一样。处理程序主体还应具有由异常键入的输入pin。通过这种方式,它可以区分不同的异常,并且受保护的操作可以传递有关问题的信息

结构化活动节点也是操作,可以由异常处理程序进行保护。在您的图表中,我猜
执行线程中的任务
就是这样一个动作。官方符号使用虚线边框和关键字«结构化»

编辑:与@bruno讨论后。 如果您想使用异常,您可能应该重新考虑如何对操作进行分组。如果受保护的操作的异常处理程序体未引发新异常,则该操作将始终成功完成。这意味着主体必须尝试从异常中恢复,并可能重试受保护操作的行为(没有用于重试的UML元素,您必须步行完成)。如果这不起作用,处理程序主体必须重新引发异常(在确保所有内容都处于良好状态后,即类不变量仍然保持不变)

这似乎有点太复杂了。为什么不在动作
executetask
后简单地使用决策节点,并使用警卫[successfull]。我将在用例流中使用ReceiveSignalActions,仅对来自系统外部的交互进行建模,这可能会影响用例流

问题2:

您可以创建一个活动
更新任务状态
,并从所有更新操作中调用它。状态本身可能是此调用操作的值pin。在更新活动中,您可以显示一个循环,其中包含统计试验的决策和合并节点。然而,仅仅写在描述中可能会更容易,因为它可以重复10次

这就是一组可重复操作的建模方法。在同一个图表中不可能做到这一点。但是,我可以展开其中一个调用操作,以便显示被调用的活动。您必须尝试,无论您的工具是否提供这种可能性。有些工具只提供显示嵌入在另一个图中的任何图。这不是标准的,不能在工具之间互换

问题3:

我同意数据库和重试次数是技术细节,不是用例分析的重点

不过,如果系统不只是显示错误消息,而是需要提供其他方法来实现预期结果,这可能会很有趣。例如,系统应提供将更新保存到U盘的功能。由于这需要与用户进行额外的交互,并产生系统的新功能需求,因此在用例中对其进行分析是有意义的。如果这只是一个偶然的技术问题,我就不谈了


如果您需要一种在模型中捕获此需求的方法,我只需要为文本需求添加一个用户定义的扩展。并非所有需求都来自用例。许多工具已经有了自己的扩展。

问题1:

异常处理程序可以保护任何操作。这是图表中的之字形线。另一端的操作是处理程序主体。我不能有传入或传出控件或对象流。当异常处理程序完成时,受保护的操作在其传出流上生成令牌,就好像它已正常结束一样。处理程序主体还应具有由异常键入的输入pin。通过这种方式,它可以区分不同的异常,并且受保护的操作可以传递有关问题的信息

结构化活动节点也是操作,可以由异常处理程序进行保护。在您的图表中,我猜
执行线程中的任务
就是这样一个动作。官方符号使用虚线边框和关键字«结构化»

编辑:与@bruno讨论后。 如果你