Está en la página 1de 45

Ingeniera de software basada en componentes

Materia: Tpicos selectos de ingeniera de software

CBSE Component based software engeeniering


La ingeniera de software basada en componentes (CBSE) surgi a finales de los anos 90 como una aproximacin basada en reutilizacin al desarrollo de sistemas de software. Su creacin fue motivada por la frustracin de los diseadores de que el desarrollo orientado a objetos no ha conducido a una reutilizacin extensiva, tal y como se sugiri originalmente. A pesar de las predicciones optimistas nunca se desarrollo un mercado significativo para objetos y clases individuales.

CBSE Ingeniera de software basada en componentes


CBSE es el proceso de definir, implementar e integrar o componer en sistemas componentes independientes debilmente acoplados. Se ha convertido actualmente en una importante aproximacion de desarrollo del SW debido a que los sistemas de SW son cada vez mas grandes y mas complejos, y los clientes demandan software mas confiable que sea desarrollado mas rapidamente.

CBSE Ingeniera de software basada en componentes


La unica forma en la que podemos lidiar con la complejidad y entregar mejor SW mas rapidamente es reutilizar componentes de SW en vez de reimplementarlos. Los fundamentos de la CBSE son:
Componentes independientes.- estos son completamente especificados por sus interfaces. Debe existir una clara separacion entre la interfaz de los componentes y su implementacion para que una implementacion de un componentes pueda reeplazarse por otro sin cambiar el sistema.

CBSE Ingeniera de software basada en componentes


Estndares de componentes.- Estos lo que hacen es facilitar la integracin de los componentes. Estos estndares se incluyen en un modelo componentes y definen, en el nivel mas bajo como las interfaces de componentes deberan especificarse y como se comunican los componentes. Si los componentes cumplen con los estndares, entonces su funcionamiento es independiente de su lenguaje de programacin. Los componentes escritos en diferentes lenguajes pueden integrarse en el mismo sistema.

CBSE Ingeniera de software basada en componentes


El middleware.- este nos proporciona soportes de SW para la integracion de componentes. Para conseguir que componentes independientes y distribuidos trabajen juntos, se necesita un soporte middleware que maneje las comunicaciones de los componentes. Un producto middleware como CORBA maneja cuestiones de bajo nivel de forma eficiente y permite al disenador centrarse en problemas relacionados con la aplicacin. Ademas puede proporcionar soporte para asignacion de recursos, gestion de transacciones, seguridad y concurrencia.

CBSE Ingeniera de software basada en componentes


Un proceso de desarrollo.- Esto quiere decir que debemos tener un proceso de desarrollo que se adapta a la ingenieria de software basada en componentes. Si se intenta anadir una aproximacion basada en componentes a un proceso de desarrollo que esta adaptado a la produccion de SW original, se puede observar que las suposiciones inherentes al proceso limitan el potencial de CBSE.

CBSE Ingeniera de software basada en componentes


CBSE se asentando sobre unos principios de diseo slidos que soportan la construccin de software comprensible y mantenible. Los componentes son independientes para que no interfieran en su funcionamiento unos con otros. Los detalles de implementacin se ocultan, por lo que la implementacin de los componentes puede cambiarse sin afectar al resto del sistema. Los componentes se comunican a travs de interfaces bien definida, de forma que si estas interfaces se mantienen, un componentes puede reemplazarse por otro que proporcione una funcionalidad adicional o mejorada.

Componentes y modelos componentes


Hay con consenso general en la comunidad de que un componente es una unidad de software independiente que puede estar compuesta por otros componentes y que se utiliza para crear un sistema de software. Definicin de un componente.
Es un elemento de software que se ajusta a un modelo de componentes y que puede ser desplegado y compuesto de forma independiente sin modificacin segn un estndar de composicin (Councill y Heineman, 2001).

Componentes y modelos componentes


Otra definicin centrada en las caractersticas clave de los componentes por Szyperski, 2002. Un componente software es una unidad de composicin con interfaces especificadas contractualmente y dependencias de contexto explicitas nicamente. Un componente software puede ser desplegado de forma independiente y esta sujeto a la composicin por terceras partes.

