【问题标题】:Same use case with different behaviour for inherited actor in UMLUML 中继承的 actor 具有不同行为的相同用例
【发布时间】:2021-04-16 22:11:40
【问题描述】:

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

只有当管理员不想以管理员身份使用系统时,才能删除自己的角色,以下示例才有意义。

我希望这是有道理的。

【问题讨论】:

  • 回答为时已晚,但这只是一个 UC,您在其中有不同的场景,受到启动 UC 的参与者类型的限制。
  • @qwerty_so,现在回答永远不会太晚 ;-) 我见过后来的答案比原来的答案获得更多赞成票的情况。特别是对于一个学习的人来说,展示所有方面是个好主意,所以如果您认为接受的答案不够充分,可以添加自己的答案。
  • @Ister 没有机会与 Christophe 竞争。基本上,他详细说明了我的评论。像往常一样以最佳长度。但是,是的,如果我有不同的意见,我也会在前几天回答;-)

标签: inheritance uml actor use-case


【解决方案1】:

尽量简单

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

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

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

但不是必要的简单

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

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

第一种情况如下:

其他想法

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

【讨论】:

  • 在我的 IMO 中一个更好的选择是有两个不同的用例,但没有 «extends»。我可以想象,创建博文和审核博文是独立的活动,可能发生在完全不同的时间。 Moderate blogpost 可能有一个先决条件,说明存在博文草稿。
  • 我正要写和@Geert一样的东西。扩展意味着您在 UC 中有变体。但这些更多的是两个真正单一的不同 UC。好吧,我知道这可以讨论 ;-) 但无论如何我只是避免扩展,因为它们往往会引入功能分解。
  • @GeertBellekens 确实,我同意。事实上,当我画第二张图时,我开始意识到我的想法被原来的 UC 所偏见(见我的橙色笔记)。就我个人而言,我希望我将这两个 UC 完全分离(即版主每天都会主持一系列待处理的博文,这个目标与博文的创建无关)。尽管如此,我还是决定将提示保留原样,让 OP 选择最终如何最好地表达问题。
  • @qwerty_so 我同意(我对 Geert 的回答中有更多详细信息)
  • 感谢您的回答。我同意,Moderate blogpost 应该是一个不同的用例。我只想在这个例子中展示一个用例的过程与另一个稍有不同 - 很抱歉造成混淆!
猜你喜欢
  • 2012-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多