UML(Unified Modeling Language)とはシステム設計に用いられるモデリング言語で、クラス図やシーケンス図、アクティビティ図、コンポーネント図などから構成されます。この記事では、UMLの使い方をご紹介します。
UMLのオブジェクト図はクラス図で表現されたオブジェクト関係のある時点でのスナップショットを表現します。
UMLのシーケンス図はシステムの動的な振る舞いを表現します。
シーケンス図では、相互作用を実線の矩形として表す。長方形の左上の五角形の中に、キーワードsdと相互作用名を記述する。
記号 | 意味 |
---|---|
オペレーション(同期) | |
オペレーション(非同期) | |
リターン |
ライフラインは、長方形の「頭」と、それに続く垂直の線(破線であることが多い)で表される。
ExecutionSpecificationは、ライフライン上に細い長方形(灰色または白色)で表される。
DestructionEventは、オブジェクトの破壊をモデル化する。
DestructionEventは、ライフラインの最下部に×の形で描かれる。
結合フラグメント(複合フラグメント)は、シーケンス図に含まれる条件分岐や繰り返し処理などの相互作用をフレーム(枠)で囲んだものである。
相互作用演算子 | 説明 |
---|---|
alt | altは条件分岐を表す。振る舞いの選択肢であるフレームを複数並べることができ、各フレームにガードと呼ばれる条件式を記述する。条件式が真であるフレームがひとつだけ実行される。いわゆる、IF THEN - ELSE IF - END IF形式である。 |
opt | optは条件分岐を表す。フレームにガードと呼ばれる条件式を記述する。条件式が真の場合に振る舞いが実行される。altと異なり、フレームはひとつのみ存在し、振る舞いを実行するか否かの2択である。いわゆる、IF THEN - END IF形式である。 |
ref | refは参照を表す。フレームの中には別途定義した相互作用名を記述する。 |
UMLコミュニケーション図は、クラスが協調して共通の目的を達成する振る舞いをモデリングします。
UML 1.x ではコラボレーション図と呼ばれていました。
コミュニケーション図の内容はシーケンス図とほぼ同じです。時系列の流れを中心にした表記(シーケンス図)とクラス間の関係を中心にした表記(コミュニケーション図)の違いです。
UMLの状態図はオブジェクトの状態遷移を表現します。
状態にはイベントとアクションを記述することもできます。イベントには次のようなものがあります。
イベント | 意味 |
---|---|
entry | 他の状態から遷移したきたときに実行する |
exit | 他の状態へ遷移するときに実行する |
do | 状態が続いているときに実行する |
UMLアクティビティ図は、処理の流れを表します。構造化設計のフローチャートやデータフロー図 (Data Flow Diagram: DFD) に相当します。
名前 | 意味 | 表記法 |
---|---|---|
初期ノード | ダイアグラムの開始地点 | ● |
最終ノード | ダイアグラムの終了地点。複数の終了地点が存在してもよい。 | |
アクティビティ | 実行する処理 | |
フロー | 処理の流れを表す矢印 | → |
フォーク | 並列処理の開始 | |
ジョイン | 並列処理の終了 | |
条件 | フローに付ける条件。条件を満たした場合にのみ次の処理に進む。 | [条件] |
決断 | 分岐地点。分岐先それぞれに条件を明示する。 | |
併合 | 複数のフローの合流点 | |
ノート | 注釈(コメント) |
UMLのコンポーネント図 (component diagram) では、ソフトウェアコンポーネント間の依存関係を表します。
<<component>>
コンポーネント名 <<ステレオタイプ>> |
<<required interface>>
外部に対して要求しているインタフェース <<provided interface>> 外部に対して提供しているインタフェース |
ステレオタイプは省略することができます。次にコンポーネント図で使われる主なステレオタイプを示します。
ステレオタイプ | 意味 |
---|---|
application | アプリケーション |
infrastructure | セキュリティ、永続性、ミドルウェアといったシステムレベルのサービスを実装するコンポーネント |
database | データベース |
UI | ユーザインタフェース |
<<component>>というステレオタイプを記述する代わりに、アイコンで表すこともできます。
コンポーネント名 <<ステレオタイプ>> |
UMLの配置図 (deployment diagram) では、ノードとコンポーネントの物理的な配置を表す。
配置図は、配置対象の内側にコンポーネントの図を入れて表現する。
配置対象とコンポーネントを依存関係<<deploy>>で表現することもできる。
コンポーネントを配置対象内にテキストリストで表現することもできる。
ノードは、直方体を立体的に描いたような図で表される。
ネットワーク構造を定義するために、通信経路を通じてノード同士を相互に接続させることができる。アプリケーションサーバー(AppServer)とデータベースサーバー(DBServer)が接続されている場合、UML配置図では下記のように表すことができる。
とくに明示されていない限り、ノードは論理的な存在である。2つのノードがある場合でも、2台のホストコンピュータの存在を表すわけではない。1台のホストコンピュータが2つのノード(例えば、アプリケーションサーバとデータベースサーバ)を兼ねている場合もある。
ステレオタイプ <<device>> を付けて、ノードが物理的なものであることを表すこともできる。
上記のUML配置図の場合、AppServerは物理的なノードを表す。DBServerはステレオタイプで明示されていないので、AppServerとは別の物理ノードかもしれないし、AppServerと同一の物理ノードかもしれない。
次にUML配置図で使われる主なステレオタイプを示します。
ステレオタイプ | 意味 |
---|---|
<<device>> | 物理的なデバイス |
<<executionEnvironment>> | 実行環境 |
<<artifact>> | 成果物 |
<<deploy>> | 配置関係 |
<<manifest>> | 成果物の構成要素 |
<<deployment spec>> | 配置仕様 |
上記はUML配置図で慣例的に使われるステレオタイプですが、独自のステレオタイプを定義することもできます。たとえば、通信経路にステレオタイプを付ける場合、<<HTTP>>や<<TCP/IP>>、<<IIOP>>、<<RS-232C>>、<<Ethernet>>といったステレオタイプになるでしょう。
executionEnvironmentは、中に配置されたコンポーネント(実行可能な成果物)のための実行環境を提供するノードです。
deployment spec は、ノードに配置されたコンポーネント成果物の実行パラメータを決めるプロパティのセットを指定します。
パッケージは次のように表す。
パッケージ内の要素を表す場合、パッケージは次のように表す。
または、次のように表す。
入れ子になったパッケージの構造を表すUML図の例を次に示す。
上記UML図を別の表現で表した例を示す。
パッケージ間の依存関係は破線の矢印で表す。
OMG (2017) OMG Unified Modeling Language