我正在制作我创建的程序的用例的 UML 图。我在具体情况下遇到了麻烦。我的程序可供多种类型的转换使用。 Guest、User(以Guest身份登录)、Editor(具有特殊权限的用户)。在程序中,所有类型的参与者都可以阅读一篇文章,但是如果您是用户,您还可以通过发表评论来扩展文章的阅读,如果您是编辑,您可以通过发表评论或编辑文章来扩展文章的阅读文章。这种情况下的 UML 应该如何相似?
我试图让它看起来像这样,但它并不真的认为应该这样做
最佳答案
初步说明,不是Readarticle
扩展了Editarticle
,而是Editarticle
扩展了Readarticle
。因此,延伸箭头应全部朝相反方向。
在用例图中,每个用例应该只出现一次。因此,您不应该为不同的参与者展示具有不同扩展的相同用例,而应该只有一个包含所有扩展的用例。
您试图在图表中表达的是阅读文章
及其扩展点对参与者有一些限制。这最好地反射(reflect)在明文约束中,例如{仅当参与者是编辑者或用户时}
。进一步的简化可能是专门化参与者(继承),因为 Editor
是一个具有更多职责的 User
。
但实际上,您的用例图似乎不是由参与者的目标驱动的,而是由您的用户界面设计驱动的:编辑文章的目标与阅读有很大不同。事实上,一开始没有文章可看,编辑却开始编辑。当然,您的用户界面可能设计有阅读界面,以及用于编辑模式的特殊按钮。但这是系统“如何”满足参与者的目标,而不是“什么”这些目标,这应该是用例的主要焦点。
因此,我宁愿建议根据用户的目标重新绘制图表,独立于这些在用户界面或系统内部结构中的实现方式。
关于authorization - 不同类型的用户扩展用例,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74887220/