The UMLアクティビティ図これは、プロセスの順次的および並行的なステップ、またはアクティビティをモデル化するフローチャートであり、システムの動的側面を記述するために使用され、1つのアクティビティから次のアクティビティへの制御の流れに焦点を当てる。
この図は、ビジネスプロセスのモデル化、異なるコンポーネント間のワークフローの定義、およびシステムまたはメソッドの内部論理の文書化において非常に価値がある。

アクティビティフローの主要な要素
アクティビティ図は、ノード(ステップを表す)とエッジ(制御の流れを表す)に基づいて構築される。
A. アクティビティおよびアクションノード
これらはプロセス内で実行される単一のステップまたはタスクを表す。

- 表記法: ラウンドされた長方形。
- アクションノード: 原子的で中断不能なステップを表す(例:在庫を確認する).
- アクティビティノード: より詳細なサブアクティビティに分解できる高レベルの目標を表す(例:注文を処理する).
- 目的: 実行が必要な作業を定義するため。
B. 制御フロー(エッジ)
制御フローは、2つのノードを接続する矢印であり、1つのアクションから次のアクションへの遷移を示す。

- 表記法: 実線の矢印。
- 目的: 実行の順序を示す。
C. 開始ノードと終了ノード
すべての図には単一の開始点と1つ以上の終了点が必要である。

- 初期ノード(開始):
- 表記:実心で塗りつぶされた円。
- 目的:制御フローの入口。
- アクティビティ終了ノード(終了):
- 表記:大きな空洞の円に囲まれた実心の円。
- 目的:アクティビティ内のすべてのフローの完了を示す。
- フロー終了ノード:
- 表記:内部に‘X’がある円。
- 目的:特定の経路(フロー)の終了を示すが、ただし全体のアクティビティを必ずしも終了させるわけではない。
決定および分岐論理のモデリング
アクティビティ図は、コードにおける「if-else」や「switch」文のように、条件付き論理を処理するための特定のノードを使用する。if-elseまたはswitch文のように。
A. 決定ノードとマージノード
これらのノードは、条件付き分岐およびその後のパスの再結合をモデル化するために使用される。

- 決定ノード:
- 表記:菱形。
- 使用法:単一の入力フローと複数の出力フロー。各出力フローには必ずガード条件 (四角括弧内の条件、例:
[在庫 > 0])が、どの経路が選択されるかを決定する。
- マージノード:
- 表記法: ダイヤモンド型。
- 使用法: 複数の流入と単一の流出。単に異なる分岐が再統合される点を表しており、流入する分岐のいずれかが次のステップへとつながることを示す。並行するフローの同期は行わない。
並行処理と同期のモデリング
一方で、フローチャート通常は順次的であるのに対し、アクティビティ図は同期バーを使用して並行実行を効果的に示すことができる。
A. フォークノードとジョインノード
これらのノードは、単一の制御フローを複数の並行フローに分割し、その後、これらの並行フローの完了を待つために使用される。

- フォークノード:
- 表記法: 厚い水平または垂直のバー。
- 使用法: 単一の流入と複数の流出。すべての流出フローはこの点から並行して(並行して)この点から実行を開始する。
- ジョインノード:
- 表記法: 厚い水平または垂直のバー。
- 使用法: 複数の流入と単一の流出。流出フローはすべての流入する並行フローが完了(同期)するまで開始できない。
組織的要素:スイムレーン
スイムレーン(別名:パーティション)は、どの部門、コンポーネント、またはアクターがどの活動に対して責任を持つのかを示すために不可欠です。視覚的に図を垂直または水平のゾーンに分けることができます。
- 表記法:責任領域を分ける垂直または水平の平行線。
- 目的:実行する主体によってアクションをグループ化し、異なる組織単位間での明確な責任を確保する(例:「顧客」、「Webシステム」、「倉庫」)。

アクティビティ図のベストプラクティスの要約
- オブジェクトではなくフローをモデル化する:クラス間の構造的関係(これはクラス図の役割)ではなく、手順の順序と制御の流れに注目する。
- スイムレーンを使用する:特にクロスファンクショナルなビジネスプロセスにおいて、各アクションを実行する主体(誰か、何か)を明確に区別するために、常にスイムレーンを使用する。
- ガードをラベル化する:決定ノードからのすべての出力フローが、明確で排他的なガード条件(例:
[A],[B],[Else]). - フォークの同期:すべてのフォークは、ジョインすべての並列アクティビティが完了するまで、次のステップが待機することを保証する。
UMLとAIがそれを可視化する方法についてより深く理解したい場合は、私たちのUMLリソースハブ.











