【问题标题】:How to connect different Use Cases without 'include' or 'extend'?如何在没有“包含”或“扩展”的情况下连接不同的用例?
【发布时间】:2015-11-24 23:02:24
【问题描述】:

我对 UML 和用例图还很陌生,我不确定我是否理解我正确使用了“包含”。另请注意,这是针对课程作业而非实际系统,因此即使以下细节不是一成不变的,它们也不是很灵活。

我有一个演员(客户)填写申请表的场景。此用例称为 TakeMembership。

在客户向系统提供详细信息后,他们将被带到付款处,我开始另一个名为 TakePayment 的用例。在这个用例中,我将外部支付系统作为主要参与者,将客户作为次要参与者。

最后,外部电子邮件系统向用户发送他们的登录详细信息。我已将此用例称为 SendLoginDetails,并将电子邮件系统作为主要参与者,将成员(客户现已变成会员并成为不同的参与者)作为此案例的次要参与者。

现在我的问题是:后两个用例是第一个用例的主要流程的一部分,但是我不知道如何实际连接它们。

我考虑过先使用“扩展”,但后来决定放弃,因为这两个用例也不例外,因为每次使用系统时都会使用它们。

一些同学建议我将它们与“包含”联系起来,但这对我来说也没有意义。我对“包含”的理解是,当两个或多个用例中有共同步骤并且“包含”用例不能独立存在时,应该使用它。

关于“扩展”或“包含”有什么我不知道的吗?

【问题讨论】:

标签: include uml extend use-case


【解决方案1】:

用例不是关于“做 A,然后做 B,最后做 C”,而是展示参与者从系统中获得的附加值。不要尝试功能分解(因此哪个 UC 包含/扩展了其他 UC)。只有极少数情况下这些可能有用(实际上,没有它们我可以过得很好)。人们通常会创建一个实际上只是一个约束的用例(最著名的是:Login)。

一旦确定了附加值,您就可以考虑如何实现它们的方案。这可以通过纯文本描述或使用活动图来完成。

我最好的建议:不要使用包含/扩展并阅读 Bittner/Spence。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 2022-11-22
    • 2013-08-22
    • 1970-01-01
    • 2020-06-09
    • 1970-01-01
    相关资源
    最近更新 更多