コンポーネント指向(Component-Based Development,CBD)とは、ソフトウェアを機能又はその他何かの単位で部品に分割し、得られたソフトウェア部品を組み合わせることによって開発を進めるソフトウェア開発方法です。
クラスライブラリやフレームワークに代表されるオブジェクト指向(OOA)が効果的な再利用を実現できなかったことから、 それらの研究を継承・発展させる形で登場してきたコンポーネント指向ソフトウェア開発は、以下のような効果をもたらすと期待されています。
本トピックは、まずコンポーネントの定義を明確にして、それからコンポーネント指向開発の説明を展開します。
コンポーネントというのは、部品、成分、構成要素などの意味をもつ英単語(Component)です。その意味で様々な分野で使われていますので、ITの分野では、システム・コンポーネントや、ハードウェア・コンポーネント、ソフトウェア・コンポーネン、ネットワーク・コンポーネントトといった場面があります。
ほかに意味の似た単語に「モジュール」(module)がありますが、違いとしては、「モジュールには、他の部品への接合部の仕様が標準化され、容易に追加や交換ができるような構成要素といった意味合いが込められることが多いのに対し、コンポーネントは単純に要素や部品一般のことを指すことが多い」とされています。。
ソフトウェア分野のコンポーネントとは、ある機能を実現するために部品化されたソフトウェア又はその構成要素のことで、ソフトウェア・コンポーネント(Software Component)の略です。
ソフトウェア分野で「モジュール」もよく使われますが、両者の違いとしては以下の見解が一般的です。
規模の大きさではなく枠組みとしては「コンポーネント>モジュール」の感じです。
コンポーネントには、実装部品とサービス部品の二つの見方があります、
前者は、GUI部品やEJBなどのプログラムに組み合わせて使うものを指し、後者は、業務機能やWebサービスなど必ずしも実装の実体とは限らないロジックプロセスの処理単位を指します。
下記の表にて各視点からふたつの見方の違いを説明します。
視点1:配置/ランタイム | 視点2:静的に/動的に | 視点3:物理/論理 | |
---|---|---|---|
実装部品 | 配置モデルのシステム構成要素 | 静的なアーキテクチャモデルのシステム構成要素 | 物理構成要素 |
サービス部品 | ランタイムモデルのシステム構成要素 | 動的なアーキテクチャモデルのシステム構成要素 | 論理構成要素 |
コンポーネントの実装技術はいかのようなものがあげられます、カッコ内にあるのはそのコンポーネント技術を開発した会社又は組織の名称です。