コンポーネントベースソフトウェアエンジニアリング(CBSE)は、コンポーネントベース開発(CBD )とも呼ばれ、疎結合かつ再利用可能なコンポーネントからソフトウェアシステムを構築することを目的としたソフトウェアエンジニアリングのスタイルです。これは、コンポーネント間の関心の分離を重視しています。[1] [2]
適切なコンポーネント粒度を見つけるために、ソフトウェアアーキテクトは開発者と連携してコンポーネント設計を継続的に反復する必要があります。アーキテクトは、ユーザーの要件、責任、そしてアーキテクチャの特性を考慮する必要があります。[3]
CBSEは、構造化プログラミングやオブジェクト指向プログラミングといった従来のパラダイムから発展したものですが、既存のコンポーネントを組み立てて統合することでソフトウェアを構築することに重点を置いています。通常、データと動作の両方をカプセル化するオブジェクトとは異なり、コンポーネントは明確に定義されたインターフェースを提供し、独立して展開できる高レベルの構成要素です。[4]
コンポーネント指向は、サービス指向アーキテクチャ(SOA)、マイクロサービス、 React、Angular、Vueなどの広く使用されているフロントエンド フレームワークを含む、多くの最新のソフトウェア フレームワークとアーキテクチャ スタイルの基盤となっています。

大規模なチームによって開発される大規模システムでは、CBSEのメリットを実現するために、規律ある文化とプロセスが必要です。[5]大規模システムでは サードパーティのコンポーネントが使用されることが多く、統合、ライセンス、ソフトウェア品質の問題が生じます。
システムは、統一モデリング言語(UML)を用いて視覚的に設計できます。各コンポーネントは長方形で表示され、インターフェースは、提供インターフェースを示すロリポップと、インターフェースの利用を示すソケットで示されます。このグラフィカルな表現は、コンポーネント間の関係性と依存関係を明確にするのに役立ちます。
コンポーネントベースのユーザビリティ テストは、コンポーネントがエンド ユーザーと直接対話するときに適用され、コンポーネントが再利用または置き換えられた場合でも機能とユーザー エクスペリエンスの両方が維持されることを保証します。
CBSE の原則は複数の領域にわたって使用されます。
コンポーネントベースの開発では保守性と再利用性が向上しますが、次のような課題も生じます。