Tecnologías para el desarrollo de
aplicaciones distribuidas
Lidia Fuentes
Component&Aspect-Oriented
Software Development Group
http://caosd.lcc.uma.es
Departamento de Lenguajes y Ciencias de la Computación
Universidad de Málaga. España
[email protected]
Desarrollo de Software Basado
en Componentes
Lidia Fuentes Fernández
Índice
Desarrollo de software basado en componentes
Modelos y plataformas de componentes
Mercado global de componentes (componentes COTS)
Desarrollo de software orientado a aspectos
Motivación del desarrollo orientado a aspectos
El lenguaje AspectJ
Conferencia del 3 de mayo
Otras propuestas de aspectos
Separación de aspectos en las plataformas de componentes
Ingeniería del Software Orientada a Agentes
Concepto de Agente
La Arquitectura de Referencia FIPA
Componentes y aspectos al servicios de los agentes
Lidia Fuentes Fernández
Antecedentes
Programación de Sistemas Abiertos y Distribuidos
Deficiencias de la Programación Orientada a Objetos (POO):
Dificultad a la hora de reutilizar objetos
Acoplamiento entre tipos e implementación (mejorado con la
definición de interfaces)
Extensión caja blanca
ClaseA obja=new ClaseA();
obja.m1(10);
A
+m1( i : int )
B
Lidia Fuentes Fernández
Lidia Fuentes Fernández
Antecedentes
Programación de Sistemas Abiertos y Distribuidos
Antecedentes
Programación de Sistemas Abiertos y Distribuidos
Deficiencias de la Programación Orientada a Objetos
(POO):
Noción de composición no explícita (extensión caja negra)
Implementación
A1
B1 b=new B1();
Int i=b.m1();
Implementación
B1
Composición en OO
m1();
Implementación
A1
Implementación
B1
Composición caja negra
5
Deficiencias de la Programación Orientada a Objetos
(POO):
Paso de mensajes síncrono
No incorpora aspectos de mercadotecnia
Desarrollo de aplicaciones distribuidas mediante
mecanismos rudimentarios (sockets, RPC)
2
4
6
1
Lidia Fuentes Fernández
Lidia Fuentes Fernández
Antecedentes
Programación de Sistemas Abiertos y Distribuidos
Plataformas Distribuidas Orientadas a Objetos:
Bus de datos para la comunicación entre objetos
Transparencia de la heterogeneidad, dispersión y
activación de objetos
Lenguaje de Descripción de Interfaces (IDL), utilizando
mecanismos de extensión OO (ej: herencia)
Repositorios de interfaces
Comunicación síncrona basada en RPC
Servicios (seguridad, transacciones, ...)
Ej: CORBA (1.1, 2.0), JavaBeans y COM
Estructura básica de un ORB
Implementación
Cliente
DII
IDL Stub
Servidor
DSI
IDLSkel
Adaptador de Objetos
Interfaz ORB
Object Request Broker
DII: Dynamic Invocation Interface
–Un stub permite que un cliente invoque una operación remota como si fuese local.
–Un skeleton permite que una invocación remota recibida por un servidor
DSI: Dynamic Skeleton Interface
7
sea enviada al sirviente adecuado
8
Lidia Fuentes Fernández
Lidia Fuentes Fernández
Antecedentes
Programación de Sistemas Abiertos y Distribuidos
Desarrollo de Software Basado en Componentes (Component-Based
Software Development, CBSD)
“Extensión” de la POO
Basada en la noción de COMPONENTE
Incluye nociones de mercadotecnia (componentes COTS, o Commercia
off-the shelf)
Unidad de composición de aplicaciones software que posee un
conjunto de requisitos, y que ha de poder ser desarrollado,
adquirido, incorporado al sistema y compuesto con otros
componentes, de forma independiente en tiempo y espacio.
Szyperski, 1998
Desarrollo de una Aplicación
Basada en Componentes
Descomposición funcional en una colección de componentes
Arquitectura de la aplicación (AA)
Colección de componentes
Propios -> Desarrollo top-down
Componentes COTS (adquiridos en el mercado de
componentes) -> Desarrollo bottom-up
Información de composición de componentes (coordinación)
Dentro de los propios componentes
Incluye el uso de adaptadores cuando los componentes
no son compatibles
Ejecución en una plataforma de componentes
9
10
Lidia Fuentes Fernández
Lidia Fuentes Fernández
Especificación de la Arquitectura
de la aplicación (AA)
LDAs (ADLs, Architecture Description Languages)
Basados en formalismos
No generan código válido, entonces se pierde la información
En las plataformas de componentes
Interfaz del componente
Siempre aparece la interfaz proporcionada
Tendencia a incorporar la interfaz requerida, eventos,
excepciones, protocolos, ...
Descripción de componentes
Información de despliegue (deployment) en XML en
contenedores, servicios utilizados, servidores, ...
Conexiones entre componentes
Suele estar mezclada en el código de implementación
No se tiene una visión global de la arquitectura de la aplicación
11
Modelos/Plataformas de
Componentes
CCM (CORBA Component Model), CCM/CORBA
Evolución de la plataforma distribuida OO, CORBA
(Common Object Request Broker Architecture) de
OMG
El modelo de componentes más puro y evolucionado de
los “comerciales”
EJB (Enterprise JavaBeans) EJB/J2EE
Evolución del modelo JavaBeans de Java/Sun
Microsoft ofrece la plataforma .NET, pero no incluye un
nuevo modelo de componentes aparte de COM
12
2
Lidia Fuentes Fernández
Lidia Fuentes Fernández
El modelo CCM
Interfaz de un componente CCM
Un modelo orientado a componentes distribuidos
Define una arquitectura para diseñar componentes y sus
interacciones
Tanto del lado del cliente (GUIs) como del servidor
(componentes de negocio)
Define una tecnología de “paquetes” para “desplegar”
componentes ejecutables, binarios multi-lenguaje
Mecanismo de “contenedor” para inyectar código de
persistencia, transacciones, seguridad, …
Modelo multi-sistema operativo, lenguaje, …
En contraposición a EJB que está basado en Java y a
.NET basado en productos de Microsoft
Lidia Fuentes Fernández
Componente CCM
Lidia Fuentes Fernández
Ejemplo: Filósofos comiendo
Interfaz del Componente Tenedor
13
15
17
Atributos (attributes)
Facetas (facets)
Interfaz proporcionada
Receptáculos (receptacles)
Interfaz requerida
Fuente de eventos (event sources)
Sumidero de eventos (event sinks)
Lidia Fuentes Fernández
Ejemplo: Filósofos comiendo
Interfaz del Componente Filósofo
14
16
Lidia Fuentes Fernández
Ejemplo: Filósofos comiendo
Componente Tenedor
Descriptor de componente
18
3
Lidia Fuentes Fernández
Lidia Fuentes Fernández
Ejemplo: Filósofos comiendo
Conexión entre componentes
Implementaciones CCM
Open Source
OpenCCM
http://www.objectweb.org/OpenCCM/
MicoCCM
http://www.fpx.de/MicoCCM/
FreeCCM
http://sourceforge.net/projects/cif/
19
20
Lidia Fuentes Fernández
Lidia Fuentes Fernández
CCM vs EJB, COM y .NET
Similitudes con EJB
Los componentes CORBA se crean y gestionan en “homes”
Se ejecutan en contenedores pudiendo acceder a los servicios comunes de
forma transparente
Similitudes con COM
Residen en servidores de aplicaciones de componentes
Pueden definirse varias interfaces tanto de entrada como de salida
Tanto envío de mensajes síncronos como eventos asíncronos
Capacidad de introspección
Similitudes con .NET
Pueden desarrollarse en diferentes lenguajes de programación
Se pueden empaquetar para ser distribuidos
Lo que hace CCM diferente
Una aplicación es realmente distribuida
Se puede desplegar y ejecutar en nodos distribuidos
Un componente CCM se puede segmentar en diferentes clases
Mercado Global de
Componentes
Reutilización de componentes externos (Commercial-Off-
The-Shelf, COTS)
COTS es una clase especial de componente software,
normalmente de grano grueso, que presenta estas
características [Meyer 2001]:
son vendidos o licenciados al público en general
los mantiene y actualiza el propio vendedor, quien
mantiene los derechos de la propiedad intelectual
están disponibles en forma de múltiples copias, todas
idénticas entre sí
su código no puede ser modificado por el usuario
22
Lidia Fuentes Fernández
Mercado Global de
Componentes
Actores
Programadores autónomos
Proveedores de Software Independientes,
intermediarios, ...
Usuarios compradores
Catálogos de componentes
Extensión de IDLs para incorporar información de
mercadotecnia
Autor, Calidad de Servicio, Licencia, Demos,....
Ej: componentsource.com, www.flashline.com,
www.wrldcomp.com
24
21
23
4
Lidia Fuentes Fernández
Mercado Global de
Componentes
Beneficios del uso de componentes COTS
Mayor estabilidad del software
Mayor eficiencia del software
Reduce el tiempo de desarrollo
Reduce el coste del producto final
Lidia Fuentes Fernández
Lidia Fuentes Fernández
componentsource.com: venta
componentsource.com:compra
Lidia Fuentes Fernández
componentsource.com:encargo
25
27
Lidia Fuentes Fernández
Desarrollo Basado en COTS
El uso de COTS sugiere nuevos ciclos de
desarrollo
El éxito del uso de COTS depende de la eficacia
del proceso de selección
Evaluación
Selección
Adap
Comentarios de: Tecnologías para el desarrollo de aplicaciones distribuidas (0)
No hay comentarios