正确指定主要/次要参与者(UML用例图)

时间:2019-05-21 13:44:33

标签: uml use-case use-case-diagram

请考虑以下情况:

我有一个Web服务,提供有关在线商店中订单的信息。在另一台机器上,有一个Windows服务,该服务每小时从Web服务检索一次订单,并将数据写入数据库。 Windows服务代替了计划任务,而是使用Windows服务,因为它提供了tcp终结点,因此客户端可以手动(使用简单的桌面应用程序)命令该服务检索特定顺序的数据。

我不确定必须在哪里放置Windows服务。它是在给定的时间间隔内调用Web服务的主要角色,但它是对客户端命令做出反应的次要角色。

在这种情况下,我应该如何继续创建用例图?

2 个答案:

答案 0 :(得分:6)

答案取决于您对系统的看法。

一个系统

如果您的系统同时包含Web服务和Windows服务作为(多层)系统的一部分,则actor都不是。 Windows服务提供的功能将是一种(或更多,取决于服务的复杂性)用例。如果您认为该Web服务可能会成为Windows服务中包含的第二个用例(一种罕见的情况,但在这里可用)。

这些零件在单独的机器上加工的事实并不能改变任何事情。常见的做法是数据库具有独立的计算机,但没有人合理地认为它与系统本身是独立的。

两个系统

如果将Windows服务视为一个单独的系统,则实际上将有两个用例图,每个系统用例图。

在这种情况下,Windows服务的用例图将以客户端为主要参与者,而包含Web服务的系统为次要参与者。

在具有webservice的系统的用例图中,您的主要参与者将是Windows服务系统(作为一个整体,而不是服务本身)。在此图中,根本没有显示客户端,因为它不与系统交互。

组件作为系统

即使您将Windows服务和Web服务都视为一个系统,您仍可能会描述组件的用例,而不是整个系统。在这种情况下,方法将类似于两个系统的情况。

答案 1 :(得分:3)

除了@Ister所说的以外:绘制一个代表正在考虑的系统的边界。现在考虑内部是什么(用例冒泡)和外部是什么(参与者)。对于后者,约定将主要演员放在左边,将次要演员放在右边。通常认为主要参与者是启动工作流程的参与者,而次要参与者则在任何此类工作流程的过程中被触发/通知。