在UML中包含或扩展?

在UML中包含或扩展?,uml,Uml,据我所知,扩展关系是当用例是可选的时,而包含关系是当用例的操作需要时(但不是所有时候)。我想为注册系统建模一个用例,但对使用哪种关系产生了疑问,我有两种可能的选择: 我更喜欢(b)表示此操作的方式,因为修改数据和删除数据的部分不应该是可选的,它们用于维护学生的记录(很抱歉,我的图表中出现了打字错误)。尽管一位同事表示,(a)选项更准确地处理这种情况。两者都是正确的吗?如果是这种情况,在什么情况下会发生这种情况? 谢谢当你设计用例时,一个容易陷入的陷阱是“功能分解”,你把一个用例分解成太多的子用

据我所知,扩展关系是当用例是可选的时,而包含关系是当用例的操作需要时(但不是所有时候)。我想为注册系统建模一个用例,但对使用哪种关系产生了疑问,我有两种可能的选择:

我更喜欢(b)表示此操作的方式,因为修改数据和删除数据的部分不应该是可选的,它们用于维护学生的记录(很抱歉,我的图表中出现了打字错误)。尽管一位同事表示,(a)选项更准确地处理这种情况。两者都是正确的吗?如果是这种情况,在什么情况下会发生这种情况?
谢谢

当你设计用例时,一个容易陷入的陷阱是“功能分解”,你把一个用例分解成太多的子用例。这里的一个经典是CRUD操作。虽然“维护记录”是一个合理的用例,但您很少希望将其分解为创建记录、删除记录等。因此,在某种程度上,您关于“包括…”与“扩展…”的问题的答案将是“两者都不是”

有时候,如果一个参与者可以搜索,而只有一个特定的参与者可以创建记录,或者如果删除记录时有一个特别复杂的身份验证步骤,那么您可能需要创建这些单独的用例。在这种情况下,您可能不需要“维护记录”用例,但将分别描述这两个用例

如果您必须同时拥有这两个功能,那么我建议“修改数据”扩展“维护记录”,因为您有时可能会执行它,但并不总是这样

检查此答案:


您可能会发现这里有一个有用的讨论

我想说,最好从图表中删除“记录维护”用例。这听起来像是一组用例。修改数据和删除数据是该组的两个唯一用例