用例图:包含的用例是否必须由基本用例触发?

Use case diagram: Does an included use case have to be triggered by the base use case?

如果我有一个演员调用用例,例如“创建缺席”,每次演员创建缺席时,他们都需要到“Search For Employee”使用 includes 对其进行建模是否正确关系?

这是include的所有解释都不清楚的地方,include的用例是必须由base自动触发还是可以用来表示每次创建缺席时用户总是搜索员工。

或者,是否应该将这两者建模为调用的参与者并且它们之间没有包含关系?

标准很明确,来自 formal/2017-12-05 § 18.1.3.3 包括 第 641 页:

Include is a DirectedRelationship between two UseCases, indicating that the behavior of the included UseCase (the addition) is inserted into the behavior of the including UseCase (the includingCase).

All of the behavior of the included UseCase is executed at a single location in the included UseCase before execution of the including UseCase is resumed.

所以 :

  • does the included use case have to be triggered automatically by the base : 是的,即使这样说也不完美,因为包含的 UC 不是 触发的 但它的行为插入

  • can it be used to show that every time an absence is created the user will always search for an employee:不,如果 UC 创建缺勤 包括 UC 搜索员工 那么用户将不是在之后搜索,而是在期间搜索。

  • is it correct to model this using an includes relationship?: 没有那么

  • Alternatively should both of these be modelled as actor invoked and with no includes relationship between them? :是的,请注意您可以在 UC Create Absence 中设置 post 条件,说明演员必须搜索员工

请停止谈论触发调用的用例。用例描述了为特定目的使用系统的情况。触发或调用的只能是系统的功能。用例帮助我们找到这些功能。如果您使用锤子将板条箱钉在一起,则不会在锤子上调用 nail crate together 用例。而是调用 store kinetic Energy 函数、aim hammerhead 函数和 transfer energy to object 函数。通过分析用例,我们发现指甲经常会弯曲,所以我们可能会发现 pull nail 功能很有用。

因此,search for employee 是用例 create absence 所需的函数。很可能其他用例也需要此功能。在不止一个用例中需要许多功能。例如,当你想打开一个箱子时,pull nail 函数就派上用场了。

因此,只有当我找到两个有效用例时,我才会使用 «include»,其中第一个用例的目标包含在第二个目标中。并且仅当包含的用例值得分析时。否则只是参考功能。您已经有一个用例来描述它的需求。

顺便说一句,在用例的上下文中,UML 规范总是谈论 “行为”。请注意,在谈到行为的UML概念时,它会写成"Behavior"大写的“B”。这意味着它在这里更多地用于口语。所以,我不会将关于 «include» 的句子解释为定义它的精确语义。