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

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