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

正确指定主要/次要参与者(UML用例图),uml,use-case,use-case-diagram,Uml,Use Case,Use Case Diagram,考虑以下情况: 我有一个网络服务,提供有关网上商店订单的信息。在另一台机器上,有一个windows服务,它每小时从Web服务检索一次订单,并将数据写入数据库。使用windows服务代替计划任务,因为它提供tcp端点,因此客户端可以手动(使用简单的桌面应用程序)命令服务检索特定顺序的数据 我不确定必须将windows服务放置在何处。它是在给定时间间隔内调用webservice的主要参与者,但它是对客户端命令作出反应的次要参与者 我应该如何为这个场景创建用例图? 答案取决于你认为是什么系统。< /P

考虑以下情况:

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

我不确定必须将windows服务放置在何处。它是在给定时间间隔内调用webservice的主要参与者,但它是对客户端命令作出反应的次要参与者


我应该如何为这个场景创建用例图?

答案取决于你认为是什么系统。< /P> 一个系统 如果您的系统同时包含webservice和windows服务作为(多层)系统的一部分,则两者都不是参与者。windows服务提供的功能将是一个(或多个,取决于服务的复杂性)用例。如果您假设webservice可能会成为第二个用例,它包含在windows服务中(这种情况很少见,但在这里可以使用)

这些零件单独加工的事实并不能改变任何事情。数据库是单独的机器,但没有一个合理地认为它与系统本身是分开的。 两制 如果您将windows服务视为一个单独的系统,那么实际上您将有两个用例图,每个系统一个

在这种情况下,windows服务的用例图将客户机作为主要参与者,包含Web服务的系统作为次要参与者

在使用webservice的系统的用例图中,您的主要参与者将是windows服务系统(同样作为一个整体,而不是服务本身)。在这个图中,根本没有描述客户机,因为它不与系统交互

组件作为一个系统

即使您将Windows服务和WebService都视为单个系统,您仍然可以描述组件的用例而不是整个系统。在这种情况下,aproach将类似于两个系统的情况。

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

感谢您的精彩解释。我没有考虑我的实际系统是什么。我将按照您在第一段中的描述将其作为一个系统来实现。