我已经阅读了这篇文章: 用例泛化与扩展。以下是2个案例。
更新影片
只有在至少三个用例中的一个发生时才会发生。在泛化关系中,只有一个用例发生。在扩展关系中,更新影片
可以在没有任何用例的情况下发生。那么我应该使用哪个?
我已经阅读了这篇文章: 用例泛化与扩展。以下是2个案例。
更新影片
只有在至少三个用例中的一个发生时才会发生。在泛化关系中,只有一个用例发生。在扩展关系中,更新影片
可以在没有任何用例的情况下发生。那么我应该使用哪个?
如果只保留左侧用例不是一个选项,那么基于一般化的第二个版本更好,因为它更好地传达了面向目标的用例。但是,请考虑重新命名一般用例。
该特定图中的用例存在歧义:
«extends»
暗示您实际上正在建模用户界面或功能,例如窗口更新电影
可以导致其他不同的函数或功能,每个在右侧都是可选的。这只有在左侧更新电影
对演员有意义而不考虑其任何扩展时才有意义。但是这不是事实,因为您声称“[右侧的三个用例中]至少发生一个”。让我们避免这种功能分解。基于一般化的版本,可以完全对应于合适的用例,具有通用目标,并在更具体的目标中进行了说明,每个目标本身都有意义。
Alistair Cockburn在他的优秀书籍编写有效用例中,专门写了一章关于CRUD用例:
问题是,它们是否都是一个更大的用例管理xxx的一部分,还是独立的?
原则上,它们是独立的,因为每个是由不同的人以不同的安全级别执行的不同目标。但是它们会混淆用例集并且可能使要跟踪的项目数量增加三倍。
由于Cockburn专注于描述用例而不是UML模型,因此他接下来描述了他所谓的“参数化用例”,其中包含有些情节操作对于特定的用例更加具体的通用用例。这种技术非常符合一般化/特殊化,他在关于UML符号的附录中也提到了它。
Kurt Bitter和Ian Spence在他们出色的书籍用例建模中不赞成使用CRUD用例。他们的主要论点不是CRUD用例有问题,而是它们耗时且对建模提供的价值很少:
尽管使用用例来描述CRUD这种行为在技术上是适当的,但将此行为描述为用例可能不值得花费这么多时间。我们将这个准则总结为“用例应该不仅包含CRUD”。Control Paying
作为Control Paying with PayPal
的概括似乎很容易,这将共享大部分行为。 - Christophe以上内容都不是用例。它们是纯函数,作为某些用例描述中的活动中的操作。用例为其参与者带来附加价值。这是您开始构建的升华点。从来不是功能!因此,您正在进行功能分解。您走错了轨道。
像往常一样,我推荐Bittner/Spence关于用例建模的阅读。这是您可以找到的最好的读物。