0

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

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

系统应管理用户帐户,其中有:

  • 用户:可以创建、阅读、更新、删除和阻止自己的帐户,也可以登录。

    创建需要电子邮件身份验证。登录应该要求两步验证(可选)

  • 管理员:可以作为用户管理所有用户帐户(CRUD、阻止和登录)。也只读并登录自己的帐户。

    登录需要两步验证。

  • 超级用户:可以管理用户和管理员帐户(CRUD、阻止、登录)以及他们自己的超级用户帐户。

    创建管理员需要电子邮件和电话身份验证。
    登录与管理员相同,需要两步验证。
    可以将超级用户访问权限委托给其他管理员。

系统的流程需要用用例图和用例描述清晰(没有其他类型的图)

设计这些用例以避免重复用例描述并在图表上制作不必要的用例的正确方法是什么?

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

SuperUser 继承自从 User 继承的 Admin。

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

4

1 回答 1

2

您似乎在寻找的是参数化用例,这是 Alistair Cockburn 针对文本用例提出的概念。

典型的例子是 CRUD,当相同的用例描述被一遍又一遍地使用时,每个操作都有轻微的变化。方法是有一个参数化的用例,其中参数是操作(创建、读取、更新、删除)。

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

除了为不同的参与者增加相同的用例之外,您还可以使用更少的用例并使用约束以纯文本来解释适用于不同用例的不同类别参与者的特殊规则。

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

于 2020-08-03T22:50:29.073 回答