Un componente de software es una unidad modular de software que encapsula una funcionalidad específica. [1] Las características deseadas de un componente son la reutilización y la mantenibilidad . [1]
Los componentes permiten que el desarrollo de software ensamble software con piezas confiables en lugar de escribir código para cada aspecto; permitiendo que la implementación se parezca más a un montaje en fábrica que a una construcción personalizada.
Los atributos deseables de un componente incluyen, entre otros:
Algunos componentes los construye internamente la misma organización o equipo que crea el sistema de software . Algunos son de terceros , desarrollados en otros lugares y ensamblados en el sistema de software. [2]
Para sistemas a gran escala, el desarrollo basado en componentes fomenta un proceso disciplinado para gestionar la complejidad . [3]
Algunos componentes se ajustan a una tecnología marco que permite consumirlos de forma conocida. Los ejemplos incluyen: CORBA , COM , Enterprise JavaBeans y .NET Framework . [4] [5]
El diseño de componentes suele modelarse visualmente. En Unified Modeling Language (UML) 2.0, un componente se muestra como un rectángulo y una interfaz se muestra como una paleta para indicar una interfaz proporcionada y como un socket para indicar el consumo de una interfaz.
La idea de componentes de software reutilizables fue promovida por Douglas McIlroy en su presentación en la Conferencia de Ingeniería de Software de la OTAN de 1968. [6] (Uno de los objetivos de esa conferencia era resolver la llamada crisis del software de la época). McIlroy puso esta idea en práctica con la adición de la función pipeline al sistema operativo Unix .
Brad Cox perfeccionó el concepto de componente de software en la década de 1980. [7] Intentó crear una infraestructura y un mercado para componentes reutilizables de terceros inventando el lenguaje de programación Objective-C . [8]
IBM introdujo el modelo de objetos del sistema (SOM) a principios de los años 1990. [9]
Microsoft introdujo el Modelo de objetos componentes (COM) a principios de los años 1990. Microsoft creó muchas tecnologías de componentes de dominios específicos en COM, incluido el modelo de objetos componentes distribuidos (DCOM), la vinculación e incrustación de objetos (OLE) y ActiveX.
El concepto moderno de componente de software definido en gran medida por Brad Cox de Stepstone, => lenguaje de programación Objective-C
1990, IBM inventa su modelo de objetos del sistema. 1990, como reacción, Microsoft lanzó OLE 1.0 Controles personalizados OLE (OCX)[ enlace muerto permanente ]