矢沢久雄
●シーケンス図の役割
今回は,シーケンス図,コラボレーション図,およびステートチャート図の役割とかき方を学習します。シーケンス図とコラボレーション図は,複数のオブジェクト間の相互作用を示すもので,これらを「相互作用図」と総称することもあります。ステートチャート図は,一つのオブジェクトの状態の変化を示すものです。シーケンス図では,オブジェクト(クラスのインスタンス)の相互作用を時間軸にそって示します。シーケンス図を使うことで,特定のユース・ケースのシナリオを実現するために必要となるオブジェクトの集合とオブジェクト間の交信を示すことができます。したがって,シーケンス図を作成する前に,クラス図やオブジェクト図,およびユース・ケース図とシナリオを作成しておかなければなりません。
図1●メッセージの種類を表す矢印 |
●シーケンス図のかき方
シーケンス図では,縦軸に時間をとり,横方向にオブジェクトを並べます。オブジェクトから垂直に破線をかき,その上にオブジェクトの活性区間を長方形で表します。オブジェクトの活性区間とは,オブジェクトが操作を実行していることを表すものです。最初に操作を実行するオブジェクトの横には,操作を起動するアクターを記述します。シーケンス図全体で一つのユース・ケースを表していることに注意してください。
図2●シーケンス図の例 |
●コラボレーション図の役割
コラボレーション図は,シーケンス図と同様に,オブジェクトの相互作用を示すためのものです。コラボレーション図は,オブジェクト図にメッセージの流れを追加した形で作成されます。シーケンス図との違いは,コラボレーション図に時間軸がないということです。オブジェクトの関連とメッセージの流れが複雑な場合は,シーケンス図よりコラボレーション図を使った方が,分かりやすい図がかける場合があります。コラボレーション図でメッセージを表すために使われる矢印の種類は,シーケンス図で使われるものと同じです。
●コラボレーション図のかき方
コラボレーション図では,オブジェクト間の関連を実線で示し,それに沿ってメッセージの流れを矢印で示します。矢印には,メッセージの順番を示す番号とメッセージの内容を「番号:メッセージの内容( )」という形式で書き添えます。メッセージの内容の後ろのカッコ内には,メッセージの引数を記述できます。
図3●コラボレーション図の例 |
1.ボタンからCPUへ,ボタンが押されたことを通知するメッセージが送信される
2.CPUから液晶画面へ,押されたボタンに応じて表示する数値が通知される
●ステートチャート図の役割
システムは,時間の経過やオブジェクト間のメッセージの交信によって変化します。システムの変化とは,システムを構成する個々のオブジェクトの状態(state)の変化に他なりません。システムを機能の集合体と考えた構造化設計では,フローチャートで処理の流れを表しますが,システムをオブジェクトの集合体と考えるオブジェクト指向設計では,ステートチャート図でオブジェクトの状態の変化を表します。
図4●ステートチャートで使われる図記号 |
●ステートチャート図のかき方
ステートチャート図では,角の丸い長方形に状態名を記述して一つの状態を表します。状態の変化は,2つの状態を実線の矢印で結ぶことで表されます。矢印の上には,状態の変化の要因を書き添えます。初期状態と最終状態は,塗りつぶされた円および内部が塗りつぶされた二重の円で表します(図4)。図5●液晶画面オブジェクトのステートチャート図 |
前回説明したクラス図とオブジェクト図は,システムを静的に分析したものだと言えます。それに対して,シーケンス図,コラボレーション図,およびステートチャート図は,システムを動的に分析したものだと言えるでしょう。UMLが,様々な角度からシステムを分析できるというイメージをつかんでいただけましたか?