アクティビティ図(Activity Diagram)

アクティビティ図とは、連続する「実行」の遷移、つまり一連の「手続き」を表現するための図です。ある事象の開始から終了までの機能を実行される順序にしたがって記述します。 状態マシン図が実体の状態遷移を表すのに対し、アクティビティ図では実体の制御の流れを描写します。


記述例

アクティビティ図は必ず開始状態から何らかの終了状態へ、矢印で示された手順に従って実行を行います。 下の図はある会社社員が起床して出社するまでの手続きを示した例です。


【要件定義】

まず朝起きて顔を洗います。健康ならば新聞を読みながら朝食を食べ、歯を磨き、そのあと服を着替えて出社します。もし体調が悪ければ「病気である」と会社に連絡して処理終了です。

アクティビティ図 記述例

ひし形で表される条件分岐は排他的で、両方の制御の流れを同時に行うことはありません。

歯を磨くという制御と新聞を読むという二つの制御が終了した後、服を着替えるという一つの制御に結合され、図で示された”出社準備”というスコープでの制御を終了します。


このように、アクティビティ図を記述することによって、制御の流れを描写・設計することが出来ます。

▲PageTop

構成要素

アクティビティ図は次の要素で構成されます。


構成要素一覧
要素 表示形式 意味
初期ノード 初期ノード 記号 スコープ内で開始を表します。
最終ノード 最終ノード 記号 スコープ内で終了を表します。
アクションノード アクションノード 記号 制御を表します。
デシジョンノード / マージノード デシジョンノード・マージノード 記号 条件によるフロー分岐(デシジョンノード)もしくは、複数のフローの合流(マージノード)を表します。
フォークノード / ジョインノード フォークノード/ジョインノード 記号 複数のフローが非同期に実行される(フォークノード)、もしくは、複数の非同期処理が終了する(ジョインノード)ことを表します。
データストア データストア 記号 データーを保持するための記憶領域や装置を表します。
最終制御 最終制御 記号 それまでの制御で使用されたトークンを全て破棄することを表します。
オブジェクト オブジェクト 記号 制御のターゲットとなるオブジェクトを表します。
パーティション パーティション 記号 制御がどの領域に属するかを表すための領域分けとして使用されます。
例外 例外 記号 例外の発生によって制御の移行が行われることを表します。
パラメーターの設定 パラメーターの設定 記号 制御の側面に追記された凹凸の群は、パラメーター群を表しています。
プレコンディション / ポストコンディション プレコンディション/ポストコンディション 記号 制御前の状態(プレコンディション)と制御後の状態(ポストコンディション)を表します。
割り込み可能領域 割り込み可能領域 記号 破線の四角で区切られた領域内の制御の流れが、割り込み可能であることを表しています。
拡張領域 拡張領域 記号 入力された複数のオブジェクトをそれぞれオブジェクト毎に処理して、再度一まとめにして出力することを表しています。 このとき、オブジェクト毎の処理の流れを「トークン」と呼びます。
トークンの制御方法として、次の3種類があります。
iterative
順次1つずつトークンが実行されます。
parallel
それぞれ独立したトークンが平行で実行されます。
stream
複数のトークンが関連しながら1度に実行されます。
送信とアクションのノード 送信とアクションのノード 記号 オブジェクトにシグナルを送信する制御を表します。
受信ノード 受信ノード 記号 シグナル、またはイベントの発生の待機を表します。
待機ノード 待機ノード 記号 タイマー制御を表します。

▲PageTop

各要素の記述例


条件分岐と並列

下の図は、パソコンの利用者がメーラーを使用した時の制御の流れを表した例です。

条件分岐と並列 図例

【解説】

利用者はまずメールを確認し、そこに新着メールがあるかを確認します。もし新着メールがあればスパムの消去と新着メールへの返事を書き、なければ何もせずに終了します。新着メールがあった場合のスパムの消去と返事を書くという二つの制御は同期/非同期に実行されます。


シグナルの受信・送信

下の図は、自動改札機の動作を表した例です。

シグナルの受信・送信 図例

【解説】

自動改札機は、利用者から切符の投入を待ちます。もし切符が入れば、「その切符が有効かどうか」を確認し、次に改札機のドアを開けて一連の動作を終了します。有効でない切符であるならば、ドアを開放することなく再び切符待ち状態になります。


各種ノード

下の図は、OSに何らかの異常があった場合の制御を表した例です。

各種ノード 図例

【解説】

まず、バックアップ制御で、データをハードディスクにセーブします。次に異常終了である旨の表示を行い、OSを稼動状態から停止状態へと状態遷移させます。最後に10秒間の待機後、全ての状態を破棄し、制御を停止させます。


割り込み可能領域と例外のスロー

下の図は、負荷が大きい(素数を100,000個見つける)処理を表した例です。

割り込み可能領域と例外のスロー 図例

【解説】

このように負荷が大きい処理を行う場合、ユーザーが途中で停止を要求するかもしれません。左図は、もし停止要求が発生した時、停止が押されたというメッセージを受け取り、それを例外としてスローすることを示しています。制御の流れを囲う破線は、割り込みの発生が許可されている領域を示すシンボルです。


拡張領域

下の図は、データベースへのアクセス制御を表した例です。

パラメーターの記述 図例

【解説】

取得した制御リストの内容「検索・登録・更新・削除」ごとに処理を行い、その結果をリストにして出力しています。


パーティション表記

下の図は、FTPとHTTPのサービスを提供するサーバの制御を表した例です。

パーティション表記 図例

【解説】

サービスを選択する制御はクライアント側であり、その選択により、HTTP、FTPサービスを提供する制御はサーバー側であることを示しています。


▲PageTop