Componentes y modelos componentes


Lo que tienen en comn las dos definiciones anteriores es que: estn de acuerdo en que los componentes son independientes y que son unidades fundamentales de composicin en un sistema. Estas dos definiciones son bastante abstractas de forma mas practica y comprensible es considerar a un componente como un proveedor de servicios independiente. Cuando un sistema necesita algn servicio, llama a un componente para proporcionar dicho servicio sin tener en cuenta donde se esta ejecutando el componente o que lenguaje se ha utilizado para desarrollar el componente.

Componentes y modelos componentes


Caracteristicas principales de un componente:
Estandarizado Independiente Componible Desplegable Documentado

Componentes y modelos componentes


1. Estandarizado
La estandarizacin de componentes significa que un componente usado en un proceso de CBSE tiene que ajustarse a un modelo estandarizado de componentes. Este modelo puede definir interfaces de componentes, medatos de componentes, documentacion, composicion y despliegue.

Componentes y modelos componentes


2. Independiente
Un componente debe ser independiente, debera ser posible componerlo y desplegarlo sin tener que utilizar otros componentes especficos.

3. Componible
Para que un componente sea componible, todas las interacciones externas deben tener lugar a travs de interfaces definidas pblicamente. Adems debe proporcionar acceso externo a la informacin sobre si mismo, como por ejemplo a sus mtodos y atributos.

Componentes y modelos componentes


4. Desplegable Para ser desplegable, un componente debe ser independiente y debe ser capaz de funcionar como una entidad autonoma o sobre una plataforma de componentes que implemente el modelo de componentes. Esto normalmente significa que el componente es binario y que no tiene que compilarse antes de ser desplegado.

Componentes y modelos componentes


5. Documentado
Los componentes tienen que estar completamente documentados para los usuarios potenciales puedan decidir si los componentes satisfacen o no sus necesidades. La sintaxis e idealmente la semntica de todas las interfaces de componentes tienen que ser especificas.

El componente como un proveedor de servicios


La visin de un componente como un proveedor de servicios resalta las dos caractersticas criticas de un componente reutilizable.
El componente es una unidad ejecutable independiente. El cdigo fuente no esta disponible, por lo que el componente no tiene que ser compilado antes de que sea usado con otros componentes del sistema.

El componente como un proveedor de servicios


Los servicios ofertados por un componente estan disponibles a traves de una interfaz, y todas las interacciones son a traves de la interfaz. La interfaz del componente se expresa en terminos de operaciones parametrizadas y su estado interno nunca se muestra.

Los componentes y sus interfaces


Los componentes se definen por sus interfaces y, en los casos mas generales, pueden considerarse que tienen dos interfaces relacionadas.
1. Una interfaz proporciona, que define los servicios proporcionados por el componente. Define los mtodos que pueden ser llamados por un usuario del componente. Las interfaces proporciona se indican con un circulo al final de una lnea desde el icono del componente.

Los componentes y sus interfaces


2. Una interfaz requiere, que especifica que servicios deben ser proporcionados por otros componentes en el sistema. Si estos no estn disponibles, entonces el componente no funcionara. Esto no compromete la independencia o el despliegue del componente debido a que no se requiere el uso de un componente especifico para proporcionar dichos servicios. Las interfaces requiere se indican con un semicrculo al final de la lnea desde el icono de componentes.

Diferencias entre componentes y objetos


Los componentes se desarrollan normalmente utilizando una aproximacin orientada a objetos, pero difieren de los objetos en varios aspectos importantes:
1. Los componentes son entidades desplegables. Es decir, no son compilados dentro de un programa de aplicacin, sino que se instalan directamente sobre la plataforma de ejecucin. Los mtodos y atributos definidos en sus interfaces pueden ser accedidos por otros componentes.

Diferencias entre componentes y objetos


2. Los componentes no definen tipos. Una definicin de clase define un tipo abstracto de datos y los objetos son instancias de ese tipo. Un componente es una instancia, no una plantilla que se utiliza para definir una instancia. 3. Las implementaciones de los componentes son opacas. Los componentes estn, al menos en principio, completamente definidos por la especificacin de su interfaz. La implementacin esta oculta para los usuarios de los componentes. Los componentes a menudo se entregan como unidades binarias de forma que el comprador no tiene acceso a la implementacin.

