Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/147.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Uml 什么';用例图中包含和扩展的区别是什么?_Uml_Use Case_Rational Unified Process - Fatal编程技术网

Uml 什么';用例图中包含和扩展的区别是什么?

Uml 什么';用例图中包含和扩展的区别是什么?,uml,use-case,rational-unified-process,Uml,Use Case,Rational Unified Process,对于具有身份验证、最坏情况或可选的用例,请选择扩展 示例:用于申请入学、预约、机票预订的用例 您必须填写表格(登记表或反馈表)…这就是包含的地方 示例:对于验证登录或登录帐户的用例,您的身份验证是必须的。还要考虑最坏的情况。如罚款还书..未获得预订..在到期日后支付账单..这就是extend发挥作用的地方 不要在图表中过度使用include和extend 保持简单愚蠢 图表元素 演员:也称为角色。参与者的名称和原型可以在其属性选项卡中更改 继承:演员之间的关系。这种关系可能会带来不安

之间的区别是什么?

当一个用例向另一个一流用例添加步骤时,使用扩展

例如,假设“取款”是自动取款机(ATM)的一个用例。“评估费”将扩展提款现金,并描述ATM用户不在ATM所属机构开户时实例化的有条件“扩展点”。请注意,基本的“提取现金”用例是独立的,没有扩展

Include用于提取在多个用例中重复的用例片段。包含的用例不能独立存在,没有包含的用例,原始用例就不完整。这一点应谨慎使用,且仅在重复非常重要且是设计造成的(而非巧合)情况下使用


例如,在每个ATM用例开始时发生的事件流(当用户放入他们的ATM卡,输入他们的PIN,并显示在主菜单中时)将是一个很好的包含候选项。

这可能有争议,但“包含总是,扩展有时是”这是一个非常普遍的误解,现在几乎已经成为事实意义。这是一个正确的方法(在我看来,并对照雅各布森、福勒、拉门和其他10个参考文献进行了检查)

关系是依赖关系 包含和扩展用例关系的关键是要认识到,与UML的其余部分一样,用例之间的虚线箭头是一种依赖关系。我将使用术语“基本”、“包含”和“扩展”来指代用例角色

包括 基本用例取决于所包含的用例;如果没有它/它们,基本用例是不完整的,因为包含的用例表示交互的子序列,这些子序列可能总是或有时发生。(这与流行的误解相反,您的用例所建议的总是发生在主场景中,有时发生在备用流中,这完全取决于您选择的主场景;用例可以很容易地进行重组,以表示不同的流作为主场景,这不重要)

在单向依赖的最佳实践中,基本用例知道(并引用)包含的用例,但包含的用例不应该“知道”基本用例。这就是为什么包含的用例可以是:a)基本用例本身,b)由许多基本用例共享

延伸 扩展用例依赖于基本用例;它从字面上扩展了基本用例描述的行为。基本用例本身应该是一个功能完整的用例(当然包括在内),而不需要扩展用例的附加功能

扩展用例可用于多种情况:

  • 基本用例表示项目的“必须拥有”功能,而扩展用例表示可选(应该/可以/想要)行为。这就是术语optional的相关之处——无论是构建/交付还是有时作为基本用例序列的一部分运行,都是可选的,而不是可选的
  • 在阶段1中,您可以交付满足当时需求的基本用例,阶段2将添加扩展用例描述的附加功能。这可能包含始终或有时在第2阶段交付后执行的序列(同样与流行的误解相反)
  • 它可以用来提取基本用例的子序列,特别是当它们用自己的可选流表示“异常”复杂行为时

    一个重要的方面是,扩展的用例可以在基本用例流中的几个地方插入行为,而不仅仅是在一个包含用例的单个地方。因此,一个扩展用例不太可能适合扩展多个基本用例

    至于依赖关系,扩展用例依赖于基本用例,并且也是单向依赖关系,即基本用例不需要在序列中引用扩展用例。这并不意味着您不能演示扩展点或在模板中的其他地方向扩展用例添加x-ref,但基本用例必须能够在没有扩展用例的情况下工作

    总结
    我希望我已经证明了“包含总是,扩展有时”的常见误解要么是错误的,要么是过于简单化了。如果你考虑所有关于箭头的方向性的问题,这个版本就更有意义了。在正确的模型中,它只是依赖关系,如果重构用例内容,则不会发生潜在的变化。

    < P>每当有USECASE的先决条件时,转到包含。< /P> 对于具有身份验证、最坏情况或可选的用例,请选择扩展

    示例:用于申请入学、预约、机票预订的用例 您必须填写表格(登记表或反馈表)…这就是包含的地方

    示例:对于验证登录或登录帐户的用例,您的身份验证是必须的。还要考虑最坏的情况。如罚款还书..未获得预订..在到期日后支付账单..这就是extend发挥作用的地方

    不要在图表中过度使用include和extend

    保持简单愚蠢

    图表元素

    • 演员:也称为角色。参与者的名称和原型可以在其属性选项卡中更改

    • 继承:演员之间的关系。这种关系可能会带来不安