UML中继承的actor具有不同行为的相同用例

问题描述

我想对以下行为进行建模:当管理员创建博客文章时,与用户创建博客文章时相比,情况有所不同,例如,版主参与创建博客文章用例,因为他验证博客文章。但是,当管理员没有管理员角色时,他的博文也需要经过版主的验证,因为他自己继承了用户的行为。

下面的这个例子可能只有在管理员不想以管理员身份使用系统的情况下才能删除他自己的角色时才有意义。

我希望这是有道理的。

enter image description here

解决方法

尽量简单

您不应该有两次相同的用例名称来表示同一模型中的不同行为。这非常令人困惑。

顺便说一下,UML 规范没有定义多个参与者与同一个用例相关时的确切含义:它可以是多个参与者,每个参与者分别参与用例的不同出现,但也可以是以及每次都必须让所有参与者都参与进来。

因此,我建议保留一个与 Create blogpostUser 相关的 Moderator 用例。您仍然可以保持 AdministratorUser 的特化,并在用例行为的详细描述中使用此特化。

enter image description here

但没有必要更简单

如果您认为这不能充分准确地表达您的情况,您有两种可能性。

  1. 保持单个 Create blogpost 用例仅与更一般的 User 相关联,并将其 «extend» 与仅与 {{ 关联的附加 Moderate blogpost 用例1}}。这是有道理的,因为审核用例是审核者自己的目标,它可以重复使用(例如,也可以是 Moderator 的扩展)。
  2. 由于参与者和用例都是分类器,您可能还会认为用例 Update blogpost 是更通用的 Create unmoderated blogpost 的特化。然而,这需要更精确的重新定义,并且在我看来不如 #1 那样具有表现力。

第一种情况如下:

enter image description here

其他想法

A Create blogpost 原则上也是 Moderator。出于好奇:如果版主创建博文会发生什么:他/她可以自己审核自己的内容吗?或必须四眼原则确保不同的主持人主持这篇文章;-)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...