コンポーネント図とは何ですか?

UMLコンポーネント図は、オブジェクト指向システムの物理的側面をモデル化するために使用されます。コンポーネントベースのシステムを可視化、仕様化、文書化するだけでなく、前向きおよび逆方向のエンジニアリングを通じて実行可能なシステムを構築するためにも使用されます。コンポーネント図は、システムのコンポーネントに焦点を当てた特殊化されたクラス図であり、システムの静的実装ビューをモデル化するために使用されます。

Component Diagram Hierarchy

コンポーネント図の概要

コンポーネント図は、開発中の実際のシステムをさまざまな高レベルの機能に分解します。各コンポーネントはシステム内での明確に定義された目的を担当し、必要に応じて他の主要な要素とのみやり取りを行います。
Component Diagram Overview
上記の例は、より大きなコンポーネントの内部コンポーネントを示しています:
  • データ(口座番号および振込番号)は右側のポートを通じてコンポーネントに入り、内部コンポーネントで使用可能な形式に変換されます。右側のインターフェースは「提供インターフェース」と呼ばれます。これは、コンポーネントがその責任を果たすために必要なサービスを表しています。
  • その後、データはさまざまな接続を通じて他のコンポーネントへと渡され、左側のポートを通じて出力されます。左側のインターフェースは「要求インターフェース」と呼ばれます。これは、コンポーネントが提供するサービスを表しています。
  • 内部コンポーネントがより大きな「ボックス」で囲まれている点に注意が必要です。このボックスはシステム全体そのものである場合(その場合、右上にコンポーネント記号は表示されません)またはシステムのサブシステム/コンポーネントである場合(その場合、ボックスはコンポーネント自身を表します)です。

コンポーネント図の基本概念

コンポーネントは、システムのモジュール的な部分を表し、その内容をカプセル化し、環境内で置き換え可能な振る舞いを持つものです。UML 2では、コンポーネントは縦方向にスタックされたオプションのコンパートメントを持つ矩形として描かれます。UML 2におけるコンポーネントの高レベルな抽象的なビューは、以下の通りモデル化できます:
  1. コンポーネント名を含む矩形
  2. コンポーネントアイコンを含む矩形
  3. スタereotypeテキストおよび/またはアイコンを含む矩形
Appearance of a Component

インターフェース

以下の例に示すように、コンポーネントインターフェースには2種類があります:
提供インターフェース」という記号は、コンポーネントが提供するインターフェースを示しています。この「ラムネ瓶」記号は、インターフェース分類子の実装関係を簡略化して表す記法です。
要求インターフェース」という記号は、コンポーネントが必要とするインターフェースを示しています(いずれの場合も、インターフェース名は記号の近くに配置されます)。
Required and Provided Interfaces

コンポーネント図の例 – インターフェースの使用(注文システム)

Component Diagram Example with Interfaces

サブシステム

サブシステム分類子は、コンポーネント分類子の特殊化されたバージョンです。したがって、サブシステムの表記要素は、コンポーネント表記と同一のルールを継承します。唯一の違いは、サブシステムの記号要素が「component」の代わりにキーワード「subsystem」を使用することです。
Component Diagram with Subsystem

ポート

ポートは、コンポーネントまたはシステムの端縁に沿って正方形で表されます。通常、コンポーネントの必要なインターフェースおよび提供されるインターフェースを公開するために使用されます。
Component Diagram with Port

関係

グラフィカルに、コンポーネント図は頂点と弧の集合であり、通常、コンポーネント、インターフェース、および依存関係、集約、制約、一般化、関連、実現などの関係を含みます。また、ノートや制約を含むこともあります。
関係 記号
関連:

  • 関連は、型付きインスタンスの間に発生しうる意味的関係を指定します。
  • 少なくとも2つの端を持ち、それぞれが属性によって表され、各端は他の端の型に接続されています。複数の端が同じ型を持つこともできます。

Component Diagram: Association




構成:

  • 構成は、インスタンスが最大で1つの複合体に含まれることを要求する、強力な集約の形です。
  • 複合体が削除された場合、その部品も通常削除されます。

Component Diagram: Composition




集約:

  • 一方の端が共有集約としてマークされた関連の一種であり、それにより共有集約を持つことを意味します。

Component Diagram: Aggregation




制約:

  • 要素の特定の意味を宣言するために、自然言語テキストまたは機械可読言語で表現された条件または制限。

Component Diagram: Constraint




依存関係:

  • 1つ以上のモデル要素が、その仕様または実装のために、他のモデル要素を必要としていることを示す関係。
  • これは、依存要素の完全な意味が、供給者要素の定義に意味的または構造的に依存していることを意味する。

Component Diagram: Dependency




一般化:

  • より一般的な分類子とより具体的な分類子の間の分類関係。
  • より具体的な分類子のすべてのインスタンスは、間接的により一般的な分類子のインスタンスでもある。
  • したがって、より具体的な分類子は、より一般的な分類子から特徴を継承する。

Component Diagram: Generalization




