Un ejemplo de dos componentes expresados en UML 2.0. El componente de pago, responsable de facilitar el pedido del cliente, requiere que el componente de procesamiento de tarjetas cargue la tarjeta de crédito/débito del cliente (funcionalidad que proporciona esta última ).
La ingeniería de software basada en componentes ( CBSE ), también llamada desarrollo basado en componentes ( CBD ), es un estilo de ingeniería de software que tiene como objetivo construir software a partir de componentes modulares débilmente acoplados. Enfatiza la separación de preocupaciones entre las diferentes partes de un sistema de software .
Los componentes se comunican entre sí a través de interfaces . Cada componente proporciona una interfaz (llamada interfaz proporcionada ) a través de la cual otros componentes pueden usarlo. Cuando un componente utiliza la interfaz de otro componente, esa interfaz se denomina interfaz usada.
En las ilustraciones de UML de este artículo, las interfaces proporcionadas están representadas por símbolos de paleta, mientras que las interfaces utilizadas están representadas por símbolos de socket abierto.
Un ejemplo sencillo de varios componentes de software, representados dentro de un hipotético sistema de reserva de vacaciones representado en UML 2.0.
Los componentes deben ser sustituibles , lo que significa que un componente debe ser reemplazable por otro que tenga las mismas interfaces sin dañar el resto del sistema.
La idea de que el software debería componerse, o construirse a partir de componentes prefabricados, se hizo prominente por primera vez con el discurso de Douglas McIlroy en la conferencia de la OTAN sobre ingeniería de software en Garmisch , Alemania , 1968, titulado Componentes de software producidos en masa . [1] La conferencia se propuso contrarrestar la llamada crisis del software . La posterior inclusión de tuberías y filtros por parte de McIlroy en el sistema operativo Unix fue la primera implementación de una infraestructura para esta idea.
Brad Cox de Stepstone definió en gran medida el concepto moderno de componente de software. [2] Los llamó Software IC y se propuso crear una infraestructura y un mercado para estos componentes inventando el lenguaje de programación Objective-C . (Resume este punto de vista en su libro de 1986, Programación orientada a objetos: un enfoque evolutivo ).
Los componentes de software se utilizan en dos contextos diferentes: i) usar componentes como partes para construir un único ejecutable, o ii) cada ejecutable se trata como un componente en un entorno distribuido, donde los componentes colaboran entre sí utilizando protocolos de comunicación de Internet o intranet para IPC. (Comunicaciones entre Procesos). Lo de arriba pertenece al primer tipo, mientras que lo de abajo pertenece al segundo tipo.
Una computadora que ejecuta varios componentes de software a menudo se denomina servidor de aplicaciones . Esta combinación de servidores de aplicaciones y componentes de software suele denominarse informática distribuida . Las aplicaciones típicas de esto en el mundo real incluyen aplicaciones financieras y software empresarial.
Modelos de componentes
Un modelo de componente es una especificación de las propiedades de los componentes. [4]
AXCIOMA (el marco de componentes para sistemas integrados, distribuidos y en tiempo real) de Remedy IT
COHORTE, el tiempo de ejecución multiplataforma para ejecutar y gestionar aplicaciones basadas en componentes orientadas a servicios distribuidas, robustas y confiables, de isandlaTech
Lenguaje de modelado de componentes independiente de la plataforma
SIDL - Lenguaje de definición de interfaz científica
Parte del sistema de interoperabilidad del lenguaje de programación científica de Babel (SIDL y Babel son tecnologías centrales de CCA y del Centro SciDAC TASCS; ver arriba).
^ McIlroy, Malcolm Douglas (enero de 1969). "Componentes de software producidos en masa" (PDF) . Ingeniería de software: Informe de una conferencia patrocinada por el Comité Científico de la OTAN, Garmisch, Alemania, 7-11 de octubre de 1968 . División de Asuntos Científicos, OTAN. pag. 79.
^ Rainer Niekamp. "Arquitectura de componentes de software" (PDF) . Gestión de Congresos - CIMNE/Instituto de Computación Científica, TU Braunschweig. pag. 4. Archivado desde el original (PDF) el 28 de marzo de 2012 . Consultado el 29 de julio de 2011 . El concepto moderno de componente de software definido en gran medida por Brad Cox de Stepstone, => lenguaje de programación Objective-C
^ Raphael Gfeller (9 de diciembre de 2008). "Actualización de aplicación basada en componentes". HSR - Hochschule für Technik Rapperswill. pag. 4 . Consultado el 29 de julio de 2011 . 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 ]
^ ab Crnkovic, I.; Sentilles, S.; Vulgarakis, A.; Chaudron, MRV (2011). "Un marco de clasificación para modelos de componentes de software". Transacciones IEEE sobre ingeniería de software . 37 (5): 593–615. doi :10.1109/TSE.2010.83. S2CID 15449138.
^ Lau, Kung-Kiu; Wang, Zheng (2007). "Modelos de componentes de software". Transacciones IEEE sobre ingeniería de software . 33 (10): 709–724. doi :10.1109/TSE.2007.70726. ISSN 0098-5589.
^ Lau, Kung-Kiu; Velasco Elizondo, Perla; Wang, Zheng (2005). "Conectores exógenos para componentes de software". En Heineman, George T.; Crnkovic, Ivica; Schmidt, Heinz W.; Stafford, Judith A.; Szyperski, Clemens; Wallnau, Kurt (eds.). Ingeniería de software basada en componentes . Apuntes de conferencias sobre informática. vol. 3489. Springer Berlín Heidelberg. págs. 90-106. doi :10.1007/11424529_7. ISBN9783540320494. S2CID 17971442.
^ MASH define activos como personas, propiedades e información y gestión como seguimiento, control y configuración. Presentado en la conferencia IEEE IoT de 2013 en Mountain View, MASH incluye un IDE completo, un cliente de Android y un tiempo de ejecución. "Canal MASH de YouTube"
^ Un enfoque orientado a componentes es una forma ideal de manejar la diversidad de software en la electrónica de consumo. El modelo Koala, utilizado para software integrado en televisores, permite la vinculación tardía de componentes reutilizables sin gastos adicionales. [1]
^ Modelo de componentes para dispositivos integrados como TV desarrollado por Philips basado en un artículo de van Ommering, R.: Koala, un modelo de componentes para software de productos de electrónica de consumo [2] Archivado el 9 de agosto de 2014 en Wayback Machine.
^ Larsen, John (2021). "React Hooks en acción con suspenso y modo concurrente" . Manning. ISBN978-1720043997.
^ Arad, Cosmin (abril de 2013). Modelo de programación y protocolos para sistemas distribuidos reconfigurables (PDF) . Estocolmo, Suecia: KTH Royal Institute of Technology. ISBN978-91-7501-694-8. Archivado desde el original (PDF) el 29 de octubre de 2013.
^ Arellanes, Damián; Lau, Kung-Kiu (2017). "Conectores exógenos para la composición jerárquica de servicios" (PDF) . 2017 Décima Conferencia del IEEE sobre Aplicaciones y Computación Orientada a Servicios (SOCA) . Kanazawa: IEEE. págs. 125-132. doi :10.1109/SOCA.2017.25. ISBN9781538613269. S2CID 31211787 . Archivado (PDF) desde el original el 29 de agosto de 2023.
Otras lecturas
Brad J. Cox, Andrew J. Novobilski (1991). Programación orientada a objetos: un enfoque evolutivo . 2da ed. Addison-Wesley, lectura ISBN 0-201-54834-8
Bertrand Meyer (1997). Construcción de software orientado a objetos . 2da ed. Prentice Hall.
George T. Heineman, William T. Councill (2001). Ingeniería de software basada en componentes: juntar las piezas . Addison-Wesley Profesional, Lectura 2001 ISBN 0-201-70485-4
Clemens Szyperski, Dominik Gruntz, Stephan Murer (2002). Software de componentes: más allá de la programación orientada a objetos . 2da ed. ACM Press - Pearson Educational, Londres 2002 ISBN 0-201-74572-0
enlaces externos
Por qué ha fallado la reutilización de software y cómo hacer que funcione para usted por Douglas C. Schmidt
¿Cuál es la Verdadera esencia y realidad del CBD? (La evidencia que demuestra que el paradigma existente del CDB es defectuoso)
lista completa de sistemas de componentes en SourceForge
Breve introducción a Real COP (Programación orientada a componentes) utilizando una pequeña aplicación GUI como ejemplo