4

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

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

现在,为了简短起见,假设要求相当简单(对我的问题并不重要):

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

一切都很好。

我卡住的地方是:

  • 学生有用户名和密码,必须登录才能使用系统
  • 教师有用户名和密码,必须登录才能使用系统
  • 学生可以通过在线门户重置他的密码
  • 老师可以通过在线门户重置他的密码

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

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

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

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

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

4

1 回答 1

4

演员泛化最重要的用途之一是“分解出共同的演员行为”。

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

所以我说要进行概括,但要让父演员抽象。虽然不这样做根本没有错,正如你所说:没有错也没有对。

引用来自UML 2 和统一过程- 第 5.2 节 - 角色泛化。

于 2013-03-17T22:06:42.687 回答