UML(統一モデリング言語)とは

UML(Unified Modeling Language)とはシステム設計に用いられるモデリング言語で、クラス図やシーケンス図、アクティビティ図、コンポーネント図などから構成されます。この記事では、UMLの使い方をご紹介します。

オブジェクト図

UMLのオブジェクト図はクラス図で表現されたオブジェクト関係のある時点でのスナップショットを表現します。

シーケンス図

UMLのシーケンス図はシステムの動的な振る舞いを表現します。

シーケンス図では、相互作用を実線の矩形として表す。長方形の左上の五角形の中に、キーワードsdと相互作用名を記述する。

シーケンス図
Figure 1. シーケンス図
シーケンス図に使われる記号
記号 意味
オペレーション(同期) オペレーション(同期)
オペレーション(非同期) オペレーション(非同期)
リターン リターン

ライフライン

ライフラインは、長方形の「頭」と、それに続く垂直の線(破線であることが多い)で表される。

ライフライン
Figure 2. ライフライン

ExecutionSpecification

ExecutionSpecificationは、ライフライン上に細い長方形(灰色または白色)で表される。

ExecutionSpecification
Figure 3. ExecutionSpecification

DestructionEvent

DestructionEventは、オブジェクトの破壊をモデル化する。

DestructionEventは、ライフラインの最下部に×の形で描かれる。

DestructionEvent
Figure 4. DestructionEvent

CombinedFragment(結合フラグメント/複合フラグメント)

結合フラグメント(複合フラグメント)は、シーケンス図に含まれる条件分岐や繰り返し処理などの相互作用をフレーム(枠)で囲んだものである。

相互作用演算子 説明
alt altは条件分岐を表す。振る舞いの選択肢であるフレームを複数並べることができ、各フレームにガードと呼ばれる条件式を記述する。条件式が真であるフレームがひとつだけ実行される。いわゆる、IF THEN - ELSE IF - END IF形式である。
opt optは条件分岐を表す。フレームにガードと呼ばれる条件式を記述する。条件式が真の場合に振る舞いが実行される。altと異なり、フレームはひとつのみ存在し、振る舞いを実行するか否かの2択である。いわゆる、IF THEN - END IF形式である。
ref refは参照を表す。フレームの中には別途定義した相互作用名を記述する。

コミュニケーション図(コラボレーション図)

UMLコミュニケーション図は、クラスが協調して共通の目的を達成する振る舞いをモデリングします。

UML 1.x ではコラボレーション図と呼ばれていました。

コミュニケーション図の内容はシーケンス図とほぼ同じです。時系列の流れを中心にした表記(シーケンス図)とクラス間の関係を中心にした表記(コミュニケーション図)の違いです。

状態図

UMLの状態図はオブジェクトの状態遷移を表現します。

状態図
Figure 5. 状態図

状態にはイベントとアクションを記述することもできます。イベントには次のようなものがあります。

イベント 意味
entry 他の状態から遷移したきたときに実行する
exit 他の状態へ遷移するときに実行する
do 状態が続いているときに実行する

アクティビティ図

UMLアクティビティ図は、処理の流れを表します。構造化設計のフローチャートやデータフロー図 (Data Flow Diagram: DFD) に相当します。

名前 意味 表記法
初期ノード ダイアグラムの開始地点
最終ノード ダイアグラムの終了地点。複数の終了地点が存在してもよい。 最終ノード
アクティビティ 実行する処理 アクティビティ
フロー 処理の流れを表す矢印
フォーク 並列処理の開始 フォーク
ジョイン 並列処理の終了 ジョイン
条件 フローに付ける条件。条件を満たした場合にのみ次の処理に進む。 [条件]
決断 分岐地点。分岐先それぞれに条件を明示する。 決断
併合 複数のフローの合流点 併合
ノート 注釈(コメント) ノート

コンポーネント図

UMLのコンポーネント図 (component diagram) では、ソフトウェアコンポーネント間の依存関係を表します。

<<component>>
コンポーネント名
<<ステレオタイプ>>
<<required interface>>
外部に対して要求しているインタフェース
<<provided interface>>
外部に対して提供しているインタフェース

ステレオタイプは省略することができます。次にコンポーネント図で使われる主なステレオタイプを示します。

ステレオタイプ 意味
application アプリケーション
infrastructure セキュリティ、永続性、ミドルウェアといったシステムレベルのサービスを実装するコンポーネント
database データベース
UI ユーザインタフェース

<<component>>というステレオタイプを記述する代わりに、アイコンで表すこともできます。

コンポーネントのアイコン
コンポーネント名
<<ステレオタイプ>>

配置図

UMLの配置図 (deployment diagram) では、ノードとコンポーネントの物理的な配置を表す。

配置図は、配置対象の内側にコンポーネントの図を入れて表現する。

配置図
Figure 6. 配置図

配置対象とコンポーネントを依存関係<<deploy>>で表現することもできる。

配置図

コンポーネントを配置対象内にテキストリストで表現することもできる。

配置図

ノードは、直方体を立体的に描いたような図で表される。

ノードの例

ネットワーク構造を定義するために、通信経路を通じてノード同士を相互に接続させることができる。アプリケーションサーバー(AppServer)とデータベースサーバー(DBServer)が接続されている場合、UML配置図では下記のように表すことができる。

ノード同士を接続した例
Figure 7. ノード同士を接続した例

とくに明示されていない限り、ノードは論理的な存在である。2つのノードがある場合でも、2台のホストコンピュータの存在を表すわけではない。1台のホストコンピュータが2つのノード(例えば、アプリケーションサーバとデータベースサーバ)を兼ねている場合もある。

ステレオタイプ <<device>> を付けて、ノードが物理的なものであることを表すこともできる。

ステレオタイプを付けたノードの例
Figure 8. ステレオタイプを付けたノードの例

上記のUML配置図の場合、AppServerは物理的なノードを表す。DBServerはステレオタイプで明示されていないので、AppServerとは別の物理ノードかもしれないし、AppServerと同一の物理ノードかもしれない。

次にUML配置図で使われる主なステレオタイプを示します。

UML配置図で使われるステレオタイプ
ステレオタイプ 意味
<<device>> 物理的なデバイス
<<executionEnvironment>> 実行環境
<<artifact>> 成果物
<<deploy>> 配置関係
<<manifest>> 成果物の構成要素
<<deployment spec>> 配置仕様

上記はUML配置図で慣例的に使われるステレオタイプですが、独自のステレオタイプを定義することもできます。たとえば、通信経路にステレオタイプを付ける場合、<<HTTP>>や<<TCP/IP>>、<<IIOP>>、<<RS-232C>>、<<Ethernet>>といったステレオタイプになるでしょう。

executionEnvironmentは、中に配置されたコンポーネント(実行可能な成果物)のための実行環境を提供するノードです。

executionEnvironment

deployment spec は、ノードに配置されたコンポーネント成果物の実行パラメータを決めるプロパティのセットを指定します。

パッケージ図

パッケージは次のように表す。

パッケージ
Figure 9. パッケージ

パッケージ内の要素を表す場合、パッケージは次のように表す。

パッケージ
Figure 10. パッケージ

または、次のように表す。

パッケージ
Figure 11. パッケージ

入れ子になったパッケージの構造を表すUML図の例を次に示す。

パッケージ
Figure 12. パッケージ

上記UML図を別の表現で表した例を示す。

パッケージ
Figure 13. パッケージ

パッケージ間の依存関係は破線の矢印で表す。

パッケージ
Figure 14. パッケージ

参考文献

OMG (2017) OMG Unified Modeling Language