1

我在互联网上看到了许多用例图(在 UML 中)的示例,如下所示:

在此处输入图像描述

我看到的是delete用例不包括create用例。即使我无法想象在不创建用户的情况下删除它。

我想知道为什么不使用 include 仍然是正确的?我想知道什么时候应该使用它,什么时候不使用它?

4

2 回答 2

4

如果有Delete-User - - <<include>> - -> Create-User这意味着在执行 UC Delete-User期间,UC Create-User也会执行,当然这没有任何意义。

预期的行为可以是:

  • Delete-User具有先决条件Create-User已为同一用户成功执行,并且Delete-User尚未为同一用户成功执行(在最后一个Create-User之后)
  • Delete-User可以在没有先决条件的情况下执行,但如果用户不存在(Create-User未为同一用户成功执行,或者Delete-User在上次创建或用户后已为同一用户执行)这是错误案例
于 2020-08-25T20:14:57.197 回答
3

Bruno 的出色回答Create已经解释了为什么包含在中不是一个好主意Delete,以及可以使用哪些替代方法来表达您在两个用例之间解释的关系。

但如果它有帮助,这里是另一个角度:

  • 用例图并不代表活动的逻辑顺序。
  • 用例仅代表参与者的目标,该目标激发他/她与系统的交互,而与其他用例和系统历史无关。因此,系统管理员可能希望在某个时刻删除 a 的简单事实User足以使用例Delete独立存在。
  • include表明一个目标可能包括用户感兴趣的其他一些目标。包含不适用于功能分解,您将在所有细节中分解需要完成的工作。也不是显示顺序依赖关系。所以对于Delete,你不应该包括之前发生的事情,因为发生之前是顺序性的。包含仅突出一些对用户有意义的相关子目标,并且用户在瞄准更大的目标时总是希望实现这些子目标。
  • 最后,Delete即使该用例Create从未由任何参与者执行,该用例也可能具有完美的意义,例如,因为:
    • 新系统接管了旧数据库及其所有过去的帐户,系统管理员在新系统中要做的第一件事是在创建新帐户之前清理已经存在的旧未使用帐户。
    • 系统管理员想要Delete一个帐户,但仅在交互过程中发现该帐户不存在、拼写错误或已被删除。这些可能性都是您将在同一用例的叙述中描述的替代流程。
    • 或者如果没有Create预见到用例,因为用户创建将在后台自动完成(例如基于 SSO),根本不涉及参与者。
于 2020-08-26T01:02:33.640 回答