1

我有一个与系统中的两个参与者相关联的用例。这个用例扩展了另一个用例,但只有一个参与者可以使用扩展的用例。

有什么方法可以表示第一个用例扩展的条件性质吗?或者,我是否需要在用例文档中指定初始用例只能针对一种参与者进行扩展?

谢谢。

4

1 回答 1

2

如果我理解这个问题,听起来你需要两种演员。您(可能)需要通过抽象使一个参与者类型成为泛化。换句话说,你需要创建一个专门的actor来继承更通用的actor的权限。

(请原谅我可怕的 ascii 人和泛化箭头!)

    O                 __________________
   ---               /                  \
    |     -----------|   Use Case 1     |
   / \               |__________________|
                     | extension points |
   User              |   if Super User  |
    ^                \__________________/
   / \                        /\
  /___\                        | <<extend>>
    |                          | (if Super User)
    |                          |
    |                          |
    O                 _________________
   ---               /                 \
    |     -----------|   Use Case 2     |
   / \               \_________________/
 Super User         

然后,这个专门的参与者(超级用户)可以参与这两个用例,但普通用户只能参与第一个(非扩展用例)。

请注意,aSuper User可能会也可能不会直接启动用例二。这取决于用例和问题域是否有意义。

然后,您可能希望在扩展用例中使用扩展点(类似于“超级用户”或“如果超级用户”),从而为扩展用例创建决策点。

是一个更清晰的图表示例。

这也是extension point来自 The UML Reference Manual (2nd Edition) (p358) 的定义:

一个命名标记,用于标识用例的行为序列中的一个位置或一组位置,可以在该位置插入额外的行为。

扩展点名称的名称可以是您想要的任何名称。任何对你有意义的事情。没有语法规则。无论您在图表上放置什么,都应该出现在文本用例描述(即用例的步骤)中的某处。

于 2012-03-01T07:59:17.843 回答