UML用例模型:演员概括

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

4
最重要的演员一般化用途之一是“分解常见演员行为”。最好的方法是将用户演员抽象化。这样,您就不必担心其细节以及教师和学生的差异性。 "明智地使用抽象演员简化了您的图表并提高了可读性"。
所以我建议使用一般化,但使父级演员抽象化。虽然不这样做也没有错,正如您所说:没有对错之分。
引用来自《UML 2和统一过程》 - 第5.2节 - 演员一般化。

非常感谢提供的信息!我想点赞,但是我没有足够的网络积分! - user2179721

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接