UML,包含,扩展关系

时间:2014-04-28 01:13:50

标签: include uml extend use-case

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

2 个答案:

答案 0 :(得分:6)

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

我试图在这里澄清这两种关系,使用你的例子,略微扩展以涵盖两种关系,并强调差异: enter image description here

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

  • "下订单"使用以前的身份验证 - 在这种情况下,"身份验证" UC不会被援引
  • "下订单"没有先前的身份验证 - 在这种情况下调用"身份验证"是强制性的,以便成功下订单。

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

答案 1 :(得分:-1)

在提问之前,您应首先搜索。

Here是此网站的链接,可以回答您的问题。