UMLの図

📢 この記事は gemini-2.5-flash によって翻訳されました

図 (Diagram) は要素のグループをグラフィカルに表現したものだよ。ほとんどの場合、図は頂点 (物事を表す) と弧 (関係を表す) の連結グラフとして描かれるんだ。システムを視覚化するために、さまざまな視点から図を描けるから、図はシステムの投影なんだね。

UML 2.0 は13種類の図を提供しているよ。クラス図、オブジェクト図、ユースケース図、シーケンス図、コミュニケーション図、ステートマシン図、アクティビティ図、コンポーネント図、合成構造図、配置図、パッケージ図、インタラクション概要図、タイミング図だね。シーケンス図、コミュニケーション図、インタラクション概要図、タイミング図はまとめてインタラクション図と呼ばれるんだ。

(一) クラス図

クラス図 (Class Diagram) は、オブジェクト、インターフェース、コラボレーション、そしてそれらの関係を示すものだよ。オブジェクト指向システムのモデリングで最もよく作られる図がクラス図なんだ。クラス図はシステムの静的な設計ビューを表してくれるんだね。アクティブなクラスを含むクラス図は、システムの静的なプロセスビューを示してくれるよ。

クラス図には通常、次の内容が含まれるよ。

  1. クラス
  2. インターフェース
  3. コラボレーション
  4. 依存、汎化、関連の関係

クラス

例えば:

Student
+id: int
-name: String
#age: int
~borrow(): bool

+: public

-: private

#: protected

~: package

クラス図

クラス図には、注釈や制約を含めることもできるんだ。パッケージやサブシステムを含めることもできて、これらはどちらもモデル要素をより大きな塊にまとめるために使われるんだよ。

クラス図はシステムの静的な設計ビューをモデリングするために使うんだ。このビューは、主にシステムの機能要件、つまりシステムがエンドユーザーに提供するサービスをサポートするよ。システムの静的な設計ビューをモデリングするときは、通常、次の3つの方法のいずれかでクラス図を使うんだ。

  1. システムの語彙をモデリングする
  2. 単純なコラボレーションをモデリングする
  3. 論理データベーススキーマをモデリングする

(二) オブジェクト図

オブジェクト図 (Object Diagram) は、ある時点におけるオブジェクトのグループとそれらの関係を示すものだよ。クラス図で確立された物事のインスタンスの静的なスナップショットを記述するんだ。オブジェクト図には通常、オブジェクトとリンクが含まれるよ。

オブジェクト名:クラス名
属性

オブジェクト図

クラス図と同じように、オブジェクト図はシステムの静的な設計ビューまたは静的なプロセスビューを示してくれるんだ。

(三) ユースケース図

ユースケース図 (Use Case Diagram) は、ユースケースのグループ、アクター (Actor)、そしてそれらの関係を示すものだよ。

ユースケース図には通常、次の内容が含まれるよ。

  1. ユースケース
  2. アクター
  3. ユースケース間の拡張関係 <<extend>> と包含関係 <<include>>、アクターとユースケース間の関連関係、ユースケース同士およびアクター同士の汎化関係。
  • 包含関係

    あるユースケースが別のユースケースを含むこと。

    基本ユースケース –<<include>>–> 包含されるユースケース

  • 拡張関係

    あるユースケースが実行されるときに、特別な状況やオプションの状況が発生する可能性があるんだ。この状況がそのユースケースの拡張ユースケースにあたるんだね。

    拡張ユースケース –<<extend>>–> 基本ユースケース

ユースケース図

ユースケース図は、システムの静的なユースケースビューをモデリングするために使うんだ。このビューは、主にシステムの振る舞い、つまりシステムがその周辺環境のコンテキストで提供する外部から見えるサービスをサポートするよ。

システムの静的なユースケースビューをモデリングするときは、次の2つの方法でユースケース図を使うことができるよ。

  1. システムのコンテキストをモデリングする
  2. システムの要件をモデリングする

(四) インタラクション図

インタラクション図は、システムの動的な側面をモデリングするために使うよ。インタラクション図は1つのインタラクションを表していて、オブジェクトのグループとそれらの関係から構成され、それらの間でやり取りされる可能性のあるメッセージを含むんだ。インタラクション図は、シーケンス図、コミュニケーション図、インタラクション概要図、タイミング図として表現されるよ。それぞれ異なる目的を持っていて、異なる状況に適用できるんだ。シーケンス図はメッセージの時間順序を強調するインタラクション図で、コミュニケーション図はメッセージを受け渡しするオブジェクトの構造的な組織を強調するインタラクション図、インタラクション概要図は制御フローを強調するインタラクション図だよ。

