我开始学习 UML 并且有一个关于 Actor 泛化的问题:

想象一下,我正在为 College 的某种应用程序编写用例图。我已经确定有两个 Actor ;学生和老师。

现在,简而言之,让我们说要求相当简单(对我的问题并不重要):

  • 学生可以搜索类(class)
  • 学生可以注册一个类(class)
  • 学生可以提交论文
  • 学生可以支付他的类(class)费用
  • 教师可以给论文评分
  • 学生可以就他的一门类(class)联系老师(电子邮件类型消息,但都在系统内管理)
  • 老师可以联系他的一门课的所有学生(同样全部由系统处理)。

  • 一切都很好。

    我卡住的地方是这样的:
  • 学生有用户名和密码,必须登录才能使用
    系统
  • 教师有用户名和密码,必须登录才能使用
    系统
  • 学生可以通过在线门户重置密码
  • 教师可以通过在线门户
  • 重置密码

    所以我的问题是...
    如何最好地处理系统的常见用例?

    一方面,我可以看到学生和教师都是特殊类型的用户,用户角色与常见用例相关联(因此用户有用户名和密码并且必须登录,用户可以通过以下方式重置密码在线门户等)。

    另一方面,让教师和学生拥有相同的 super Actor (正确的术语?)似乎有点奇怪,因为他们似乎是系统的两个截然不同的用户。因此,我不应该与两个参与者(学生和教师)保持联系,并简单地将学生与常见用例和教师与常见用例关联起来?

    这两种方法我都试过了。正如我所提到的,由于教师和学生非常不同,用户泛化方法感觉不好,但是对于不同的 Actor 有几个相同的用例似乎有点未优化(或多余,或者只是在纸上看起来很有趣!)。

    对此有正确或错误的答案,还是只是取决于偏好?

    最佳答案

    Actor 泛化最重要的用途之一是“分解出常见的 Actor 行为”。

    做到这一点的最好方法是使用户角色抽象。这样,您就不必担心它的细节以及老师和学生的差异如此之大。 “明智地使用抽象参与者可以简化您的图表并提高可读性”。

    所以我说 与泛化相结合,但让父角色抽象 。虽然不这样做完全没有错,正如你所说:没有错或对。

    引用来自 UML 2 and the Unified Process - 第 5.2 节 - Actor 概括。

    关于UML 用例模型 : Actor Generalization,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/15463438/

    10-11 17:58