[英]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 。 保持简单愚蠢。
许多关系在这里显然是不正确的。 但是,我认为该图的主要问题不是正确地使用包含和扩展,而是针对复杂且总体上不清楚的关系。 尽管从理论上讲是有效的,但您应避免使用这些关系中的多个层次。
您的图表确实很难遵循和解释。
一些重构思路和更正:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.