4

这是场景

系统有两个主要用户,SYSTEM USER 和 END USER。最终用户进一步分为两个用户,分别名为 CLIENT USER 和 INTERNET USER,客户端用户与数据库可访问帐户相关联,而 Internet 用户则没有。

所有用户都被划分为不同的ROLES,每个角色都关联着一组可访问的MODULE,不同的模块包含不同的FUNCTIONS,如查看、添加、编辑和删除功能。

不同的角色可能与模块中的不同功能相关联。示例超级管理员角色可以访问并在用户访问模块中添加编辑删除功能,而高级用户只能访问或查看它。

当用户登录时,安全服务将使用用户名和密码对用户进行身份验证。如果它通过了身份验证,它将查找与用户关联的角色并在屏幕上显示授予的模块供用户选择访问。


我创建了一个简单的类图,其中包含每个类的字段或属性,我只是不确定它是否正确,例如实现的连接器或关系、基数和每个类的方法,我只输入了一个类的方法和那是用于登录 (login()) 方法。

在此处输入图像描述

4

2 回答 2

4

我可以看到您的模型有一些问题:

  • 那些实心箭头应该是什么?如果您的意思是继承,那么您必须使用未填充的箭头。
  • LOGIN 也是用户吗?这有点奇怪。我希望 login() 是一个将用户名和密码作为参数的操作,不一定是它自己的类,我可能不会使用属性 UserName 和 Password 对其进行建模。
  • 如果 USER 的所有子类都有用户名和密码。你不认为你应该在 USER 类上定义那些吗?
  • USER 和 END USER 应该是具体的还是抽象的?似乎它们可能需要抽象。
  • 类通常以单数形式命名。所以宁愿使用 ROLE 而不是 ROLES
  • roleID 在 USER 类上做了什么?这似乎是错误的。如果您使用的是 UML,那么不要将外键字段放在您的类上。RoleID 是 ROLE 的属性,不应在 USER 上。
  • 为什么需要所有这些 ID 属性?如果您在逻辑级别上进行建模,您可以假设每个类都有一个唯一的标识,并且您无需担心该标识的技术实现(字符串、GUID、...)。另一方面,如果你正在制作一个技术模型,那么你会丢失大约 70% 的细节。
于 2017-09-28T07:01:48.130 回答
1

我会做这样的事情:在此处输入图像描述

您获得可以登录且具有不同角色的用户,当您执行功能(重命名服务)时,服务获取其模块并请求模块检查会话用户是否有权执行服务。

这对你有帮助吗?

于 2017-09-28T12:44:12.117 回答