PDF de programación - Compositor: Una herramienta para la generación de conectores

Imágen de pdf Compositor: Una herramienta para la generación de conectores

Compositor: Una herramienta para la generación de conectoresgráfica de visualizaciones

Publicado el 14 de Enero del 2017
898 visualizaciones desde el 14 de Enero del 2017
218,7 KB
6 paginas
Creado hace 14a (01/04/2010)
COMPOSITOR: Una Herramienta para la Generación

de Conectores

Jose Luis Pastrana, Ernesto Pimentel

Departamento de Lenguajes y Ciencias de la Computación

ETSI Informática, Universidad de Málaga

Málaga, España

{pastrana,ernesto}@lcc.uma.es

trabajo presenta

Abstract— El siguiente
la herramienta
COMPOSITOR (proyecto financiado por la iniciativa FEDER
TIN2008-05932) que ha sido desarrollada para la generación de
conectores que
implementan el modelo de composición y
coordinación de componentes software que ha sido desarrollado
por los autores de la misma y presentado en [1]. El modelo está
basado en el uso de conectores que son definidos por el cliente de
un componente servidor,
los cuales usan contratos para
especificar los requerimientos no funcionales deseados por el
cliente (tales como sincronización o calidad de servicio). Los
conectores, además, usan una ontología del dominio del servidor
para poder realizar adaptación dinámica de las invocaciones a un
servicio en tiempo de ejecución, en el caso de que se produzca
algún cambio o actualización en el componente que proporciona
los servicios.

Keywords-component; Herramienta, Conectores, Composición,

componentes software, adaptación, ontología

I.

INTRODUCCÓN

El desarrollo de software basado en componentes es un
proceso que consiste en la definición, implementación e
integración y composición de componentes independientes en
el sistema. El objetivo que reside bajo este proceso es el de
reutilizar componentes ya existentes en lugar de reinventar o
re-implementar componentes software. Las actividades que se
realizan en las diferentes fases de este desarrollo del software y
que pueden observarse en Fig. 1 son:

Requisitos: La primera fase consiste en el análisis y
especificación de los requisitos funcionales y no-funcionales de
nuestro sistema.

Diseño del Sistema: En esta fase se organiza el sistema en
módulos, componentes, clases u otras unidades, así como el
comportamiento y las responsabilidades de cada unidad y la
interacción y colaboración entre ellas. Esta fase depende de la
disponibilidad de componentes previos y el diseñador debe
determinar qué unidades van a ser implementadas y cuáles van
a reutilizar componentes ya existentes.

Implementación y Pruebas Unitarias: En un caso ideal,
toda la aplicación sería construida integrando y conectando
componentes ya existentes. Sin embargo, generalmente hay
que implementar algunas unidades que deben ser testeadas
previamente a su integración en el sistema (test unitarios).



Miguel Katrib

Departamento de Computación

F. Matemática y Computación, Universidad de la Habana

La Habana, Cuba

[email protected]

Selección de Componentes: En esta fase se seleccionan los
componentes que implementan algunas de las unidades. Cada
componente debe ser individualmente adaptado y testeado (test
unitario).

Integración del Sistema: El proceso de integración incluye
la integración de la infraestructura estándar de componentes, de
los componentes desarrollados y de
los componentes
reutilizados y adaptados.

Verificación y Validación del Sistema: Aquí se usan

técnicas estándar de validación y verificación.

Operaciones de Soporte y Mantenimiento: los procesos
de soporte y mantenimiento incluyen la modificación o
reemplazo de servicios ya existentes y que presentan
problemas.

Requisitos


Prueba Sistema



Diseño del Sistema



Integrar Sistema



Operaciones de
Mantenimiento



Implementación Unidades



Prueba unitaria



Selección de
Componentes



Adaptar
Servicios

Figura 1. Proceso de desarrollo de un sistema



La herramienta desarrollada permite la implementación del
modelo de conectores [1] que es usado para la adaptación de
los servicios de los componentes reutilizados mediante la
especificación de los requisitos no-funcionales y de calidad de
servicio (sincronización, rendimiento, seguridad, fiabilidad,
etc.) deseados por el cliente de los mismos, así como el uso de
una ontología del dominio del componente que ofrece los
servicios para poder realizar adaptación semántica de las
llamadas en tiempo de ejecución. Lo que resulta bastante útil si
hay que modificar o cambiar algún componente en la fase de
mantenimiento.



Todas

las

restricciones

