11
(Gp:) Emisor
(Gp:) Receptor
(Gp:) Buffer
Arquitectura
Productor/Consumidor
12
Objetivos de la AS
Comprender y manejar la estructura de las aplicaciones complejas
Reutilizar dicha estructura (o parte de ella)
Planificar la evolución de la aplicación
Analizar la corrección de la aplicación y su grado de cumplimiento frente a los requisitos iniciales
Permitir el estudio de propiedades específicas
13
Ventajas de las A.S.
Resaltan aquellos aspectos estucturalmente importantes, tanto funcionales como no funcionales
Eliminan muchos riesgos y errores de diseño, desarrollo e implantación
Permiten un desarrollo paralelo, aumentando la productividad
14
El “territorio” de las AS
15
Modelo, Vista y Punto de Vista
Modelo (model)
Una descripción completa de un sistema a un determinado nivel de abstracción
Vista (view)
Una proyección de un modelo desde una perspectiva
Omite las entidades y elementos que no son relevantes
Punto de vista (viewpoint)
La definición (o descripción) de una vista
Prescribe su contenido, significado y representación
16
Niveles de Abstracción
Estilos arquitectónicos
familias de sistemas que siguen el mismo patrón estructural
Modelos y arquitecturas de referencia
particularizan un estilo y definen los conceptos asociados
Marcos de Trabajo
arquitectura reutilizable en aplicaciones de un mismo dominio
Familias y líneas de productos
arquitectura de una aplicación con diferentes configuraciones
Instancias
arquitectura de una aplicación concreta
17
Estilos Arquitectónicos
Componentes
unidades computacionales y de datos
Conectores
mecanismos de interacción entre componentes
Patrones y restricciones de interconexión
invariantes del estilo
Mecanismos de control
coordinación entre componentes
Propiedades
ventajas e inconvenientes
18
Clasificación de estilos
Sistemas de flujo de datos
Sistemas basados en llamada y retorno
Sistemas de componentes independientes
Sistemas centrados en los datos
Máquinas virtuales
Sistemas heterogéneos
19
Estilos y subestilos (I)
Sistemas de flujo de datos
Sucesión de transformaciones de los datos de entrada
Subestilos: pipe & filter y procesamiento por lotes
Sistemas basados en llamada y retorno
Reflejan la estructura del lenguaje de programación
Subestilos: programa principal-subrutina, OO, capas
Sistemas de componentes independientes
Componentes distribuidos que se comunican por paso de mensajes
Subestilos: sistemas cliente/servidor y de eventos
20
Estilos y subestilos (II)
Sistemas centrados en los datos
Acceso compartido a un banco de datos central
Subestilos: repositorio y pizarras (blackboards)
Máquinas virtuales
Simulan una funcionalidad no nativa del entorno
Subestilos: intérpretes y sistemas basados en reglas
Sistemas heterogéneos
Localmente, jerárquicamente o simultáneamente heterogéneos
21
Descripción de Arquitecturas
Diagramas informales de cajas y líneas
Imprecisos, ambiguos y no analizables
Lenguajes de programación modular
Mezclan aspectos de programación y estructurales
El análisis se basa en emparejamiento de nombres
Lenguajes de interconexión de módulos (MILs o IDLs)
Implican un determinado mecanismo de interacción
UML como notación arquitectónica
Lenguajes de Descripción de Arquitectura (LDAs)
22
Lenguajes de Descripción de Arquitecturas (LDAs)
Un LDA es un lenguaje o notación para describir una arquitectura software:
Descripción de componentes, conectores y enlaces entre ellos.
Herramientas para la verificación de la arquitectura y el prototipado rápido.
Existen LDAs de propósito general y otros de dominio específico (DSLs)
23
(Gp:) Sender
(Gp:) Receiver
(Gp:) Buffer
(Gp:) Arquitectura
Productor/Consumidor
(Gp:) Enlaces puertos/roles ¿ analizables ?
(Gp:) Puertos: describen el comportamiento de las componentes
(Gp:) writer
(Gp:) storage
(Gp:) reader
(Gp:) retrieval
(Gp:) Roles: describen el comportamiento de los conectores
24
Requisitos de un ADL
Composición
Debe describir el sistema como una composición de partes
Configuración
Debe describir la arquitectura independientemente de los componentes
Abstracción
Debe describir los roles abstractos que juegan los componentes
Reutilización
Debe permitir reutilizar componentes, conectores, y arquitecturas
Heterogeneidad
Debe permitir combinar descripciones heterogéneas
Análisis
Debe permitir diversas formas de análisis de la arquitectura
25
Ejemplos de LDAs
Ejemplos:
UNICON (Shaw et al. 1995)
Rapide (Luckham et al. 1995)
Darwin (Magee y Kramer, 1996; 1999)
Wright (Allen y Garlan, 1997; 1998)
Executable Connectors (Ducasse y Richner, 1997)
Problema: No cubren todo el ciclo de vida de las aplicaciones software (sólo diseño preliminar), no llegan a la implementación
26
Ejemplos de LDAs : UNICON
Una pipe de Unix
connector Unix-pipe
protocol is
type pipe
role source is Source
MaxConns(1)
end source
role sink is Sink
MaxConns(1)
end sink
end protocol
…
implementation is
builtin
end implementation
end Unix-Pipe
27
Ejemplos de LDAs : Wright
Una pipe de Unix
connector Pipe =
role WRITER = write ? WRITER ? close ? ?
role READER = let ExitOnly = close ??
in let DoRead = (read ? READER ? readEoF ? ExitOnly
in DoRead ? ExitOnly
glue = let ReadOnly = READER.read ? readOnly
? READER.readEoF ? READER.close ??
? READER.close ??
in let WriteOnly = WRITER.write ? WriteOnly ? WRITER.close??
in WRITER.write ? glue ? READER.read ? glue
? WRITE.close ? ReadOnly ? READER.close ? WriteOnly
28
Ejemplos de LDAs : RAPIDE
type Application is interface
extern action Receive(p:params); // evento de entrada
public action Results(p:params); // evento de salida
behaviour
(?M in String) Receive(?M) => Results(?M); // transición de eventos
end Application;
architecture DistrApp(Num: Integer) return InterfaceDistrApp is
P : array(Integer) of Application;
Q: array(Integer) of Resource; //Dual of Application
connect
for i:Integer in 1..Num generate
(?M in String) P(i). Receive(?M) to Q(i).Results(?M);
P(i).Results(?M) to Q(i). Receive(?M);
end generate;
end DistrApp;
29
Ejemplos de LDAs : Darwin
(Gp:) entrada
(Gp:) cabeza : Filtro
(Gp:) ant
(Gp:) salida
(Gp:) salida
(Gp:) : Pipeline
(Gp:) entrada
(Gp:) salida
(Gp:) cauce : Pipeline
(Gp:) sig
30
LDAs del grupo GISUM
LDC + LDS (Fuentes y Troya, 1998)
Modelo de componentes pasivos y conectores reactivos
Formalismo de especificación de comportamiento de conectores (TDFs, ?-cálculo, etc.)
LEDA (Canal, Pimentel y Troya, 2000)
Basado en el álgebra de procesos ?-cálculo
Permite especificar arquitecturas dinámicas
Página anterior | Volver al principio del trabajo | Página siguiente |