インタラクション図には一般的に、オブジェクト、リンク、メッセージが含まれるんだ。

シーケンス図

シーケンス図 (Sequence Diagram) は、シナリオ (Scenario) をグラフィカルに表現したものだよ。時間順序で整理されたオブジェクト間のインタラクション活動を記述するんだ。シーケンス図を作成するときは、まずインタラクションに参加するオブジェクトを図の上部に水平方向に並べるんだ。通常、インタラクションを開始するオブジェクトを左側に、下位のオブジェクトを右側に配置するよ。それから、これらのオブジェクトが送受信するメッセージを垂直方向に時間順に上から下へと配置するんだ。こうすることで、時間の経過とともに制御フローがどのように流れるか、明確に視覚化できるんだね。

シーケンス図

シーケンス図には、コミュニケーション図とは異なる2つの特徴があるよ。

  1. シーケンス図にはオブジェクトのライフラインがあるんだ。ライフラインは垂直の破線で、あるオブジェクトが一定期間存在することを示すんだよ。
  2. シーケンス図には制御のフォーカスがあるんだ。制御のフォーカスは細長い長方形で、あるオブジェクトがアクションを実行するのにかかる期間を表すんだ。直接実行する場合もあれば、下位プロセスを通じて実行する場合もあるよ。長方形の上部はアクションの開始を、下部はアクションの終了を示すんだ。

コミュニケーション図

コミュニケーション図 (Communication Diagram) は、メッセージを送受信するオブジェクトの構造的な組織を強調するもので、以前のバージョンではコラボレーション図とも呼ばれていたんだ。コミュニケーション図は、インタラクションに参加するオブジェクトの組織を強調するよ。コミュニケーション図を作成するには、まずインタラクションに参加するオブジェクトを図の頂点として配置し、次にこれらのオブジェクトを接続するリンクを図の弧として表現するんだ。最後に、オブジェクトが送受信するメッセージでこれらのリンクを装飾するんだね。こうすることで、協調するオブジェクトの構造的な組織のコンテキストで制御フローを観察する明確な視覚的な軌跡を提供してくれるんだ。

コミュニケーション図

コミュニケーション図には、シーケンス図とは異なる2つの特性があるよ。

  1. コミュニケーション図にはパスがあるんだ。あるオブジェクトが別のオブジェクトとどのようにリンクしているかを示すために、リンクの末端にパスのステレオタイプを付加できるんだよ。
  2. コミュニケーション図には順序番号があるんだ。メッセージの時間順序を表すために、メッセージに数字のプレフィックスを付けることができるんだ。制御フローでは、新しいメッセージごとに順序番号が単調に増えるよ。ネストを使用するために、小数点付きの番号を使うこともできるんだね。

シーケンス図とコミュニケーション図は同型で、互いに変換できるんだ。

(五) ステートマシン図

ステートマシン図 (State Diagram) は、状態、遷移、イベント、活動から構成されるステートマシンを示すものだよ。ステートマシン図はシステムの動的なビューに焦点を当てていて、インターフェース、クラス、コラボレーションの振る舞いのモデリングにおいて特に重要で、オブジェクトの振る舞いのイベント順序を強調するんだ。

ステートマシン図には通常、単純状態と複合状態、遷移 (イベントとアクション) が含まれるよ。

状態

状態は、観察できるシステムの振る舞いのパターンだよ。1つの状態はシステムの1つの振る舞いパターンを表すんだ。状態はシステムがイベントにどのように応答するかを規定するんだね。システムのイベントへの応答は、1つ (または一連の) アクションを実行することでも、システム自体の状態のみを変更することでも、状態を変更してアクションを実行することでもあり得るんだ。

ステートマシン図で定義される主な状態は、初期状態 (初態)、最終状態 (終態)、中間状態だね。初期状態は黒い丸で、最終状態は黒い丸の外にさらに丸が描かれたもので表されるんだ。ステートマシン図における状態は、角丸四角形で表現されるよ。

状態間には状態遷移があって、矢印付きの線で表されるんだ。矢印付きの線上のイベントが発生すると、状態遷移が始まるんだね。1つのステートマシン図には1つの初期状態しか持てないけど、最終状態はなくてもいいし、複数あっても大丈夫だよ。

ステートマシン図で使われる主な記号

3つの標準イベント:

  • entry: エントリアクション、状態に入った時にすぐに実行されるよ。
  • exit: イグジットアクション、状態から出るときにすぐに実行されるよ。
  • do: 内部活動、限られた時間を占有し、中断可能な作業だよ。

ステートマシン図 - 状態 - 例

