Ingeniería de software basada en componentes


La ingeniería de software basada en componentes ( CBSE ), también llamada desarrollo basado en componentes ( CBD ), es una rama de la ingeniería de software que enfatiza la separación de preocupaciones con respecto a la amplia funcionalidad disponible en un sistema de software determinado . Es un enfoque basado en la reutilización para definir, implementar y componer componentes independientes débilmente acoplados en sistemas. Esta práctica tiene como objetivo generar un grado igualmente amplio de beneficios tanto a corto como a largo plazo para el software en sí mismo y para las organizaciones que patrocinan dicho software.

Los profesionales de la ingeniería de software consideran los componentes como parte de la plataforma de inicio para la orientación al servicio . Los componentes desempeñan este papel, por ejemplo, en los servicios web y, más recientemente, en las arquitecturas orientadas a servicios (SOA), en las que el servicio web convierte un componente en un servicio y, posteriormente, hereda otras características más allá de las de un componente normal.

Un componente de software individual es un paquete de software , un servicio web , un recurso web o un módulo que encapsula un conjunto de funciones (o datos) relacionados.

Todos los procesos del sistema se colocan en componentes separados para que todos los datos y funciones dentro de cada componente estén semánticamente relacionados (al igual que con los contenidos de las clases). Debido a este principio, a menudo se dice que los componentes son modulares y cohesivos .

Con respecto a la coordinación de todo el sistema, los componentes se comunican entre sí a través de interfaces . Cuando un componente ofrece servicios al resto del sistema, adopta una interfaz proporcionada que especifica los servicios que pueden utilizar otros componentes y cómo pueden hacerlo. Esta interfaz puede verse como una firma del componente: el cliente no necesita conocer el funcionamiento interno del componente (implementación) para poder utilizarlo. Este principio da como resultado componentes denominados encapsulados . Las ilustraciones UML dentro de este artículo representan las interfaces proporcionadas por un símbolo de piruleta adjunto al borde exterior del componente.

Sin embargo, cuando un componente necesita usar otro componente para funcionar, adopta una interfaz usada que especifica los servicios que necesita. En las ilustraciones UML de este artículo, las interfaces utilizadas se representan mediante un símbolo de socket abierto adjunto al borde exterior del componente.


Un ejemplo de dos componentes expresados ​​en UML 2.0. El componente de pago, encargado de facilitar el pedido del cliente, requiere que el componente de procesamiento de tarjetas realice el cargo en la tarjeta de crédito/débito del cliente (funcionalidad que proporciona este último ).
Un ejemplo simple de varios componentes de software, representado dentro de un sistema hipotético de reserva de vacaciones representado en UML 2.0.