多个登录选项的用例

Use case for multiple login option

我有一个用例,用户可以通过普通登录以及社交登录(例如 Twitter、Google、Facebook)登录。我画的用例如下,但不确定是否正确。

登录账号---扩展--->正常登录
---扩展---> Twitter 登录
---扩展---> Google 登录
---扩展---> Facebook 登录

<<extends>> 反之亦然。

我已经厌倦了一直讲这个,但是 Login account 不是一个用例。它不会为演员带来任何价值。这是一个适用于其他真实用例的简单约束。

进一步:避免使用<<extends>>/<<include>>。它们是您尝试对用例进行功能分析的标志。相反,用例被合成,这产生了很大的不同。如果您的用例图开始像蜘蛛网,那么您的设计就失败了。

推荐阅读:Bittner/Spence.

总的来说,我倾向于同意 Thomas Kilian 对登录用例要小心,因为它们通常不会通过 boss 测试

Will my boss be happy if I do [--insert use case--] 100 times?

但是用例的使用方式多种多样,适用于许多不同的系统。如果您的系统是身份验证服务,那么我想 登录 可能是一个重要的用例。

总之,扩展关系大错特错。 关于 extends 的真正含义以及如何使用它,社区中也存在激烈的争论。我通常建议根本不要使用 extend。 但如果你想保留它们,那么你可能需要反过来做。

扩展用例在扩展用例执行的特定点(扩展点)向扩展用例插入一些特定功能。扩展用例不知道扩展用例。

Extends 可能不是您需要的。

我可能不会讨论那么多细节,并坚持使用单个 登录 用例(如果有的话)。您可以为 facebook、twitter、google 等创建替代场景...

但是如果你真的需要在你的用例模型中有这么多细节那么我会使用泛化

如您所见,有一个抽象用例登录。其他三个 具体 用例继承自该用例。

在分析中没有正确或错误的答案。只有更好或更差的答案,这在很大程度上取决于您的模型的目的。

我认为您的用例有点太技术化了。当您确定用例时,您需要回过头来检查它们几次以确保完整的用例集是有意义的。这通常意味着一些用例被合并成一个,其他的被拆分,等等。

区分用例时要问的关键问题是 "is the difference between these two use cases meaningful to the actor?" 你不应该问 "are there different ways to achieve this functionality?" 或 "will the implementation need to support several different protocols?" 这些是设计问题,不应在用例中记录但在实现它们的合作中。实现一个用例与几个不同的替代协作是完全有效和正常使用 UML。

在这种情况下,用户如何 登录是否重要,还是仅 登录重要?我怀疑是后者,在这种情况下应该只有一个用例。