連載第9-1回
UMLの基礎と応用

(株)NTTデータ 技術開発本部 副本部長
山本修一郎

■■アクティビティ図■■

 アクティビティ図は作業プロセスを記述できるのでフローチャートや業務フロー図とよく似た図式である。このためアルゴリズムだけでなくワークフローやビジネスモデルの表現にも適した図式であり幅広く利用できる可能性がある。その反面、最もUMLらしくない図式であるとも見られることもある[1]

 ただしUMLではアクティビティ図は状態遷移図の特殊な場合として扱われている[2]。この理由は、アクティビティ図の状態遷移が、先行する状態におけるアクションが完了したときに後続する状態に遷移する場合だけに限定されているからである。フローチャートについてもアクティビティ図と同じことがいえるので、フローチャートの各処理をそれぞれ「処理状態」だと考えれば、フローチャートも状態遷移図の特殊な場合ということになる。

アクティビティ図の例

 アクティビティ図の例としてはOMGでの標準化プロセスをアクティビティ図で示した例[3]が分かりやすい(図1)。

図1 OMG標準化プロセスのアクティビティ図
図1 OMG標準化プロセスのアクティビティ図

 この例ではアクティビティ図の領域が3つの組織に対応する矩形で区切られている。この矩形をスイムレーンといい、各組織に任された作業プロセスの範囲を表す。各作業プロセスは楕円を用いたアクティビティで示される。アクティビティ間の制御順序の関係が実線で表されている。また制御の条件分岐が菱形で表されている。分岐条件は鍵括弧([])の中で記述される。作業の結果として作成される生産物がオブジェクトであり矩形で表される。アクティビティによって操作されるオブジェクトとの関係は点線で表される。また複数の作業プロセスに対する並行状態の分岐と同期を水平線で表している。

アクティビティ図の構成要素

表1 アクティビティ図の構成要素
表1 アクティビティ図の構成要素

(1)アクション状態(Action state)
 アクション状態の特別な場合として、一連のアクティビティの始まりを表す開始状態と、その終了を表す終了状態がある。アクション状態にはアクション式により、実行されるアクションを指定する。アクション式では自然言語やプログラミング言語の構文を用いることができる。

 特別なアクション状態としてコール状態(Call state)がある。コール状態では1つのオブジェクト操作だけをアクションとして呼び出す。たとえば、ATMオブジェクトがReadCard(Card:IC_Card)という操作を持つとき、ICカードの情報をATM端末から読み出す場合、ReadCard(ATM)をコール状態の名前にすることができる。

(2)サブアクティビティ状態(Sub activity )
 サブアクティビティ状態により複数のアクティビティからなるコンポジットアクティビティを呼び出すことができる。サブアクティビティ状態に入ると、このコンポジットアクティビティが実行され、コンポジットアクティビティの最終状態に到達するまで、サブアクティビティ状態から抜けることはできない。

(3)判断分岐(Branch)
 アクティビティ図ではガード条件(guard condition)により可能性のある異なった遷移のうちの一つを選択することができる。既定義のガード条件として[else]がある。この条件は他のすべてのガード条件が不成立のときに成立する。

(4)スイムレーン(Swimlane)
 複数のアクションやサブアクティビティをスイムレーンにまとめて配置できる。スイムレーンによりアクションやサブアクティビティに対する責任(responsibility)を示すことができる。

 スイムレーンにビジネスモデルにおける組織単位や部門などを割り当てることにより、部門間にまたがるワークフローを表現できる。たとえば、OMG標準化プロセスの例では提案チーム、タスクフォース、改訂タスクフォースなどをスイムレーンとしてそれぞれのアクティビティ間の関連をアクティビティ図で記述している。またスイムレーンを用いて並行プロセスのスレッドを記述することもできる。

(5)オブジェクト
 アクティビティ図にアクションが操作するオブジェクトを記述することができる。シーケンス図では一つのオブジェクトに対する一連の操作を生命線の上で指定することができた。これに対してアクティビティ図では、アクションがどのオブジェクトに対する操作を実行するかを点線で示されるオブジェクトフローで指定できる。さらに、アクションによって変化するオブジェクトの状態をオブジェクト名に付与することができる。たとえば、OMG標準化プロセスの例では、承認された状態の仕様オブジェクトを、仕様[承認]というように表している。

(6)並行遷移(Concurrent Transition)
 並行遷移では複数の現在状態から、複数の次状態へ遷移することができる。並行遷移により同期や並行スレッドへの分岐を記述できる。並行遷移ではすべての並行遷移元の状態が現在状態になった時点で、すべての遷移先の状態が次の現在状態になる。

アクティビティ図の適用工程

 アクティビティ図ではプロセスの実行手順を記述するので、ユースケースのシナリオ記述、クラス操作の記述、ワークフローの記述などに適用することができる。たとえば、アクティビティ図をワークフローの記述に適用したビジネスモデリングの手法などが提案されている[4]。また、アクティビティ図ではアクションの実行順序を規定しているので、シーケンス図で実行タイミングを詳細に定義する前段階で用いることもできる。インターネット上のエージェントによるオークション・プロトコルの記述などにもアクティビティ図が適用されている[5]

 アクティビティ図では、オブジェクトフローは記述しているが、アクティビティをどのオブジェクトで実行するかについては明示的に記述していないので、オブジェクトにアクティビティを割り当てる必要がある。シーケンス図などの相互作用図ではオブジェクトに対して操作が明示的に対応付けられている。アクティビティ図を相互作用図と対応付けることで自然にアクティビティをオブジェクトに割り当てることができる。では、アクティビティをいつオブジェクトに割り当てるのかという観点では、アクティビティ図の作成と同時にオブジェクトも考慮する同時並行的な方法と、まずアクティビティ図だけ作成しておき、次いでオブジェクトにアクティビティを割り当てる段階的な方法が考えられる。アクティビティ図ではオブジェクトを明示的に扱わなくても済むので非専門家でもアクティビティ図を理解しやすいことを考えると、段階的な方法の方が適用しやすい場合も多いと思われる。

NEXT >> 

・連載第1回

・連載第2回

・連載第3回

・連載第4回

・連載第5回

・連載第6回

・連載第7回

・連載第8回

・連載第9回

・連載第10回

・連載第11回

・連載第12回

・連載第13回

・連載第14回

・連載第15回

・連載第16回

・連載第17回