Un componente es una unidad de software que realiza una función bien definida y posee una interfaz bien definida.
Un componente software posee interfaces especificadas contractualmente, pudiendo ser desplegado independientemente y puede interaccionar con otros componentes para formar un sistema.
Un interfaz es un punto de acceso a los componentes: permite a los clientes acceder a los servicios proporcionados por un componente.
La idea de dividir u organizar en trozos el software, o sea, dividirlo en componentes surge para reducir la complejidad del software. Así se permite la reutilización y se acelera el proceso de ensamblaje del software.
Los creadores de componentes pueden especializarse creando objetos cada vez mas complejos y de mayor calidad.
La interoperabilidad entre componentes de distintos fabricantes:
- Aumenta la competencia,
- Reduce los costes y,
- Facilita la construcción de estándares.
Por tanto, así el software se hace cada vez más rápido, de mejor calidad y a menor coste incluso de mantenimiento.
Un componente software también debe especificar sus necesidades para funcionar correctamente, lo que se denominan las dependencias de contexto:
- Interfaces requeridas
- Entorno de ejecución: máquina necesaria, sistema operativo a utilizar, etc.
En el entorno Java, contamos con los JavaBeans.