オブジェクト指向
uml
ユースケース
オブジェクト指向設計

今日から始める!ユースケース入門 どんなもの?どうやって見つけるの?


はじめに

はじめてユースケースを書こう!と思った時、まず最初にユースケースそのものを、どう発見していけばよいのか、と悩みました。

そんなときに、古川 正寿(2010)「独習 オブジェクト指向開発 第2版」という素敵な本に出会い、その本の中で、ユースケースの発見について紹介されていた以下の考え方

「的確にユースケースを発見するために重要になるのが、システム化する業務やサービスの区切り(独立性)を発見していくことです。」(p,176)

「最初にアクタを考えて、アクタが利用する機能要素を考えていって、ユースケースを発見していくことをお勧めします。」(p,178)

をもとに、自分なりに解釈し、ユースケースを考えてみた記事です。

自分と同じように、はじめてユースケースを考える方の参考に少しでもなれば嬉しいなと思います。

またもし、自分はこんなふうに考えているよ!ここはもっとこうでは?などあれば教えてください!

目指せユースケースマスター!オブジェクト指向マスター!:v::sparkles:


ユースケースとは?

ユースケースは、システムを使う側から見た「提供されるシステムサービス」です。つまり、「このシステムはこんなことができますよ。」というものを表現するものです。


どうやってユースケースを見つけるの?

いざユースケースを考えてみようとなっても最初はなかなか難しいですよね。

実際に、はじめにで紹介した考え方をもとに、ユースケースを考えてみましょう!


業務やサービスの区切り(独立性)を発見していく

システムが導入された後の業務や、現状の業務などを整理してまとめることで、業務(もしくはサービスなど)の区切り(まとまり)を見つけていきます。その区切られた作業から、システムを利用する部分をユースケースとして導き出します。

実際に、注文端末から料理を注文をできるシステムを例に、表で考えてみます。


システムが導入された場合の業務の流れを表にまとめてみる

システムが導入された後の業務の流れ

NO
概要
ユースケース(システムを利用するか?)

1
注文を登録する

2
注文された料理を表示する

3
注文された料理を調理する

4
注文された料理を調理済に変更する

5
調理済の注文された料理を表示する

6
調理済の注文された料理を客に渡す

7
注文された料理を提供済に変更する


ユースケースが正しいものなのか確認してみる

アクタとユースケースを組み合わせて、ユースケースが自然な文章になるかどうか検証してみます。

今回は、以下の3種類のアクタを想定して、考えています。



  • キッチン

  • ホール

ユースケースとアクターを組み合わせた文章

ユースケース
確認文章

注文を登録する
客は、注文を登録する。

注文された料理を表示する
キッチンは、注文された料理を表示する。

注文された料理を調理済に変更する
キッチンは、注文された料理を調理済に変更する。

調理済の注文された料理を表示する
ホールは、調理済の注文された料理を表示する。

注文された料理を提供済に変更する
ホールは、注文された料理を提供済に変更する。

業務のまとまりを考えて表にしてみると、こんなふうにいくつかのユースケースらしきものが浮かび上がってきましたよね。

これらのユースケースは、まだまだ正確かつ十分とは言えませんが、ユースケースを考え始めるときに、非常に有用な方法になるのではないかと思います。


アクタが利用する機能を考える

最初にも述べたように、ユースケースは、システムを使う側(アクタ)から見た「提供されるシステムサービス」です。なので、まずシステムを利用するアクタを考え、「そのアクタが利用する機能はなにかな?」と考えてみます。

先程の例でいうと、

(まずアクタには「客」「キッチン」「ホール」が居るよなあ)○。。:thinking:

(「客」はシステムで何したいかな…注文するよなあ)○。。:thinking:

のように考えていくことになるのではないかと思います。


ICONIXプロセスの紹介

ICONIXプロセスという開発方法においては、まず最初にドメインモデルを作成するところからはじめ、ドメインモデルの言葉でシステムの使い方を考えていきます。なので、ユースケースを書く前に、まず最初のドメインモデルを考える必要があります。興味のある方はぜひ、ダグ・ローゼンバーグ,マット・ステファン(2007)「ユースケース駆動開発実践ガイド」を読んでみてください:writing_hand_tone1::sparkles:


さいごに

なんとなく、ユースケースを考えられる気がしてきましたよね?きっとしてきたはず!

実はこの後、システムさんとアクタさんがどうやってやりとりをしていくかということを「ユースケース記述」というもので詳しく書いていくのですが、そちらについても後々書ければなと思っています。

いきなり精度の高いユースケースを書くことは困難なので、間違いを恐れず、まずは書いてみて、さまざまな手法で検討を繰り返しながら、ユースケースを洗練させていこう!レッツユースケース!