上の図の例:

  • entry/turnON: この状態に遷移した時に、ライトを点けるアクションを実行するんだ。
  • do/blinkFivetimes: この状態にある間、ライトが5回点滅するんだ。
  • exit/turnOFF: この状態から遷移する時に、ライトを消すアクションを実行するんだ。

イベントと遷移

イベントは、ある特定の瞬間に発生する事柄で、システムにアクションを実行させたり (および) ある状態から別の状態へ遷移させたりする外部イベントの抽象化だよ。例えば、視聴者がテレビのリモコンを使う、ユーザーがマウスを動かす、マウスをクリックするなど、これらすべてがイベントなんだ。簡単に言えば、イベントはシステムにアクションを実行させたり (および) 状態を遷移させたりする制御情報なんだね。

状態遷移は通常イベントによってトリガーされるんだ。この場合、状態遷移を表す矢印の上に、遷移をトリガーするイベント式を記す必要があるんだよ。

矢印線上にイベントが明記されていない場合は、元となる状態の内部活動が完了した後、自動的に遷移がトリガーされることを意味するよ。イベント式の構文は次のとおりだよ。

イベント説明[ガード条件]アクション式

その中で、イベント説明の構文は:イベント名(パラメータリスト) だよ。

ガード条件 (または監視条件) はブール式だよ。イベント説明とガード条件を同時に使う場合、イベントが発生し、かつブール式が真である場合にのみ状態遷移が発生するんだ。ガード条件のみでイベント説明がない場合は、ガード条件が真である限り状態遷移が発生するよ。

ステートマシン図 - 遷移

遷移は2つの状態 (元の状態、目標状態) を含むよ。 イベント、ガード条件、アクション

イベントが遷移をトリガーするんだ。

活動 (アクション) は状態内で実行することもできるし、状態遷移時に実行することもできるんだ。

ステートマシン図 - 遷移 - 例

完了図

ステートマシン図

ステートマシン図を使ってシステムの動的な側面をモデリングできるよ。これらの動的な側面には、システムアーキテクチャのあらゆるビューに現れるあらゆる種類のオブジェクトのイベント順序に基づく振る舞いが含まれるんだ。これらのオブジェクトには、クラス (各アクティブクラス)、インターフェース、コンポーネント、ノードなどがあるよ。

システム、クラス、またはユースケースの動的な側面をモデリングするときは、通常、リアクティブなオブジェクトをモデリングするんだ。

(六) アクティビティ図

アクティビティ図 (Activity Diagram) は特殊なステートマシン図で、システム内のある活動から別の活動への流れを示すものだよ。アクティビティ図はシステムの動的なビューに焦点を当てていて、システムの機能モデリングにとって特に重要で、オブジェクト間の制御フローを強調するんだ。

アクティビティ図には一般的に、活動状態とアクション状態、遷移、オブジェクトが含まれるよ。

アクティビティ図は、分岐、マージ、フォーク、ジョインを表現できるんだ。

アクティビティ図

システムの動的な側面をモデリングするときは、通常、2つの方法でアクティビティ図を使うんだ。

  1. ワークフローをモデリングする
  2. 操作をモデリングする

(七) コンポーネント図

コンポーネント図 (Component Diagram) は、コンポーネント間の組織と依存関係を示すものだよ。コンポーネント図はシステムの静的な実装ビューに焦点を当てているんだ。これはクラス図と関連していて、通常、コンポーネントは1つ以上のクラス、インターフェース、またはコラボレーションにマッピングされるんだ。

コンポーネント図

(八) 配置図

配置図 (Deployment Diagram) は、オブジェクト指向システムの物理的な側面をモデリングするために使われる方法で、実行時処理ノードとそこに含まれるコンポーネント (成果物) の配置を示すものだよ。配置図はシステムの静的な配置ビューをモデリングし、コンポーネント図と関連しているんだ。通常、ノードは実行時に存在し、計算リソースを表す物理要素で、少なくとも何らかのコンテンツを持ち、しばしば処理能力を持ち、1つ以上のコンポーネントを含むんだ。ここで <<artifact>> は成果物を表しているよ。

配置図

まとめ

  • 静的モデリング:クラス図、オブジェクト図、ユースケース図

  • 動的モデリング:シーケンス図 (順序図、時系列図)、コミュニケーション図 (コラボレーション図)、ステートマシン図、アクティビティ図

  • 物理モデリング:コンポーネント図 (コンポーネント図)、配置図

インタラクション図:シーケンス図 (順序図、時系列図)、コミュニケーション図 (コラボレーション図)

Visits Since 2025-02-28

Hugo で構築されています。 | テーマ StackJimmy によって設計されています。