impuestas al servidor son
establecidas como contratos (precondiciones, postcondiciones e
invariante) que son representados por expresiones lógicas. El
conector, comprobará el invariante y la precondición de un
servicio antes de ejecutarlo y la postcondición y el invariante
después de hacerlo. El conector también puede ejecutar un
conjunto de sentencias en el caso de que algún contrato falle.
De esta forma, el cliente puede modelar el comportamiento que
desee del servidor y qué hacer en el caso de que esos
requerimientos fallen (Fig. 3).

Una importante diferencia entre nuestro modelo y el
modelo presentado por la propuesta de Meyer [2] (como puede
verse en el diagrama de actividad de la Fig. 3) es que en
nuestro modelo un servicio no falla cuando se incumple un
contrato, sino que se ejecuta un conjunto de acciones para
reparar esa situación y continuar con la ejecución del servicio.

Esta diferencia mejora el modelo de contrato permitiendo al
cliente expresar el comportamiento deseado en vez de fallar la
llamada.

En la sección 2 se presenta el modelo propuesto, así como
las características del mismo y cómo se implementan en la
herramienta. La sección 3 muestra un ejemplo de un sistema
gestor de artículos de un congreso. La sección 4 muestra
detalles de implementación y finalmente la sección 5 presenta
las conclusiones y trabajos futuros.

II. EL MODELO PROPUESTO Y SU DESARROLLO CON

COMPOSITOR

Una de las tareas esenciales en el desarrollo de software
basado en componentes (como puede verse en la Fig. 1) es
encontrar el componente adecuado que ofrece la funcionalidad
e
interfaz deseada. Una vez que el componente es
seleccionado, el modelo propuesto usa un conector para
adaptar el comportamiento y los requisitos no-funcionales
deseados por el cliente sin modificar el componente servidor.
Esta adaptación (Fig. 2) conlleva la definición (o selección de
una existente) de una ontología del dominio del componente
servidor, definir el invariante deseado para el componente y
qué acciones se deben realizar en caso de que sea violado y
definir las precondiciones y postcondiciones deseadas para
cada servicio ofrecido por el componente y las acciones a
realizar en caso de fallo de las mismas.

Un conector es un servicio web que media entre el
componente cliente y el componente servidor, por lo que no
trata de modificar ni alterar ninguna parte interna del servidor.
El conector será un componente encargado de manejar,
conectar y adaptar el comportamiento del servidor para un
cliente determinado. Por lo que un cliente que desee obtener los
servicios de un componente servidor podrá utilizar un conector
ya implementado que tenga el comportamiento por él deseado
o bien definir un nuevo conector para dicho servidor con el
comportamiento que él mismo desee.

Figura 3. Diagrama de modelo de actividad de un conector



Lo primero que debemos hacer una vez seleccionado el
componente servidor que queramos es cargar su interfaz en la
herramienta. Dicho componente servidor podrá ser un
componente binario (tipo DLL) o un servicio web. Para ello, la
herramienta nos ofrece en el menú de componentes (Get
Component) la opción de obtener la interfaz de un servicio web
dada su url (WebService) o bien la interfaz de un componente
binario (DLL, Corba, Others), como puede observarse en la
Fig. 4.



Figura 2. Proceso de adaptación de un componente



características de QoS. Además, se podrá especificar otros
componentes (o conectores) externos que vayan a ser usados en
el contexto de la aplicación y que quieran usarse como parte de
los contratos usando las sentencias external.

componentes

Es importante notar que un conector puede ser usado por
varios
clientes que deseen un mismo
comportamiento del componente servidor, al igual que un
mismo componente servidor puede ser usado al mismo tiempo
por varios clientes que deseen un comportamiento distinto, a
través de conectores distintos. A continuación se mostrará la
sintaxis y la semántica de las diferentes funcionalidades
predefinidas:

Componentes Externos (external at): Expresan las
dependencias externas del componente. Nos permiten asegurar
que todos los componentes externos están disponibles y poder
usarlos como parte de los contratos. Los componentes externos
serán implementados como referencias remotas que estarán
activas durante la vida del conector.

Sintaxis: external <type> <name> at <url>;

Ejemplo: external PayService pp

at "http://.../pay.asmx";

Figura 4. Carga de la Interfaz de un Componente



Una vez cargada la interfaz del componente en la
herramienta habría que añadir el invariante, el comportamiento
no funcional y de calidad de servicio (QoS) deseado para cada
servicio (contratos) además de la ontología del dominio del
componente servidor, la cual es traducida a cláusulas de Horn
escritas en Prolog y que será utilizada para realizar la
  • Links de descarga
http://lwp-l.com/pdf480

Comentarios de: Compositor: Una herramienta para la generación de conectores (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad