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.
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.
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 Programación orientada a objetos: un enfoque evolutivo, 1986).
Los componentes de software se utilizan en dos contextos diferentes y de dos tipos: 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í mediante Internet o intranet. Protocolos de comunicación para IPC (Inter Process Communications). Lo de arriba pertenece al tipo anterior, mientras que lo de abajo pertenece al tipo posterior.
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 . Una aplicación típica de esto en el mundo real es, por ejemplo, aplicaciones financieras o 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 . 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. {{cite book}}: |work=ignorado ( ayuda )
^ 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.
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