UML(Unified Modeling Language)は、システムの構造や振る舞いを表すためのモデリング言語です。図の名前を並べて覚える前に、「何を確認したい図か」を区別しましょう。単に箱と線で描いた構成図がすべてUMLになるわけではありません。
まず押さえる5つの図
| 確認したいこと | 図 | 読み取る中心 |
|---|---|---|
| クラスと関係 | クラス図 | 属性・操作・関連・一般化 |
| メッセージの順序 | シーケンス図 | 誰から誰へ、どの順に送るか |
| 外部の役割と機能 | ユースケース図 | アクターとシステムの振る舞い |
| 処理や業務の流れ | アクティビティ図 | アクション・分岐・並行処理 |
| イベントによる状態変化 | ステートマシン図 | 状態と遷移 |
クラス図:静的な構造を読む
クラス名・属性・操作と、クラス間の関係を表します。一般化は白抜き三角形を上位側へ向け、集約は白いひし形、コンポジションは黒いひし形を全体側に置きます。多重度の1は1個、0..1は0または1個、0..*は0個以上です。関連の端に付いた多重度は、反対側の1インスタンスに対応する数として読みます。

シーケンス図:時間順のやり取りを読む
相互作用に参加するライフラインと、メッセージの送受信順序を表します。一般に上から下へ時間が進みます。生成や消滅の記号が示されていない場合、線の始まりと終わりだけでオブジェクトの実際の寿命全体を断定しません。

ユースケース図:誰がどの機能を使うか
アクターはシステム外部の役割で、人間に限らず外部システムも含みます。ユースケースは、その役割に価値を提供するシステムの振る舞いです。内部の細かな処理順序を描く図とは区別します。includeは別の振る舞いを含む関係、extendは基本のユースケースに拡張を加える関係です。

アクティビティ図:分岐や並行処理を読む
業務や処理の流れを、アクションとフローで表します。フローチャートに似ていますが、並行処理やオブジェクトの流れもモデル化できます。黒丸を含む二重丸のアクティビティ終了と、丸に×のフロー終了は違います。フロー終了はその流れだけを終え、他の流れは継続できます。

ステートマシン図:状態とイベントを読む
対象が持つ状態と、イベントや条件によって起きる遷移を表します。注文の「受付・支払済・発送済」などを考えると、処理手順を表すアクティビティ図との違いが分かります。

その他の構造図も用途で整理する
オブジェクト図:特定の時点のインスタンスと、その間のリンクを表します。クラスの型そのものを定義する図とは区別します。

コンポーネント図:ソフトウェア部品と、それらが提供・要求するインタフェースや依存関係を表します。

パッケージ図:モデル要素をパッケージへまとめ、パッケージ間の依存などを表します。

配置図:処理ノードや実行環境と、配置される成果物などの関係を表します。

複合構造図:構造化された要素の内部にある部分、ポート、コネクタなどを表します。

UMLには、モデルの用途に合わせて拡張するプロファイルを表すプロファイル図もあります。構造図は、要素の構成や関係に注目する図として整理しましょう。
その他の相互作用図
コミュニケーション図:参加者のリンクとメッセージに注目し、番号などで順序を示します。

タイミング図:時間の経過に対する状態や値の変化、時間制約に注目します。

相互作用概要図:複数の相互作用を、制御の流れとして俯瞰します。ユースケース図をそのまま時系列で並べる図という意味ではありません。

理解を確かめる確認問題
オブジェクト間のメッセージの送受信を、時間順に確認したいときに使う図はどれでしょうか?
解答・解説を見る
シーケンス図です。クラス図は静的な構造、ユースケース図は外部の役割とシステムの振る舞いを確認するために使います。
既存図解の参照元:IT専科:class、IT専科:object、IT専科:component、IT専科:package、IT専科:deployment、Lucidchart、IT専科:activity、IT専科:usecase、IT専科:state_machine、IT専科:sequence、IT専科:communication、IT専科:timing、IT専科:interaction_overview

コメント