統一モデリング言語 (UML) におけるコンポーネント図(コンポーネントず)は、実装しようとするソフトウェアシステムやモジュール等の構造の概要の図で、コンポーネント(部品)とそのインターフェース、それらの依存関係などを表現する。

コンポーネント図の例。

概要 編集

物理的な構成要素とは、例えば、ファイル、ヘッダ、ライブラリモジュール、実行可能ファイルやパッケージなどである[疑問点]。コンポーネント図では、あらゆるシステムの構造を設計、記述できる。

規模が大きなプロジェクトにおいて、システム全体を俯瞰する際に有用である。

UML 1.xでは大規模なシステム開発に十分に対応しきれなかった反省点から、UML 2.0以降ではコンポーネント図は大幅に改訂されている。

以下、原則としてUML 2.0に即した内容となっている。

構成要素 編集

コンポーネント 編集

コンポーネントは単純な矩形で表現する(1.xでは長方形から2つの小さな長方形が左側に突き出したかたちで表現される)。2.0では、1.xで使用していた図を、ステレオタイプ<<component>>の代替として長方形内の右上に描画することができる。

ポート 編集

ポートは、暗黙的または明示的に、サブコンポーネントから提供されているインタフェースに委譲していることを表現することができる。

ポートは、コンポーネントの一辺から突き出した四角で表現する。

インタフェース 編集

UMLではコンポーネントはクラスのサブタイプとされており、そのインタフェースは、クラス図と似たかたちで四角の区画内にインタフェースを列挙することができる。ステレオタイプ<<provided interfaces>>の下に記述する。そのコンポーネントが必要とするインタフェースは、ステレオタイプ<<required interfaces>>の下に記述する。

また別の表現方法として、コンポーネントが提供するインタフェースをロリポップを使って表現する方法がある。ロリポップは、白抜きの丸で表現し、関連するコンポーネントに線でつないで表現する。ロリポップには、インタフェース名を記述する。

コンポーネントが必要とするインタフェースに関しては、ソケットを使って表現する。ソケットは半円で表現し、それとコンポーネントを線でつなぐ(ソケットは2.0から導入された)。

更に別の方法として、インタフェースをクラス図と同様の形式で記述し、それに対して依存の矢印を引いて表現することができる。

関係 編集

関係とは、論理的な連結の種類を総称する用語である。コンポーネント図では、以下の関係を表現できる。

依存 編集

コンポーネント図では、コンポーネント同士の依存関係を示すことができる。

依存関係のステレオタイプには、包含していることを示す<<reside>>と実現する生産物を示す<<implement>>がある。

そのコンポーネント必須のインタフェースへの依存関係は、破線ではなく実線で表現する。また、末端は矢印ではなくロリポップを覆う半円で表現する。

委譲 編集

委譲は、親コンポーネントと子コンポーネントとの関係を表現できる。

親コンポーネントのどのインタフェースが子コンポーネントのどのインタフェースに委譲しているのか、また親コンポーネントのどの必須インタフェースが子コンポーネントのどの必須インタフェースとなっているのかを記述できる。

それぞれ、親コンポーネントのインタフェースから子コンポーネントのインタフェースへの矢印、子コンポーネントの必須インタフェースから親コンポーネントの必須インタフェースへの矢印で表現する。

関連項目 編集

外部リンク 編集