コンポーネント図とデプロイメント図は、ソフトウェアシステムの異なる側面をモデル化するために、統一モデリング言語(UML)で使用される2つの図です。それぞれ異なる目的を持ち、システム設計および実装の異なる側面に焦点を当てています。
-
コンポーネント図
- 目的:コンポーネント図は、主にソフトウェアシステムのコンポーネントおよびそれらの関係性に基づいて、その高レベルな構造を表現するために使用されます。システムの構成とモジュール化に焦点を当てています。
- 要素:コンポーネント図には、コンポーネント、インターフェース、コネクタ、依存関係が含まれます。
- コンポーネント:これらはシステムの主要な構成要素またはモジュールを表します。クラス、パッケージ、あるいは完全なサブシステムなど、物理的または論理的なエンティティです。
- インターフェース:これらは、コンポーネント同士が相互にやり取りするために公開する契約やAPIを定義します。
- コネクタ:コネクタは、コンポーネントがどのように相互にやり取りまたは通信するかを示します。例として、関連、依存関係、集約があります。
- 利用ケース:コンポーネント図は設計段階で、システムのアーキテクチャ、コンポーネント間の関係性、およびインターフェースを説明するために使用されます。システムの構造とその構成方法を理解するのに役立ちます。

デプロイメント図
-
- 目的:デプロイメント図は、ソフトウェアコンポーネントの物理的デプロイメントおよびそれらがハードウェアや他のソフトウェア要素とどのように関係するかに焦点を当てます。サーバー、ノード、通信経路などを含むシステムのデプロイメントアーキテクチャをモデル化するために使用されます。
- 要素:デプロイメント図には、ノード、アーティファクト、関連が含まれます。
- ノード:これらは、サーバー、ワークステーション、ルーターまたはプリンターなどのデバイスを含む、ハードウェアまたはソフトウェア処理要素を表します。
- アーティファクト:アーティファクトは、ノードにデプロイされた実際のソフトウェアコンポーネントやファイルを指します。実行可能ファイル、ライブラリ、データベースなどが含まれます。
- 関連:関連は、ノードとアーティファクトの間の関係を示し、どのコンポーネントがどのノードにデプロイされているかを示します。
- 利用ケース:デプロイメント図は通常、実装段階およびシステムデプロイ時に使用されます。ソフトウェアコンポーネントがサーバー、ネットワーク、その他のリソースを含む物理インフラストラクチャ上でどのように配布されるかを計画および可視化するのに役立ちます。

コンポーネント図とデプロイメント図の比較
以下の表は、UMLにおけるコンポーネント図とデプロイメント図の主な違いと目的を強調しています。コンポーネント図はソフトウェアコンポーネントの論理的構造と組織に焦点を当てますが、デプロイメント図はそのコンポーネントがハードウェアノード上に物理的にデプロイされる点に焦点を当てます。
| 側面 | コンポーネント図 | デプロイメント図 |
|---|---|---|
| 目的 | 高レベルなソフトウェア構造を表現する | ソフトウェアコンポーネントの物理的デプロイメントをモデル化する |
| 焦点 | コンポーネントの論理的構成と関係性 | ハードウェアおよびノード上の物理的デプロイ |
| 主要な要素 | – コンポーネント(例:クラス、パッケージ、サブシステム) | – ノード(例:サーバー、ワークステーション) |
| – インターフェース(例:契約、API) | – アーティファクト(例:ファイル、データベース) | |
| – コネクタ(例:関連、依存関係) | – 関連(デプロイ関係を示す) | |
| ユースケース | – 設計段階:システムアーキテクチャと構造 | – 実装段階:デプロイ計画 |
| – コンポーネントの関係性とインターフェースを図示する | – ハードウェア上のコンポーネントの配置を可視化する | |
| 抽象度 | 高レベルの抽象 | 低レベルの抽象 |
| 表記法 | コンポーネント、インターフェース、コネクタ | ノード、アーティファクト、関連 |
| 表現される関係 | 依存関係、関連、集約など | デプロイ関連、コンポーネントからノードへのマッピング |
| 例のシナリオ | ソフトウェアモジュールおよびそれらの | Webサーバーソフトウェアの |
| 銀行アプリケーション内の相互作用 | コンポーネントが物理サーバーにデプロイされる様子 |
要約
コンポーネント図は、システム内のソフトウェアコンポーネントの高レベルな構造と組織に注目するのに対し、デプロイメント図は、これらのコンポーネントがハードウェアやノードに物理的に配置される方法に注目する。両方の図は、ソフトウェア開発の異なる段階において価値があり、システム設計およびアーキテクチャに関する異なる視点を提供する。