Diferencias entre componentes y objetos


3. Los componentes son independientes del lenguaje. Las clases de objetos tienen que seguir las reglas de un lenguaje de programacin OO particular y, generalmente, solo pueden inter-operar con otras clases escritas en dicho lenguaje. Si bien los componentes se implementan normalmente utilizando lenguajes OO tales como Java, pueden implementarse en lenguajes de programacin no orientada a OO. 4. Los componentes estn estandarizados. A diferencia de las clases de objetos que pueden implementarse de cualquier forma, los componentes deben ajustarse a algn modelo de componentes que restringe su implementacin.

Un modelo de un componente de recopilacin de datos.


Interfaz requiere
Sensor de manejo

Interfaz proporciona
Agregar sensor Remover sensor Iniciar sensor

Recopilador de
Sensor de datos

Parar sensor Probar sensor

datos

Inicializar Reportar Listar todo

Un modelo componente
Un modelo componente opera en dos niveles.
Primero, un modelo componente define como construir un componente individual. Por ejemplo el modelo COM ( Microsofts Componente Object Model) requiere que cada componente COM tenga una interface desconocida como IUnknown Interface.

Un modelo componente
Segundo, un modelo componente puede reforzar el comportamiento global de la conducta sobre como un conjunto de componentes dentro de un sistema basado en componentes se comunicara e interactuara uno con otro. Un modelo componente habilita la composicin para la definicin e interaccin estndar que promueve la especificacin no ambigua de interfaces. Un componente puede estar compuesto con otro componente u otro elemento de software e integrar conexiones respectivamente.

Un modelo componente define que mecanismos son permitidos para ensamblar o integrar conecciones. DSouza and Wills (1999) observaron que plug-in compatibility solamente tendra xito cuando un componente puede declarar de forma segura sus expectativas acerca de otro componente al cual estar conectado.

Modelo componente
Un modelo componente es una definicin de los estndares para la definicin de componentes. Estos estndares son utilizados por los desarrolladores de componentes para asegurar que los componentes puedan interoperar. Tambin son utilizados por los proveedores de infraestructuras de comunicacin de los componentes, quienes proporcionan middleware para soportar el funcionamiento de estos.

Modelos de componentes
Se han propuesto muchos modelos de componentes, pero los modelos mas importantes son:
CORBA DE OMG El modelo de Enterprise Java Beans de Sun El modelo COM+ de Microsoft.- Las tecnologas de infraestructuras especificas tales como COM+ y EJB que se utilizan en CBSE son muy complejas. Como consecuencia es difcil describir estas tecnologas sin hacer referencia a una gran cantidad de detalles de implementacin sobre los supuestos que subyacen con cada aproximacin y las interfaces utilizadas.

Modelo componente
Los elementos bsicos de un modelo de componentes ideal son analizados por (Weinreich y Sametinger , 2001). Los elementos en un modelo de componentes pueden clasificarse como elementos relacionados con: Las interfaces de los componentes. Elementos relacionados con la informacin que se necesita para utilizar el componente en un programa. Elementos relacionados con el despliegue del componente.

Modelo componente
Los elementos que definen a un componente son sus interfaces. El modelo componentes especifica como deberian definirse las interfaces y los elementos, tales como:
Nombres de operaciones Parametros y excepciones Que debe incluirse en la definicion de una interfaz Especificar el lenguaje utilizado para definir las interfaces (IDL interface definition language). En CORBA y COM+, existe un lenguaje de definicion de interfaces especifico; EJB es especifico de Java, por lo que Java se utiliza como IDL.

Modelo componente
Para que los componentes puedan distribuirse y ser accedidos de forma remota, necesitan tener un nombre o manejador nico asociado a ellos. En COM+, este es un identificador nico de 128 bits. En CORBA es un nombre jerrquico con una raz basado en un nombre de dominio de internet. Los metadatos de componentes son datos sobre el mismo componente, tales como informacin sobre sus interfaces y atributos. Los metadatos son importantes para que los usuarios del componente puedan encontrar que servicios se proporcionan y cuales se requieren.

