正确指定 primary/secondary 个参与者(UML 用例图)
Specify primary/secondary actors properly (UML Use-Case Diagram)
考虑以下情况:
我有一个网络服务,可以提供有关网上商店订单的信息。在另一台机器上有一个 windows 服务,它每小时从网络服务中检索一次订单并将数据写入数据库。使用 windows 服务而不是计划任务,因为它提供了一个 tcp 端点,因此客户端可以手动(使用简单的桌面应用程序)命令该服务检索特定顺序的数据。
我不确定我必须在哪里放置 windows 服务。它是在给定时间间隔内调用 Web 服务的主要参与者,但它是次要参与者,因为它对客户端的命令做出反应。
我应该如何继续为这个场景创建用例图?
答案取决于您认为自己的系统是什么。
一个系统
如果您的系统同时包含网络服务和 windows 服务作为您 (multi-tiered) 系统的一部分,那么两者都不是参与者。 windows 服务提供的功能将是一个(或多个,取决于服务的复杂性)用例。如果您假设 webservice 它可能成为第二个用例,它包含在 windows 服务中(很少见,但在这里有效)。
这些零件是单独加工的这一事实并没有改变任何事情。数据库有它的独立机器是常见的方法,但 no-one 合理地认为它与系统本身是分开的。
两个系统
如果您将 windows 服务视为一个单独的系统,那么您实际上会有两个用例图,每个系统一个。
在这种情况下,windows 服务的用例图将客户端作为主要参与者,系统 包含网络服务作为次要参与者。
在带有 web 服务的系统的用例图中,您的主要参与者将是 windows 服务系统(再次作为一个整体,而不是服务本身)。在此图中,根本没有描绘客户端,因为它不与系统交互。
作为系统的组件
即使您将 windows 服务和 Web 服务视为一个系统,您仍然可以描述组件的用例而不是整个系统。在这种情况下,方法将类似于两个系统的情况。
除了@Ister 所说的:画一个边界代表您正在考虑的系统。现在想想里面有什么(用例气泡)和外面有什么(参与者)。对于后者,惯例是将主要演员放在左边,次要演员放在右边。主要参与者通常被认为是启动工作流程的参与者,而次要参与者在任何此类工作流程的过程中 triggered/informed。
考虑以下情况:
我有一个网络服务,可以提供有关网上商店订单的信息。在另一台机器上有一个 windows 服务,它每小时从网络服务中检索一次订单并将数据写入数据库。使用 windows 服务而不是计划任务,因为它提供了一个 tcp 端点,因此客户端可以手动(使用简单的桌面应用程序)命令该服务检索特定顺序的数据。
我不确定我必须在哪里放置 windows 服务。它是在给定时间间隔内调用 Web 服务的主要参与者,但它是次要参与者,因为它对客户端的命令做出反应。
我应该如何继续为这个场景创建用例图?
答案取决于您认为自己的系统是什么。
一个系统
如果您的系统同时包含网络服务和 windows 服务作为您 (multi-tiered) 系统的一部分,那么两者都不是参与者。 windows 服务提供的功能将是一个(或多个,取决于服务的复杂性)用例。如果您假设 webservice 它可能成为第二个用例,它包含在 windows 服务中(很少见,但在这里有效)。
这些零件是单独加工的这一事实并没有改变任何事情。数据库有它的独立机器是常见的方法,但 no-one 合理地认为它与系统本身是分开的。
两个系统
如果您将 windows 服务视为一个单独的系统,那么您实际上会有两个用例图,每个系统一个。
在这种情况下,windows 服务的用例图将客户端作为主要参与者,系统 包含网络服务作为次要参与者。
在带有 web 服务的系统的用例图中,您的主要参与者将是 windows 服务系统(再次作为一个整体,而不是服务本身)。在此图中,根本没有描绘客户端,因为它不与系统交互。
作为系统的组件
即使您将 windows 服务和 Web 服务视为一个系统,您仍然可以描述组件的用例而不是整个系统。在这种情况下,方法将类似于两个系统的情况。
除了@Ister 所说的:画一个边界代表您正在考虑的系统。现在想想里面有什么(用例气泡)和外面有什么(参与者)。对于后者,惯例是将主要演员放在左边,次要演员放在右边。主要参与者通常被认为是启动工作流程的参与者,而次要参与者在任何此类工作流程的过程中 triggered/informed。