ユースケースとは
- システムの外側の要求と、対する内側の応答を示すもの
- eg. "ユーザーの操作" に対する "一連の処理"
- 正常系(基本コース)と異常系(代替コース)からなる
これをモデリングする。
なんのためにやるの?
- ユーザーがシステムで何をしたいのか、何を得たいのかを明確にする
- システムができること、できないことを明確にする
ほかにもいいことが
- エンジニア以外でも読めるので、システムイメージを共有しやすい
- 単体テストのケースを考える助けとなる
- 各ドメインの処理や流れがわかり、ドメインモデルの漏れや誤りに気づける
具体的には何をやるの?
- ユースケース記述を書く
- ユースケース図(UML)を書く
ユースケース記述
- ユースケースを表や文章で示したもの
- 1つのユースケースについて詳しく書ける
例.1 めっちゃ詳しく書く場合の表
例.2 簡易版の表
例.3 文章版
ユースケース駆動開発実践ガイドより
ユーザーガイドを書くのに似ている、とのこと。
システムは「検索」ページを表示する。ユーザーは「著者」フィールドをクリックし、著者名(フレッド・スミスなど)を入力する。ユーザーは「検索」ボタンをクリックする。システムは検索フォームを読み取って著者名が一致する書籍を探し出し、「検索結果」ページで 検索結果の書籍一覧を表示する。
ユースケース図
- アクターとユースケース同士の関係を表した図
- 粒度の大きい版と小さい版を作るとなお良い
- eg.大きい:商品を管理する
- eg.小さい:商品を追加する、商品価格を変更する、商品登録を削除する
- 大きすぎると -> 認識漏れが出る
- 小さすぎると -> "ユースケース"から"機能"になりがち
部品
次の部品を組み合わせて書く
- オブジェクト
- アクター(棒人間)
- ユースケース(楕円)
- 線
- 関連(ただの線)
- アクターとユースケースを結ぶ
- 呼び出し(invokes, 破線+<\>)
-
A --invokes--> B
= BはAから実行される
-
- 先行(precedes, 破線+<\>)
-
A --precedes--> B
= Bの実行前にAが完了している
-
- 関連(ただの線)
他にもあるが、上記でほぼ足りるとのこと。
- その他
- サブジェクト(四角い枠)
- システムの境界を表す
- パッケージ(フォルダみたいなやつ)
- グループを表す
- サブジェクト(四角い枠)
例
書く際の注意
- ユビキタス言語(ドメイン名)を使う
- UI部品名も使って書く
- ユーザーとシステムの境界(バウンダリー)を明確にする
- 「"名詞" は "名詞" を "動詞" する」という短い文の集まりで書く
- ユーザー視点でまとめる(機能分割しない)
- eg. 入力、バリデート、登録処理と分けずに「登録する」とする
まとめ
- ユースケースの概要とモデリングするメリデメを紹介
- 手法としてユースケース記述とユースケース図がある
- ユースケースモデリングをして、システムを整理しよう!
参考資料
- ユースケース駆動開発実践ガイド - 翔泳社
- 若手エンジニア必読!超絶わかるユースケース図 - IT Koala Navi
- ユースケース記述の作成 - WEBサービス創造記
- 初歩のUML:顧客の要求をユースケースに反映させる - ITmedia