Los componentes software surgen, en cierta medida de la necesidad de desarrollar sistemas mediante el ensamblaje de módulos independientes ya existentes. Analizando las definiciones de qué es un componente, por parte de Szyperski , en WSBC (WebSphere Business Components) de IBM , y del Instituto de Ingeniería de Software (SEI, del inglés Software Engineering Institute), se puede afirmar que un componente, en esencia, es una unidad reutilizable que puede interoperar con otros módulos software por medio de sus interfaces, las cuales define desde donde se puede tener acceso a los servicios que este ofrece a los demás componentes.
Un componente puede presentarse en forma de código fuente o código objeto; puede estar escrito en lenguaje funcional, procedural u orientado a objetos y puede ser tan simple como un botón GUI o tan complejo como un subsistema