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