首页 > 解决方案 > 具有两个不同前端的用例图

问题描述

我正在尝试使用两个不同的前端应用程序对用例图进行建模。我有一个基于 Web 的前端,其用例与我的平板电脑应用程序前端不同。某些用例可能具有相同的名称但场景不同。

我的问题是,在图中为每个前端使用两个系统块是否是一种好方法,还是应该将所有用例组合在一个系统块中?如何以 UML 正确和清晰的方式对其进行建模?

标签: umlmodelingdiagramuse-case-diagram

解决方案


UML 用例及其边界

设置正确的边界是成功用例建模的关键。根据 UML 2.5.1 规范:

UseCase 是一种 BehavioredClassifier,它表示一组提供的行为的声明。每个 UseCase 指定主体可以与一个或多个 Actor 协作执行的一些行为。用例定义主题的提供行为,而不参考其内部结构

重要的是系统(即用例中的“主体”)、参与者以及主体向其参与者提供的行为(正如QwertySO提醒我们的那样,它们应该为用户提供价值,即帮助达到用户的目的)。

用例关注用户

从您的用户的角度来看,预期的功能独立于前端。根据您的评论,今天:

Web 前端的目标是具有用例的参与者管理员:创建产品。另一方面,平板电脑前端的目标用户是购买产品,但不是为管理员设计的。

但是明天,您的管理员可能想要使用 PC 或智能手机来执行紧急任务。也许一些普通用户会期待语音界面而不是平板电脑。用例将帮助我们专注于这些需求,而不是我们将要解决它们的方式。

因此,原则上,您应该独立于前端对用例进行建模。您不应该显示前端和后端之间的拆分。

如何分解系统

用例并不意味着进行功能或结构分解。这种区分最好在将系统分解为组件的组件图中以及将组件映射到服务器和设备的部署图中进行。

如果您已经考虑了组件分解,并且您的组件是独立的,那么您可以考虑对子系统或组件的用例进行建模。这是有效的,因为 UML 规范告诉我们:

UseCase 的主题可以是系统或任何其他可能具有行为的元素,例如组件或类。每个 UseCase 指定一个主题提供给其用户的有用功能单元您甚至可以为组件建模用例,参与者是外部参与者,其他参与者

但这会有帮助吗?您可以为管理应用程序提供一个用例图,其中包含管理员参与者和后端的系统参与者。但我不建议朝这个方向发展,除非该应用程序是具有自身附加值的丰富应用程序。如果应用程序只是一个前端,那么您最终会得到非常冗余的用例图(即前端 UC 和后端 UC 将显示相同的用例)而失去端到端与真实参与者的关系(即后端 UC 将与对应于前端应用程序的系统参与者相关联,但您会失去与真实参与者的直接链接)。

最终你可能会失去 UC 的主要优势,即对用户及其目标的关注。作为交换,您有责任让所有冗余模型保持同步,但我看不到这里的优势。如果你想对每个备选方案有更多的争论,你也可以看看这里


推荐阅读