我创建的UML用例图。我对include / extend的使用是否正确?

时间:2013-06-25 19:08:32

标签: uml use-case

我只是想确定我是否正在使用extend并正确包含。如果我在这里使用不正确的地方,请指出在哪里,如果可能,为什么不正确。

https://imageshack.com/scaled/large/163/nlnk.jpg

干杯。

4 个答案:

答案 0 :(得分:1)

使用<<include>><<extend>>的规则很简单:

  • <<include>>定义了一般用例中包含始终的子用例:用例 -include--> 子用例。通常它用于表示用例或公共部分的不同部分,可以被其他用例重用。

  • <<extend>>定义了一个可选子用例,可以在某些条件下执行(应该在较低级别的设计中定义,而不是在用例图中) 。这里关系的方向与<<include>>关系相反:用例 <--extend- 子用例

将这些规则应用于您的图表,并确定它是否正确。

答案 1 :(得分:0)

在您与<<include>>链接的其他活动之前,似乎需要执行“安全登录”。 Include意味着用例每次都运行包含的用例,在这种情况下可能不是你想要的(每个会话只登录一次)。您始终可以创建新的构造型,例如<<precedes>> or <<requires>>。持续使用它们可以让您传达您的意思。

答案 2 :(得分:0)

在我尝试区分使用扩展和用例图中的意图之间的区别之前,我发现了这条建议。我希望它也可以帮到你。最初的建议来自this StackOverflow answer

  

扩展和包含

之间的区别      当用例有条件地将步骤添加到另一个用例时,使用

Extend   一流的用例。例如,想象“Withdraw Cash”是一种用途   ATM机的情况。 “评估费”将延长提取现金和   描述在实例化时的条件“扩展点”   ATM用户不在ATM的所有者机构银行。请注意   基本的“提取现金”用例独立,没有   扩展

     

Include用于提取重复的用例片段   多个用例。包含的用例不能单独和   没有附带的原始用例是不完整的。这个   只有在重复的情况下才应谨慎使用   重要的和存在的设计(而不是巧合)。对于   例如,在每个ATM开始时发生的事件流   用例(当用户放入他们的ATM卡,输入他们的PIN,和   显示主菜单)是一个很好的候选人。

此外,从我读过的每本书中,始终建议使用包含和谨慎扩展。保持简单愚蠢。

答案 3 :(得分:0)

这里的许多关系显然都不正确。但是,我认为这个图的主要问题不是正确使用包含和扩展,而是复杂和整体不明确的关系。虽然在课程上有效,但您应该避免使用这些关系中的多个级别。

你的图表很难理解和解释。

一些重构想法和更正:

  • 单独显示“安全登录”类,仅与Actor链接,然后对“包含”它的所有用例应用以下前提条件:“用户安全登录”
  • “5分钟后退出”应该是自己的用例,只有连接到Actor,有2个前提条件:“用户安全登录”和“用户5分钟无效”
  • 删除“5分钟后退出”和“发起呼叫”之间的包含。延伸可能更合适
  • 改变“转移资金......”和“确保足够资金......”之间的包含方向 - 显然第一个包括第二个而不是反之亦然
  • 考虑在仅仅相关的UC的2个或更多简单和小图中打破图:例如,所有登录/注销都可以单独显示并简化视图。在一个图表中,您不应该有超过5-7个用例