繁体   English   中英

UML,包含,扩展关系

[英]UML, include, extend relationship

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

我已经对用例进行了很多咨询,这一直是一个非常有问题的话题,并且很难学习和掌握。 绝对可以考虑采用其他方法来指定需求和系统功能(例如UI原型,线框等)。 从理论上讲,用例确实是一种很好的工具,但是在实践中,它常常很难学习,费时,不清楚,使团队和客户感到困惑,难以检查/验证,甚至难以保持更新等。

我已尝试使用您的示例在此处阐明这两种关系,并稍作扩展以涵盖这两种关系并着重于差异: 在此处输入图片说明

请注意,“下订单”用例将具有多个方案,其中两个与此处有关:

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

在这种情况下,UC建模中经常会出现混乱和错误。 一些建模者认为,在“包含”上下文中的“强制性”意味着在每种情况下都必须始终在包含UC的上下文中执行它。 如果不是这种情况(例如此处,只有一种情况是强制性的),则它们使用扩展。 这是一个错误,因为至少在一种情况下必须使用UC就足够了。 这些细节未在图级别上显示,而是在场景描述中显示。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM