ソフトウェアコンポーネントとは、特定の機能をカプセル化したソフトウェアのモジュール単位である。[ 1 ]コンポーネントに求められる特性は、再利用性と保守性である。[ 1 ]
コンポーネントを使用することで、ソフトウェア開発者はあらゆる側面についてコードを記述するのではなく、信頼性の高い部品を組み合わせてソフトウェアを組み立てることができます。これにより、実装はカスタム構築というよりも、工場での組み立て作業に近くなります。
コンポーネントの望ましい特性には、以下のようなものが含まれますが、これらに限定されません。
一部のコンポーネントは、ソフトウェアシステムを構築する組織またはチームによって社内で構築されます。一部はサードパーティ製で、他の場所で開発され、ソフトウェアシステムに組み込まれます。[ 2 ]
大規模システムの場合、コンポーネントベースの開発は、複雑さを管理するための規律あるプロセスを促進します。[ 3 ]
一部のコンポーネントは、よく知られた方法で利用できるフレームワーク技術に準拠しています。例としては、CORBA、COM、Enterprise JavaBeans、および.NET Frameworkなどがあります。[ 4 ] [ 5 ]

コンポーネント設計は、多くの場合、視覚的にモデル化されます。統一モデリング言語(UML)2.0では、コンポーネントは長方形で表され、インターフェースは、提供されるインターフェースを示す場合はロリポップ、インターフェースの使用を示す場合はソケットで表されます。
再利用可能なソフトウェアコンポーネントの考え方は、1968年のNATOソフトウェアエンジニアリング会議でのダグラス・マキロイのプレゼンテーションで提唱されました。 [ 6 ](この会議の目的の1つは、当時いわゆるソフトウェア危機を解決することでした。)1970年代、マキロイはこの考え方をUnixオペレーティングシステムにパイプライン機能を追加することで実践しました。
ブラッド・コックスは1980年代にソフトウェアコンポーネントの概念を洗練させた。[ 7 ]彼はObjective-Cプログラミング言語を発明することで、再利用可能なサードパーティコンポーネントのインフラストラクチャと市場を構築しようと試みた。[ 8 ]
IBMは1990年代初頭にシステムオブジェクトモデル(SOM)を導入した。 [ 9 ]
マイクロソフトは1990年代初頭にコンポーネントオブジェクトモデル(COM)を導入しました。マイクロソフトはCOM上に、分散コンポーネントオブジェクトモデル(DCOM)、オブジェクトリンクおよび埋め込み(OLE)、ActiveXなど、多くのドメイン固有のコンポーネント技術を構築しました。
ソフトウェアコンポーネントの現代的な概念は、主にStepstoneのBrad Coxによって定義され、=> Objective-Cプログラミング言語
1990 年、IBM はシステム オブジェクト モデルを発明。1990 年、これに対応して、Microsoft は OLE 1.0 OLE カスタム コントロール (OCX) をリリース。