用例图在我的图中扩展和包含有问题。

3
我对UML和用例图非常陌生。我尝试为我的应用程序绘制一个用例图,其中包括租户、卖家和普通用户。我的租户和卖家扩展了普通用户。我在包含和扩展方面遇到了麻烦。例如,当您查看办公空间时,您还可以在页面底部查看其评论。当租户想要撰写评论时,他/她必须在查看办公空间页面上执行此操作。我不确定这是扩展还是包含。如果我的箭头方向有误,请纠正我。另外,说租户和卖家包括登录是否可以?
请参考下图:enter image description here
2个回答

2
通常不应该对登录用例进行建模,因为它们不能直接帮助用户完成任何他或她关心的事情。
包含和扩展是用例之间的关系,而不是演员之间的关系。UML 2.5规范如下所述:
- 扩展是: 一个从扩展UseCase到扩展UseCase的关系,指定了在扩展UseCase中定义的行为可以如何和何时插入到扩展UseCase中定义的行为中。
- 包含是: 一个包含关系指定了一个UseCase包含了另一个UseCase中定义的行为。
演员之间的一般化/特化关系是完全可以的。那只是一个一般化箭头(例如,一个实线与一个空心箭头头部)。

嗯...我会查看UML 2.5规范以确保我是正确的...感谢您指出这一点。 - Jim L.
另外,我正在使用这个作为指南。http://www.gatherspace.com/static/use_case_example.html提示4也在扩展它。 - unconditionalcoder
谢谢!我该如何展示一个泛化的演员(一个演员继承自另一个演员)?我看过一些例子,其中包含一个实心箭头和一个未填充箭头头部。 - unconditionalcoder
@unconditionalcoder:我为您的答案添加了更多内容。我还澄清了一个错误说法,即在UML中允许演员之间包含和扩展。 - Jim L.
1
看了第一条评论的答案,我认为它是不正确的。根据我正确理解第639页的规范,I/E是用于UCs的,而不是用于演员,其中泛化是首选关系。 - qwerty_so
@ThomasKilian:我同意。 - Jim L.

2

Jim说:I/E是用于UC而不是用于Actors。我猜你在这里想要一个概括性的表述,因此两者都继承自General User。

enter image description here

进一步观察:

  • UC的标题使用动词和名词组合
  • 考虑到“使用”的含义,也就是增加了哪些价值。如果您发现没有增加任何价值,则它不是用例。
  • 一般情况下避免使用I/E。它们通常表示您尝试使用功能分解,而这不是UC综合的目的。
  • 无论如何,您绘制的UC之间的关系都是错误的。不存在具有填充的三角形并带有虚线的关系。您可能想使用一些<>依赖项(带有开放箭头)。但正如上面所述:避免使用它。只需创建与演员之间的关联即可。仅在Reviews和General User之间绘制一个关联即可,租户将继承该关系。
  • Login/out不是用例(没有增加任何价值)。它们是其他UC的约束条件(写 {must be logged in} 并附加到连接器上)

谢谢!您说这两者都是普通用户的概括。我该如何在UML图上展示这一点?我是否应该保留箭头而不使用extends关键字? - unconditionalcoder
一般化关系用实线表示,以未填充的三角形指向泛化类。因此,只需将您的虚线替换为没有构造的实线,并使箭头成为未填充的三角形即可。 - qwerty_so

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接