ユースケース(use case)とは何か

ユースケースの話の前にシナリオについてひとこと.シナリオ(scenario)は,具体的なシステムとの関わりを,物語として

キャスト
 誰が
シーン
 いつ,どこで,なぜ
アクション
 何を,どんなふうに,どれだけ
を書いたものである.

では,ユースケースを理解するために次のシナリオを考えて見よう.このシナリオは,インターネットショッピングが可能なオンラインストアでショッピングを行なうことを想定している.

「顧客がオンラインストアのカタログから欲しいものを選び,ショッピングバスケットに
入れる.顧客が買うと決めて支払うとき,顧客は品物の届け先とクレジットカード情報を
入力し,その後最終決定をする.システムはクレジットカードが有効かのチェックをし,
すぐに売買の確認を知らせ,さらに電子メールで知らせる.」

このシナリオは日常起こりえるものである.しかし,時にはクレジットカードが許可されないこともありえる.そのような場合は,別のシナリオが発生する.

ユースケースは,一般のユーザがゴールとしていることで結び付けられたシナリオの集まりである.よって,このシナリオのユースケースは「商品の購入」と「クレジットカードの不許可」などとなる.一般に,ユースケースはすべてうまくいく場合と途中でうまくいかなかった場合などを含んでいる.

Cockburn(2001)は,ユースケースを取り出すために,下に記すように,基本系列とその代替系列をいくつかの番号付きのステップを用いて簡単な書式で表す方法を提案している.これをユースケーステキストという.

ユースケース記述の形式
 ユースケース名 「○○する」
 アクタ
 目的 アクタまたはシステムのownerにとっての目的
 事前条件 ユースケース実行前の主要なオブジェクトの状態
 基本系列 アクタとシステムのやりとり
 代替系列 例外のやりとり
 事後条件 ユースケース実行後の主要なオブジェクトの状態
 備考 ユースケース理解のためなら何でも書く

ユースケースの内容をどのように説明するかに関して多くの種類がある.UMLはこれが標準であるというものを決めてない.

どのくらい詳しく説明しなけらばならないかは,ユースケースのリスクに依存している.リスクが高ければ高いほど,より詳しい説明が必要となる.

例として,オンラインショッピングの記述を行なおう.

ユースケース名:商品の購入
アクタ:顧客
目的:顧客がインターネットでショッピングがしたい.
事前条件:顧客はショッピングができていない.
基本系列:
1. 顧客はカタログから買いたいものを選ぶ.
2. 顧客はチェックアウトに移動する.
3. 顧客は届け先情報を入力する(住所,翌日配達,翌々日配達)
4. システムは配送料を含んだ合計金額を表示する.
5. 顧客はクレジットカード情報を入力する.
6. システムは買い物を許可する.
7. システムはすぐに売買を承認する.
8. システムは顧客に確認のメールを送る.
代替系列:
3a. 顧客は常連客
 3a1: システムは現在の配送状況,価格,配達先を表示する.
 3a2: 顧客はこのディフォルト情報をそのまま受け入れるか,
    別の情報を上書きし,ステップ6に戻る.
6a. システムがクレジットカードの許可に失敗
 6a1: 顧客は再度クレジットカード情報を入力するかキャンセルする.
事後条件:顧客はショッピングができている.
備考:
ユースケース図

システムが外から見てどのように動作し,反応するかを図で表したものが ユースケース図 (use case diagram)である.

ソフト開発の主要な要素としてのユースケースと共に,Jacobson(1994)はユースケースを視覚化するためにユースケース図を提案した.ユースケース図は今ではUMLの一部である.

次の図は金融取引システムのユースケース図である.

図: ユーズケース図
\begin{figure}\begin{center}
\includegraphics[width=6.2cm]{UMLFIG/use-case.eps}
\end{center}\vspace{-0.6cm}
\end{figure}