included/extended 用例可以由另一个参与者发起吗?

Can the included/extended use-case be initiated by another actor?

您好,我想让接待员和经理能够查看工作类型和费率并随后进行更新。但是技术人员只能查看不能更新。该图有效吗?

我读到扩展用例是由发起基本用例的参与者发起的。我应该如何区分技术人员只能启动基本案例而不能启动扩展案例?我不应该放置扩展关联吗?包含的用例呢?

抱歉,如果之前有人问过这个问题。

我会通过包含更改扩展。要更新作品,您必须查看它。必看。

在你的图中,Manager 和 Receptionnist 是等价的,只有这个 schema,你只能定义一个 actor。或者Manager继承自Receptionnist的模型。

并且为了避免错误,如果您这样做,您必须确保接待员和经理也可以在没有更新的情况下激活视图用例。否则必须删除一些关联。

我会这样建模:

ManagerReceptionist 在此上下文中具有相同的角色,这就是我使用概括的原因。在不知道域的情况下这似乎没问题,但这只是一个提议。

<<extend>> 受到 {not allowed for actor Tech} 的约束,这显然将此参与者排除在进入此(可选)用例之外。

没有必要也将 ReceptionistUpdate... 相关联,因为它是 View... 的扩展,除非您希望能够 Update 而不是 [=18] =]先.

N.B。关于 <<include>>/<<extend>>:它们并不意味着链接用例。 UML 规范指出(第 638 页):

Extend is intended to be used when there is some additional behavior that should be added, possibly conditionally, to the behavior defined in one or more UseCases.

The Include relationship is intended to be used when there are common parts of the behavior of two or more UseCases. This common part is then extracted to a separate UseCase, to be included by all the base UseCases having this part in common.

现在 <<include>> 看起来像个混蛋。用例是关于一个独特的附加值。如果在多个用例中出现行为重复,那么这种独特性就会受到质疑。无论如何,这些关系通常只是作为功能分解。那将是完全错误的。从我的观点来看,如果没有这些关系,UML 规范会更好。

在上图的上下文中,它代表了一种模式,您可以在其中查看某些内容,然后才能使其可编辑。在 <<extend>> 中放置一个约束告诉 { can only be reached after View... }.

的两个单独的气泡将是完美的

您既不应该“包含”也不应该“扩展”

查看工作类型和费率编辑工作类型和费率是完全有效的独立用例。

一般来说,将用例链接在一起并不是一个好主意,因为您通常一个接一个地执行。 您不应尝试使用用例对活动序列进行建模。为此使用您的业务流程分析。

您可以使用post- 和前置条件来约束用例的执行。事实上,您的 Edit 用例并不需要特别执行 View 用例,对吗?它可能只需要选择一种工作类型。因此它可以在任何具有post条件表明选择了工作类型的用例之后立即执行。

哪个用例执行该操作与编辑用例无关,只要在用例开始之前选择工作类型即可。可能有 10 个不同的用例导致选择一个工作类型。

我认为 «extend» 是完全错误的。扩展用例通常是 incomplete 用例,将它们的行为插入到 complete 用例中是在扩展用例中定义的特定扩展点。中的扩展用例对扩展用例没有任何了解,不需要或使用此行为的结果。

我发现“扩展”用例适用的少数情况是监控用例。例如,监控系统中打开的工单数量并在超过特定阈值时向管理员发送警报的用例。

如果您仍然坚持将用例链接在一起,例如如果您真的意味着您只能在执行用例后编辑费率查看工作类型和费率 我会反过来做。包括用例 查看工作类型和费率 来自用例 编辑工作类型和费率,可能作为第一步。

这两种解决方案(单独的用例,或包括从编辑到查看)都​​解决了您关于不同用户权利的问题,因为现在毫无疑问谁可以做什么。