我以前从未制作过用例图,所以我想知道我的是否正确。
1 回答
简而言之
这是一个(几乎)有效的用例图。但这并不能使它们成为好的用例。但最终重要的是它是否对您有用。
更多细节
根据 UML,它在形式上是正确的吗?
UML 与价值无关,并在规范的第 637 页定义了 UC(由我强调):
UseCase 是一种 BehavioredClassifier,它表示一组提供的行为的声明。每个 UseCase 指定 主体可以与一个或多个 Actor 协作执行的一些行为。用例定义主题的提供行为,而不参考其内部结构。这些行为,涉及 演员和主体之间的交互,可能会导致主体状态的变化以及与其环境的通信。
让我们根据这个定义检查你的 UC 的有效性:
Start game
、move paddle
、restart game
和exit game
是游戏(主体)与玩家(演员)合作提供的行为。根据 UML,这些是有效的 UC。Ball falls
、hit all bricks
、hit brick
和display score
是更值得怀疑的行为:它们不需要与玩家合作或互动。尽管如此,您仍可以争辩说,只有当用户观察到这些行为时,这些才有意义,因此与玩家进行了交互。所以可以说这些也是关于 UML 定义的有效 UC。Add score
似乎是一种纯粹的内部行为,在没有用户的情况下完成,甚至没有被用户观察到。这将不是一个有效的 UC。然而,标签可能会产生误导:如果它Display score
意味着最终的游戏结束分数并且Add score
意味着屏幕上分数的更新,那么它可能再次被认为是一个有效的 UC。
扩展(可选)和包含(系统)的使用似乎也是正确的。
这是一个好的UC吗?
虽然 UML 与价值无关,但许多作者以更模糊的方式定义用例。特别是Ivar Jacobson,用例的发明者将其定义为:
用例是使用系统为特定用户实现特定目标的所有方式。所有用例集合在一起,为您提供了使用系统的所有有用方法,并说明了它将提供的价值。
根据这个定义,这里只有一个用例:
Play a game
:这是用户为他/她带来价值的目标。
所有其他元素只是使用系统实现这一目标的方法。所以它们属于单一用例。一种方法是将它们表示为用例描述的细节:
一种合适的方法是在基本用例中根据意图来显示这些。这种方法是康斯坦丁和洛克伍德在 1999 年发明的。它被居中使用,并且在用户界面中的操作顺序方面具有完全的灵活性。
另一种现代方式是 Ivar Jacobson 在 2011 年发明的Use-Case 2.0。这些细节将显示为用例切片,其方式与用户故事非常相似。