提问人:Christophe 提问时间:8/31/2023 更新时间:8/31/2023 访问量:52
是否应始终与包含用例的行为一起执行包含用例的行为?
Shall the behaviour of an included use-case always be executed with the behavior of the including case?
问:
考虑一个包含 UC2 和 UC3 的用例 UC1。UML 2.5.1 规范在两个用例之间定义:«include»
Include 是两个 UseCase 之间的 DirectedRelationship,指示包含的 UseCase(加法)的行为入到包含的 UseCase(包括 Case)的行为中。
(...)
在恢复执行包含的用例之前,包含的用例的所有行为都会在包含的用例中的单个位置执行。
我理解 UC2 和 UC3 的行为总是与 UC1 一起执行,因为包含定义的肯定措辞意味着系统性并且没有条件的余地(“插入”、“被执行”),而扩展定义明确提到了非强制性的可能性(“可以插入”、“应该添加的行为”、” 可能是有条件的“,另请参阅有关使用CAN和MAY的规范的第5.1节)。
我想知道我的解释是不是太严格了。包含也是如此:
- 这意味着每当执行 UC1 时,UC2 和 UC3 的行为总是被执行,即为参与者或其他利益相关者提供预期的可观察结果?
- 或者,其中一个用例(例如 UC2)的行为是否可能并不总是被执行?为什么这种理解符合规范?
答:
在两种可能的情况下,所包含用例的行为不会被执行:
未满足包含用例中的前提条件
假设 UC1 具有前提条件 User must be authenticate,并且该用户尚未通过身份验证。在这种情况下,UC1 将不会执行。
未到达执行包含的单个位置
规范提到了执行所包含用例的单个位置。现在我们都知道,一个用例不一定遵循单一的步骤序列。尽管 UML 规范中没有明确提及用例场景,但通常有一个主要场景,可能还有一些备用场景和异常场景。
根据具体情况,将无法到达用例中的某些步骤或步骤,可能是因为遵循了备用方案路径,或者可能是因为包含位置位于未遵循此执行的异常路径中。
在这些情况下,我认为完全符合规范,可以说所包含的用例仅在特定条件下执行(即实际达到该执行点)
在此用例 Update Reservation 表示为活动图的场景示例中,我们看到我们只需要在备用场景 Cancel Reservation 中执行用例 Update Inventory
这本可以在 UML 规范中更清楚地表达出来。
评论
Execute
上一个:用例还是参与者的责任?
评论