繁体   English   中英

我创建的UML用例图。 我对include / extend的用法正确吗?

[英]UML Use Case diagram I created. Is my usage of include/extend correct?

我只想确定我是否正在使用扩展和正确包含。 如果我在此处某处使用不正确,请指出错误的位置以及可能的原因。

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

干杯。

使用<<include>><<extend>>很简单:

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

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

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

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

在尝试区分使用扩展和用例图之间的区别之前,我会找到这条建议。希望对您有所帮助。 原始建议来自此StackOverflow答案

扩展和包含之间的区别

当用例有条件地将步骤添加到另一个一流用例时,将使用Extend。 例如,假设“取现”是ATM机的用例。 “评估费”将扩展“提取现金”并描述有条件的“扩展点”,该条件在ATM用户未在ATM拥有机构开户时实例化。 请注意,基本的“提取现金”用例独立存在,没有扩展名。

Include用于提取在多个用例中重复的用例片段。 附带的用例不能单独存在,没有附带的原始用例是不完整的。 仅当重复很重要并且是通过设计(而非巧合)存在时,才应谨慎使用此选项。 例如,在每个ATM用例开始时发生的事件流(当用户放入他们的ATM卡,输入其PIN并显示主菜单时)将是一个不错的选择。

另外,从我读过的每本书中,总是建议尽量使用include和extension 保持简单愚蠢。

许多关系在这里显然是不正确的。 但是,我认为该图的主要问题不是正确地使用包含和扩展,而是针对复杂且总体上不清楚的关系。 尽管从理论上讲是有效的,但您应避免使用这些关系中的多个层次。

您的图表确实很难遵循和解释。

一些重构思路和更正:

  • 单独显示“安全登录”类,仅与Actor链接,然后对“包含”该类的所有用例应用以下先决条件:“用户已安全登录”
  • “ 5分钟后注销”应该是自己的用例,并且也仅连接到Actor,并具有两个先决条件:“用户已安全登录”和“用户5分钟未激活”
  • 删除“ 5分钟后注销”和“发起呼叫”之间的包含。 扩展可能更合适
  • 颠倒“转移资金...”和“确保足够的资金...”之间的包含的方向-很明显,第一个包含第二个,而不是相反
  • 考虑将图表分解为仅相关UC的2个或更多个简单图表:例如,所有登录/注销可以单独显示并简化视图。 在一张图中,您的用例不应超过5-7个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM