为什么在创建和删除用例之间没有 include link

Why there is no include link between create and delete use cases

我在 Internet 上看到过许多用例图示例(UML 格式),例如:

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

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

如果有Delete-User - - <<include>> - -> Create-User表示在执行UCDelete-User期间UCCreate-User也被执行了,当然没有意义了。

预期的行为可以是:

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

已经解释了为什么将 Create 包含在 Delete 中不是一个好主意,以及可以使用哪些替代方法来表达您解释的两者之间的关系 use-cases.

但如果有帮助,这里换个角度:

  • use-case 图不表示活动的逻辑顺序。
  • A use-case 仅代表 目标 激励 his/her 与系统 独立 交互的参与者另一个 use-cases 和系统的历史记录。因此,系统管理员可能想要在某个时刻删除 User 的简单事实足以让 use-case Delete 独立存在。
  • include 表示目标可能包括用户感兴趣的其他一些目标。包容性不适用于功能分解,您可以在其中分解需要在所有细节中完成的工作。它也不是为了显示顺序依赖性。所以对于Delete,你不应该包括之前发生的事情,因为happens-before是顺序性的。包含仅突出显示一些对用户有意义的相关 sub-goals 以及用户在瞄准更大目标时始终希望实现的内容。
  • 最后,即使 use-case Create 从未被任何演员表演过,use-case Delete 也可能具有完美的意义,例如,因为:
    • 新系统接管了旧数据库及其所有过去的帐户,系统管理员在新系统中要做的第一件事是 clean-up 在创建新帐户之前已经存在的旧未使用帐户一个。
    • 系统管理员想要 Delete 一个帐户,但仅在交互过程中才发现该帐户不存在、拼写错误或已被删除。这些可能性都是您在相同 use-case.
    • 的叙述中描述的替代流程
    • 或者如果不是 Create use-case 将被预见,因为用户创建将在后台自动完成(例如基于 SSO),根本没有参与者参与。