ソースコードモデリング

  • 前向きまたは逆方向のエンジニアリングを通じて関心のあるソースコードファイルの集合を特定し、ファイルとして構成されたコンポーネントとしてモデル化する。
  • より大きなシステムでは、パッケージを使用してソースコードファイルのグループを表示する。
  • ソースコードファイルのバージョン番号、作成者、最終更新日などの情報を表すためにタグ付き値を含めるように検討する。これらのタグ付き値の値を管理するためにツールを使用する。
  • これらのファイル間のコンパイル依存関係をモデル化するために依存関係を使用する。同様に、これらの依存関係の生成と管理を支援するツールを使用する。
コンポーネントの例 – Javaソースコード
Component Diagram Example: Java Source Code
コンポーネント図の例 – バージョン管理付きC++コード
Component Diagram Example: C++ Code with Versioning

実行可能リリースのモデリング

  • モデル化したいコンポーネントの集合を特定する。これは通常、ノード上の一部またはすべてのコンポーネント、またはシステム内のすべてのノードに分散されたこれらのコンポーネントを含む。
  • この集合内の各コンポーネントのスタereotypeを検討する。ほとんどのシステムでは、異なるコンポーネントタイプが少数(例:実行可能ファイル、ライブラリ、テーブル、ファイル、文書)存在する。これらのスタereotypeに対して視覚的ヒント(ヒント)を提供するために、UMLの拡張メカニズムを使用できる。
  • この集合内の各コンポーネントについて、その隣接コンポーネントとの関係を検討する。多くの場合、あるコンポーネントによってエクスポートされたインターフェース(実装)が、他のコンポーネントによってインポートされる(使用される)ことを含む。システム内の接合部を明示したい場合は、これらのインターフェースを明示的にモデル化する。より高レベルの抽象化を望む場合は、コンポーネント間の依存関係のみを表示することで、これらの関係を排除する。
Component Diagram for Modeling Executable Release

物理データベースモデリング

  • 論理データベーススキーマを表すモデル内のクラスを特定する。
  • これらのクラスをテーブルにマッピングする戦略を選択する。また、データベースの物理的配置も考慮する必要がある。マッピング戦略は、デプロイされたシステム内でデータをどこに永続化したいかによって影響を受ける。
  • マッピングを可視化、指定、構築、文書化するために、テーブルとして構成されたコンポーネントを含むコンポーネント図を作成する。
  • 可能な限り、ツールを使用して論理設計を物理設計に変換するのを支援する。
Component Diagram for Modeling Physical Database


今すぐUMLコンポーネント図を描いてみましょう

今、コンポーネント図とは何か、そしてどのように描くかを学びました。自分の図を作成する時です。無料の Visual Paradigm Community Editionという無料のUMLツールを入手し、無料の コンポーネント図ツールを使って自分だけの図を作成しよう。使いやすく、直感的です。
  1. 統合モデリング言語とは何か?
  2. プロフェッショナルなUMLツール
  3. Visual Paradigm. (n.d.). コンポーネント図の描き方? Visual Paradigm. https://www.visual-paradigm.com/support/documents/vpuserguide/94/2581/7292_drawingcompo.html 42.
  4. Visual Paradigm. (2018年5月11日). コンポーネント図とは何か? Visual Paradigm. https://www.visual-paradigm.com/guide/uml-unified-modeling-language/what-is-component-diagram/ 43.
  5. Visual Paradigm. (n.d.). UMLにおけるコンポーネント図の描き方? Visual Paradigm. https://www.visual-paradigm.com/tutorials/how-to-draw-component-diagram-in-uml/ 44.
  6. Visual Paradigm. (n.d.). コンポーネント図 – UML 2 図 – UMLモデリングツール。 Visual Paradigm. https://www.visual-paradigm.com/VPGallery/diagrams/Component.html 45.
  7. Visual Paradigm. (n.d.). Visual Paradigmにおけるコンポーネント図。 Visual Paradigm. https://www.visual-paradigm.com/support/documents/vpuserguide/94/2581_componentdia.html 46.
  8. Visual Paradigm Community Circle. (2018年5月11日). 7. コンポーネント図。 Visual Paradigm. https://circle.visual-paradigm.com/docs/uml-and-sysml/component-diagram/ 47.
  9. Visual Paradigm Online. (n.d.). 無料のコンポーネント図ツール。 Visual Paradigm. https://online.visual-paradigm.com/diagrams/solutions/free-component-diagram-tool/ 48.
  10. Visual Paradigm Online. (n.d.). コンポーネント図チュートリアル。 Visual Paradigm. https://online.visual-paradigm.com/tutorials/component-diagram-tutorial/ 49.
  11. Visual Paradigm. (2022年9月2日). UMLクラス図チュートリアル。 Visual Paradigm. https://www.visual-paradigm.com/guide/uml-unified-modeling-language/uml-class-diagram-tutorial/ 50.
  12. Visual Paradigm Online. (n.d.). オンラインUML図ツール。 Visual Paradigm. https://online.visual-paradigm.com/diagrams/features/uml-tool/ 51.

コメントを残す