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 facilidad de mantenimiento . [1]
Los componentes permiten que el desarrollo de software ensamble software con partes confiables en lugar de escribir código para cada aspecto, lo que permite que la implementación se parezca más a un ensamblaje de fábrica que a una construcción personalizada.
Los atributos deseables de un componente incluyen, entre otros:
Algunos componentes son creados internamente por la misma organización o equipo que crea el sistema de software . Otros son de terceros , se desarrollan en otro lugar y se ensamblan en el sistema de software. [2]
En el caso de 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 de marco que permite que se los utilice de una manera conocida. Algunos ejemplos son: CORBA , COM , Enterprise JavaBeans y .NET Framework . [4] [5]
El diseño de componentes suele modelarse visualmente. En el lenguaje de modelado unificado (UML) 2.0, un componente se muestra como un rectángulo y una interfaz como una piruleta para indicar una interfaz proporcionada y como un socket para indicar el consumo de una interfaz.
La idea de los 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). En la década de 1970, McIlroy puso esta idea en práctica con la adición de la función de canalización 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 la década de 1990. [9]
Microsoft introdujo el Modelo de objetos componentes (COM) a principios de la década de 1990. Microsoft creó muchas tecnologías de componentes específicas de dominio en COM, entre ellas el Modelo de objetos componentes distribuidos (DCOM), la vinculación e incrustación de objetos (OLE) y ActiveX.
El concepto moderno de un 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 lanza los controles personalizados OLE 1.0 (OCX)[ enlace muerto permanente ]