UML:如何减少用户帐户系统的用例以避免冗余和不必要的用例?

UML: How to reduce use cases for user accounts system to avoid redundancy and unnecessary use cases?

我需要帮助来减少我的子系统上的用例。

此子系统是关于管理具有以下要求的用户、管理员和超级用户的多个帐户:

The system shall manage users accounts, where there are:

  • Users: can create, read, update, delete and block their own accounts, also login.

    Create needs email authentication. Login should ask for 2-step auth (optional)

  • Admins: can manage all users accounts (CRUD, block and login) as a user. Also read only and login their own account.

    Login needs 2 step authentication.

  • Superuser: can manage both users and admin accounts (CRUD, block, logins) and their own superuser account.

    Create admin needs email & phone auth.
    Login is same as admins, needs 2 step auth.
    Can delegate the superuser access to another admin.

只需要用例图和用例描述就可以清楚系统的流程(没有其他类型的图)

设计这些用例的正确方法是什么,以避免在用例描述上出现冗余并在图表上产生不必要的用例?

例如,在此系统上,用户、管理员和超级用户各有一个登录用例。用户登录要求两步验证(可选),而在管理员和超级用户上必须始终需要两步验证。

SuperUser 继承自 Admin,Admin 继承自 User。

我正在寻找的最终目标是(例如)将这 3 个登录用例变成一个仅连接到用户参与者的用例,以便 Admin 和 SuperUser 继承用例但是,由于每个 Actor 的行为都不同,我想放置一个登录用例描述,它根据触发登录的 Actor 类型更改行为。因此,我没有 3 个登录用例(每个演员一个),而是只有 1 个用例和 1 个适用于所有人的描述。

您似乎要寻找的是参数化 use-cases,这是 Alistair Cockburn 为文本 use-cases 推广的概念。

典型的例子是 CRUD,当重复使用相同的 use-case 描述时,每个操作都有细微的变化。该方法是有一个参数化的用例,其中参数是操作(创建、读取、更新、删除)。

据我所知,UML 表示法中不存在相同的概念。因此,您通常会有一个用例 Manage XYZ 并在叙述中描述细节,或者四个 use-cases Create XYZUpdate XYZDelete XYZRead XYZ。我个人更喜欢第一个,这样 use-case 可以传达全局。

除了为不同的演员乘以相同的 use-cases,您还可以使用 less use-cases 并使用 contraints 以纯文本解释适用于不同角色的特殊规则不同 use-cases.

的演员类别

最后,我想补充一点,use-cases 并不是为了模拟流程和事件顺序。用例旨在识别将转化为不同类型交互的不同目标。在这方面,我想知道区分 Manage own accountManage other user account 是否有意义,因为这对应于非常不同的目标。