我只想确定我是否使用扩展并正确包含。如果我在这里某处使用了不正确的地方,请说明在哪里,如果可能的话,为什么它不正确。我创建的UML用例图。我使用include/extend是否正确?
https://imageshack.com/scaled/large/163/nlnk.jpg
干杯。
我只想确定我是否使用扩展并正确包含。如果我在这里某处使用了不正确的地方,请说明在哪里,如果可能的话,为什么它不正确。我创建的UML用例图。我使用include/extend是否正确?
https://imageshack.com/scaled/large/163/nlnk.jpg
干杯。
使用规则<<include>>
和<<extend>>
很简单:
<<include>>
限定了子用例是总是包括在一般使用情况下的:用例-include-->
子使用 - 案例。通常它用来表示用例的一个不同部分,或者可以被其他用例重复使用的公共部分。
<<extend>>
限定可选子,可以在一定的条件下(这应该在较低的水平设计来限定,而不是在用例图)来执行的用例。这里关系的方向与<<include>>
关系相反:用例<--extend-
子用例。
将这些规则应用到您的图表并确定它是否正确。
看起来“安全登录”需要在与<<include>>
链接的其他活动之前执行。 Include意味着用例每次都运行包含的用例,在这种情况下可能不是您想要的(每个会话只有一个登录)。您始终可以创建新的刻板印象,例如<<precedes>> or <<requires>>
。一贯地使用它们可以让你表达你的意思。
当我试图区分使用扩展和打算用例图之间的区别之前,我发现这条建议。我希望它也可以帮助你。最初的建议来自this StackOverflow answer。之间
差分延伸,并且包括
扩展时使用一个用例有条件地添加步骤到另一个 第一类的用例。例如,想象一下“Withdraw Cash”是ATM机使用的一种情况。 “评估费”将扩展Withdraw Cash并且 描述当ATM用户没有在ATM所属机构存款时实例化的条件“扩展点”。注意 基本的“Withdraw Cash”用例本身,不带 扩展名。
包含用于提取在多个用例中复制的用例碎片。包含的用例不能单独存在,如果没有包含用例,则原始用例不完整。这个 应该谨慎使用,只有在重复是 显着并且通过设计(而不是巧合)存在的情况下。例如,在每个ATM 使用案例(当用户放入其自动提款卡,输入其PIN,并且 显示为主菜单)开始时发生的事件流将是包括的一个很好的候选者。
此外,从每一本书我读过,它总是建议使用包括和扩展谨慎。保持简单愚蠢。
许多关系在这里显然不正确。然而,我认为这个图的主要问题不是包含和扩展的正确使用,而是复杂和整体不明确的关系。尽管在法律上有效,您应该避免使用这些关系中的多个关卡。
你的图很难跟踪和解释。
一些重构的思路和更正:
谢谢布鲁斯。我决定使用安全登录作为先决条件而不是用例,我认为它使图更易于管理。 – aenergi