UML,包含,扩展关系

Oth*_*man 0 uml use-case include extend

我无法理解包含和扩展关系的工作原理.假设我有一个在线购物应用程序.该应用程序允许您在未经过身份验证的情况下添加/检索购物车中的商品.这是"订单"场景:客户点击订单按钮.系统检查用户是否已通过身份验证.如果用户通过身份验证,系统将显示购买页面,否则用户将被重定向到身份验证页面.我想知道我的"身份验证"用例是否包含在"订单"用例中,如果是这样,为什么?(我问这个问题,因为如果用户已经过身份验证,则无需进行身份验证.)抱歉,我的英文

Ale*_*eks 7

我已经做了很多关于用例的咨询,它一直是一个非常有问题的主题,很难学习和掌握.考虑一些其他方法来指定req和系统功能(如UI原型,线框等)是一个好主意.理论上,用例是非常简洁的工具,但在实践中,它很难学习,耗时,不清楚,混淆团队和客户,难以检查/验证,甚至更难以保持更新等.

我试图在这里澄清这两种关系,使用你的例子,略微扩展以涵盖两种关系,并强调差异: 在此输入图像描述

请注意,"下订单"用例将有几个场景,其中两个相关:

  • 使用先前的身份验证"下订单" - 在此方案中,不会调用"身份验证"UC
  • 没有先前认证的"下订单" - 在这种情况下,"认证"的调用是强制性的,以便成功下订单.

在这种情况下,出现了非常频繁的混淆和UC建模错误.一些建模者认为在"包含"的上下文中的强制意味着它必须始终在包括UC的上下文中在每个场景中执行.如果不是这种情况(就像这里一样,只有一种情况是强制性的),他们使用extend.这是一个错误,因为在至少一个场景中UC是必需的.这些详细信息未在图表级别显示,而是在方案描述中显示.

  • 非常好的答案,非常清楚,非常感谢您的努力! (2认同)