1

我开始学习UML,我有点困惑。我有以下用例图:

音量控制用例图

我问这个是因为我想正确地绘制我的图表,以便任何具有正确 UML 知识的人都能理解,而不仅仅是以我理解的方式绘制图表。

现在,我在这里使用用例泛化的原因就是原因;

在阅读了 UML 2 和统一流程一书的 5.3 节之后,我认为我正在尝试做的是用例泛化,特别是在查看了第 100 页中的示例之后。这个示例显示了一个名为FindProduct的用例,如第 101 页中所述的是一个抽象用例

我们读到

FindBook 用例更加具体。它专门处理更抽象的父类来处理特定类型的产品,书籍。如果父用例没有事件流或事件流不完整,则它是一个抽象用例。抽象用例非常普遍,因为您可以使用它们来捕获最高抽象级别的行为。因为抽象用例有缺失或不完整的事件流,它们永远无法被系统执行

这就是我试图在我的图表中表示的内容。我有一个抽象用例打开,这个用例永远不会按原样执行。它需要孩子,或者在这种情况下,需要孩子来专门化它,因为系统将通过 IR 或 KNOB 打开,而永远不会只是打开,这是抽象的。

所以这里的事情是我不确定多重概括,如果这样做是正确的。或者我应该更改例如使用 IR开启和使用 KNOB 开启的用例,以使用 IR开启和使用 KNOW 开启用例,并使这些成为Turn ON的子项,并添加使用 IR关闭和使用 KNOB 关闭用例和使这些成为Turn OFF的孩子,等等?

谢谢!!

4

1 回答 1

0

关于你的问题:我见过的最常见的方法是每个用例都有一个活动图。

关于您的用例图的几点:

1-我从未在用例图中看到过多种专业化。您可能需要重新考虑这一点。当用例 A(子)专门化用例 B(父)时,它继承了所有前置条件、后置条件、主要流程和备选流程步骤。我可以猜到,对于您的父用例,此功能并不相同(例如调高音量并打开);因此,至少可以说,多重专业化在这里没有意义。

2- 应避免用例泛化,除非它为您的模型增加了真正的价值。它不是很直观,会使您的图表模糊。

3- 这个用例图似乎倾向于将用例视为类,将泛化视为继承;这是不正确的。

4-您可能还想重新考虑用例的粒度级别;使用 IR/Knob 打开和使用 IR/Knob 关闭可能都集成在一个合理大小的用例中,并带有一些替代流程。但这是您作为需求工程师做出的选择,任何人都可能以不同的方式做这件事。

我建议您查看UML 2 的第 5.3 节和关于用例泛化的统一流程书。

建议:

假设您想保留单独的打开和关闭用例,并专注于一个用例(打开):

1- 如果使用 IR 打开的步骤与使用旋钮打开的步骤完全不同,请将打开用例抽象化,不要为其编写任何规范(文本)或绘制任何活动图。然后专门使用两个用例,称为用旋钮打开和用 IR 打开,它们具体具有单独的规格和/或活动图。

2-如果用IR打开的步骤与用旋钮打开的步骤几乎相同,除了用户选择IR或Knob的一步;您可以使用替代流程。在这种情况下,您只能拥有一个带有一个规范和/或一个活动图的用例。

对其他三个用例执行相同的操作。

于 2013-02-15T02:24:34.460 回答