构建这些用例的最佳方式是什么?

What is the best way to structure these use cases?

目前,我已经定义了 3 个不同的用例,它们实际上只是业务流程中的 3 个步骤...

假设我有一个人的名单,所有这些人都有兴趣获得一个或多个有限的资源(比如,他们是音乐会的座位)。

最终,我想自动公平地将这些人分配到可用的座位上。我有几种不同的算法来执行此操作。

我正在记录一个已经存在的系统(追溯),所以即使这个过程有点复杂,我也无法改变它。我要使用的过程如下:

1) 定义一组条件。标准可以是人的属性,也可以是事件的属性。

例如,其中任何一个都可能是 "set" - 罗德斯图尔特音乐会的女性人物 - 麦当娜演唱会的所有人 - "Gold" 人和 "Silver People" 参加所有摇滚音乐会

2) 通过执行以下操作定义一个 "allocation job":给它一个名称,选择一种算法,然后选择一个 "set"(从所有先前定义的集合中)。

3) 启动您在第 2 步中定义的分配作业。它 运行 在后台运行,稍后您可以查看结果。

现在,第 1、2 和 3 步中的任何一步都可以在计算机上一次完成。或者,您可以执行#1,保存它,离开,然后稍后回来执行#2 并保存它。然后第二天你可以做第 3 项。显然 1、2 和 3 之间存在依赖关系,但它们不必一个接一个地立即完成。 #1 和 #2 本身并没有任何商业价值,他们只是坐在那里,直到有人过来做 #3。

从用例的角度来看,我最初将 1 和 2 作为 "includes" 用例,但现在我认为这是错误的,因为我认为 "includes" 应该始终包括在内,每次你运行 用例。一个用例应该始终局限于一个会话。

现在我在想:

做 1 和 2 "extend" 3?

或者,因为 1 和 2 在您执行 #3 之前并没有真正实现任何目标……我是否将它们全部编写为一个用例,使所有 3 个步骤都可选?

或者,它们只是 3 个不同的用例吗? #2 有一个先决条件 "Set" 存在,#3 有一个 "job" 存在?

将它们写成单独的用例。只有明显增加价值的用例对其参与者才有用。我会说所有命名的 UC 都增加了这样的价值并且是独立的。但是,在不知道您的域名的情况下,我无法确定。也许他们形成一个单一的 UC。这个需要详细查看。

Extend/include 在 UML 中是糟糕的设计(意味着 OMG 在这里做得不好)。尝试使用 E/I 几乎总是尝试使用功能分解的标志。但是用例是完全相反的:功能的综合。

如有必要,使用 pre 和 post 条件来控制一个用例是否只能在另一个用例之后执行。