Modelo componente
Algunos modelos de componentes requieren interfaces especificas que deben ser definidas por un componente. Estas se utilizan para integrar el componente con la infraestructura del modelo de componentes que proporciona servicios estandarizados tales como seguridad y gestion de transacciones.

Implementacion del modelo componente


Las implementaciones del modelo componente normalmente incluye formas especificas (como el uso de una interfaz de reflexion en Java) para acceder a estos metadatos del componente. Los componentes son entidades genericas y, cuando son desplegados, tienen que ser configurados para su entorno de aplicacin particular.

Implementacion del modelo componente


Por ejemplo la figura anterior del componente para recopilacion de datos podria ser configurado con el maximo numero de sensores en un vector de sensores. Por lo tanto , el modelo de componentes deberia especificar como deben configurarse los componentes binarios para un entorno de despliegue particular.

Implementacin del modelo componente


Una parte importante de un modelo de componentes es una definicin de cmo los componentes deberan empaquetarse para su despliegue como entidades ejecutables independientes. Debido a que los componentes son entidades independientes, tienen que ser empaquetadas con el resto de los elementos que no son proporcionados por la infraestructura del componente o no estn definidos en una interfaz requiere.

Implementacion del modelo componente


La informacion de despliegue incluye informacion sobre los contenidos de un paquete y su organizacin binaria. Inevitablemente, a medida que surgen nuevos requerimientos, los componentes tendrn que ser cambiados o reemplazados. Por lo tanto, el modelo de componentes debera incluir reglas para regular cuando y como se permite el reemplazo de componentes.

Implementacion del modelo componente.


Finalmente el modelo componente deberia definir la documentacion asociada a los componentes. Esta se utiliza para encontrar el componente y decidir si es adecuado o no. Los modelos de componentes no son solo estandares; son tambien la base para el middleware de sistemas que proporciona el soporte para los componentes ejecutables.

Implementacion del modelo componente


Weinreich y Sametinger (Weinreich y Sametinger , 2001) utilizan la analogia de un sistema operativo para explicar los modelos de componentes. Un sistema operativo proporciona un conjunto de servicios genericos que pueden utilizarse por las aplicaciones. Una implementacion de un modelo de componentes proporciona servicios compartidos comparables para los componentes

Implementacion del modelo componente


Los servicios proporcionados por la implementacion de un modelo de componentes pueden pertenecer a dos categorias:
Servicios de plataforma.- estos servicios son fundamentales ya que permiten a los componentes comunicarse entre si. CORBA es un ejemplo de una plataforma de modelos de componentes.

Implementacion del modelo componente


Servicios horizontales. o estos servicios independientes de la aplicacin es probable que sean usados por muchos componentes diferentes. La disponibilidad de estos servicios reduce los costes del desarrollo de componentes e implica que pueden evitarse incompatibilidades potenciales de componentes.

Implementacion del modelo componente


Para hacer uso de los servicios proporcionados por una infraestructura de modelos de componentes, los componentes se despliegan en un contenedor estandarizado predefinido. Un contenedor es un conjunto de interfaces utilizadas para acceder a las implementaciones de los servicios de soporte. La inclusin del componente en el contenedor proporciona automticamente el acceso a los servicios. Las interfaces del componente en si mismas no son accesibles directamente por otros componentes; tienen que ser accedidas a travs del contenedor.

Servicios proporcionados por un modelo componentes


Servicios horizontales
Gestin de componentes Concurrencia Gestin de transacciones Persistencia Gestin de recursos Seguridad

Servicios de plataforma
Direccionamiento Definicin de interfaz Gestin de excepciones Comunicacin entre componentes

Elementos bsicos de un modelo componente


Acceso a metadatos

Composicin
Interfaces especificas

Adaptacin
Documentacin

Definicin de interfaces

Convencin de nombres

Empaquetado
Soporte para evolucin

Interfaces

Informacin de uso

Despliegue y uso

Modelo de componentes

Bibliografa
Ingeniera de software Somerville

También podría gustarte