【问题标题】:UML, include, extend relationshipUML,包含,扩展关系
【发布时间】:2014-04-28 01:13:49
【问题描述】:

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

【问题讨论】:

标签: include uml extend use-case


【解决方案1】:

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

我试图在这里澄清这两种关系,使用您的示例,稍微扩展以涵盖两种关系并强调差异:

请注意,“下订单”用例将有多个场景,其中两个与此处相关:

  • “Place Order”与之前的身份验证 - 在这种情况下“身份验证”UC 将不会被调用
  • “下订单”没有先前的身份验证 - 在这种情况下,“身份验证”的调用是强制性的,以便成功下订单。

UC 建模中非常常见的混淆和错误来源就是这种情况。一些建模者认为“包含”上下文中的强制意味着它必须始终在包含 UC 的上下文中执行,在每个单独的场景中。如果不是这种情况(就像这里,只有一种情况是强制性的)他们使用扩展。这是一个错误,因为至少在一种情况下强制使用 UC 就足够了。这些细节没有显示在图表级别,而是显示在场景描述中。

【讨论】:

  • 很好的答案,很清楚,非常感谢您的努力!
猜你喜欢
  • 1970-01-01
  • 2023-04-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-07-25
相关资源
最近更新 更多