我只想确定我是否正确使用了扩展和包含。如果我在这里的某个地方使用不正确,请指出在哪里,如果可能的话,为什么它不正确。
https://imageshack.com/scaled/large/163/nlnk.jpg
干杯。
我只想确定我是否正确使用了扩展和包含。如果我在这里的某个地方使用不正确,请指出在哪里,如果可能的话,为什么它不正确。
https://imageshack.com/scaled/large/163/nlnk.jpg
干杯。
<<include>>
和的使用规则<<extend>>
很简单:
<<include>>
定义了一个子用例,它总是包含在一般用例中:用例子 -include-->
用例。通常它用于表示用例的不同部分或可以被其他用例重用的公共部分。
<<extend>>
定义了一个可以在特定条件下执行的可选子用例(应该在较低级别的设计中定义,而不是在用例图中)。这里关系的方向与关系相反<<include>>
:用例子 <--extend-
用例。
将这些规则应用于您的图表并确定它是否正确。
许多关系在这里显然是不正确的。然而,我认为这张图的主要问题不是正确使用包含和扩展,而是复杂和整体不清楚的关系。尽管在情景上是有效的,但您应该避免使用多于一层的这些关系。
你的图表真的很难理解和解释。
一些重构思路和更正:
在我试图区分用例图中使用扩展和意图之间的区别之前,我发现了这条建议。我希望它也能帮助你。最初的建议来自这个 StackOverflow 答案。
扩展和包含之间的区别
当一个用例有条件地将步骤添加到另一个第一类用例时,使用扩展。例如,假设“提取现金”是 ATM 机的一个用例。“Assess Fee”将扩展 Withdraw Cash 并描述当 ATM 用户不在 ATM 所属机构银行时实例化的条件“扩展点”。请注意,基本的“提取现金”用例独立存在,没有扩展。
包含用于提取在多个用例中重复的用例片段。包含的用例不能独立存在,没有包含的用例是不完整的。只有在重复很重要并且设计存在(而不是巧合)的情况下,才应谨慎使用。例如,在每个 ATM 用例开始时发生的事件流(当用户放入他们的 ATM 卡、输入他们的 PIN 并显示主菜单时)将是包含的一个很好的候选者。
此外,从我读过的每一本书中,总是建议使用 include 和谨慎地扩展。保持简单愚蠢。
看起来好像需要在您链接的其他活动之前执行“安全登录” <<include>>
。包含意味着该用例每次也运行包含的用例,在这种情况下,这可能不是您想要的(每个会话只有一次登录)。您始终可以创建新的刻板印象,例如<<precedes>> or <<requires>>
. 始终如一地使用它们将使您能够传达您的意思。