我开始学习 UML 并且有一个关于 Actor Generalization 的问题:
想象一下,我正在为 College 的某种应用程序编写用例图。我已经确定有两个演员;学生和老师。
现在,为了简短起见,假设要求相当简单(对我的问题并不重要):
- 学生可以搜索课程
- 学生可以注册课程
- 学生可以提交论文
- 学生可以支付他的课程费用
- 老师可以给论文评分
- 学生可以就他的一堂课联系老师(电子邮件类型的消息,但都在系统内管理)
- 老师可以联系所有学生参加他的一堂课(同样由系统处理)。
一切都很好。
我卡住的地方是:
- 学生有用户名和密码,必须登录才能使用系统
- 教师有用户名和密码,必须登录才能使用系统
- 学生可以通过在线门户重置他的密码
- 老师可以通过在线门户重置他的密码
所以我的问题是......如何最好地处理系统的常见用例?
一方面,我可以看到学生和教师都是特殊类型的用户,并且用户参与者与常见用例相关联(因此用户有用户名和密码并且必须登录,用户可以通过在线门户网站等)。
另一方面,让教师和学生拥有相同的超级演员(正确的术语?)似乎有点奇怪,因为他们似乎是系统的两个非常不同的用户。因此,我是否不应该与两个参与者(学生和教师)保持联系,并简单地将学生与常见用例和教师与常见用例联系起来?
我已经尝试了这两种方法。正如我所提到的,由于教师和学生非常不同,用户泛化方法感觉不太好,但是对于不同的参与者有几个相同的用例似乎有点未优化(或多余的,或者只是在纸上看起来很有趣!)。
对此有正确或错误的答案,还是仅取决于偏好?