Lenguajes de Descripción de Arquitecturas

Anuncio
DEPARTAMENTO DE SISTEMAS
Arquitecturas de Software
Lenguajes de Descripción de Arquitecturas ADLs
Agenda
DEPARTAMENTO DE SISTEMAS
•  Introducción
•  Lenguajes de Descripción de Arquitecturas
Introducción
DEPARTAMENTO DE SISTEMAS
•  Uno de los objetivos de una Arquitectura de
Software es comunicar
o 
Documentos de Arquitecturas de Software
 
 
 
 
o 
Usualmente expresados en lenguaje natural
Modelos (UML)
Comunican bien decisiones arquitecturales
No son facilmente verficables y validables
Lenguajes de Descripción (ADLs)
 
 
 
 
Formales
Semántica clara
Verificables / Validables
Sintaxis compleja
ADLs - Acme
DEPARTAMENTO DE SISTEMAS
•  ADLs
o 
o 
Lenguajes que proveen elementos para modelar la
arquitectura conceptual de un sistema
Debe soportar los bloques principales de una
descripción arquitectural
 
 
Componentes
Conectores
ADLs - Acme
DEPARTAMENTO DE SISTEMAS
•  Algunos ADLs
o 
o 
o 
o 
o 
ACME
Rapide
Wrigth
UML
xADL
ADLs - Acme
DEPARTAMENTO DE SISTEMAS
•  ACME
o 
o 
o 
Creado en 1995
Su objetivo principal era ofrecer un mecanismo de
intercambio de descripciones arquitecturales
Adicionalmente provee herramientas de análisis y
diseño de arquitecturas
 
 
o 
ACME Language
ACME Tool Developer’s Library (AcmeLib)
Provee tres funcionalidades básicas
 
 
 
Intercambio arquitectural
Plataforma extensible de herramientas de arquitectura
Descripción de arquitecturas
ADLs - Acme
DEPARTAMENTO DE SISTEMAS
•  Lenguaje ACME
o 
Ontología de arquitecturas
 
o 
o 
o 
Components, Connectors, Systems, Ports, Roles,
Representations, Re-maps
Provee un mecanismo de anotaciones
Provee tipos arquitecturales (Estilos)
Marco de análisis semántico
ADLs - Acme
DEPARTAMENTO DE SISTEMAS
System simple_cs = {
Component client = { Port send-request; };
Component server = { Port receive-request; };
Connector rpc = { Roels { caller, callee}};
Attachments {
client.send-request to rpc.caller;
server.receive-request to rpc.callee;
}
}
ADLs - Acme
DEPARTAMENTO DE SISTEMAS
System simple_cs = {
Component client = {
Port send-request;
Property Aesop-style : style-id = client-server;
Property UniCon-style : style-id = client-server;
Property source-code : external = "CODE-LIB/client.c";
}
Component server = {
Port receive-request;
Property idempotence : boolean = true;
Property max-concurrent-clients : integer = 1;
source-code : external = "CODE-LIB/server.c";
}
Connector rpc = {
Role caller;
Role callee;
Property asynchronous : boolean = true;
max-roles : integer = 2;
protocol : Wright = " ... ";
}
Attachment client.send-request to rpc.caller;
Attachment server.receive-request to rpc.callee;
}
ADLs - Acme
DEPARTAMENTO DE SISTEMAS
•  Análisis Semántico
o 
o 
o 
o 
o 
Open Semantic Framework
Formalismo lógico basado en relaciones y
restricciones
Una descripción Acme se representa con un
predicado
El predicado puede ser consultado mediante
sentencias lógicas
Comparado con artefactos para verificación
•  Herramientas de Soporte
o 
AcmeStudio / Plugin Eclipse
•  Mayor Información
o 
http://www.cs.cmu.edu/~acme/index.html
ADLs-Acme
DEPARTAMENTO DE SISTEMAS
ADLs - Rapide
DEPARTAMENTO DE SISTEMAS
•  Rapide
o 
o 
o 
Desarrollado por David Luckham (Stanford)
ADL de propósito general
Su objetivo es facilitar la simulación de eventos
 
o 
o 
Las especificaciones Rapide son ejecutables
Lenguaje OO
 
o 
Comportamientos aceptados y prohibidos
Modela concurrencia
Requerimientos del sistema son expresados
como restricciones en el tiempo
ADLs - Rapide
DEPARTAMENTO DE SISTEMAS
•  Principales Elementos
o 
Component
 
 
o 
Connector
 
 
 
 
o 
Interface Objects
Module (Implementan los Objetos Interface)
Interfaces de envío y recepción
Los componentes se comunican a través de conectores
Tres tipos de conecciones
Básicas, Pipes y Agentes
Constraints
 
Se definen en las conecciones de la arquitectura
ADLs - Rapide
DEPARTAMENTO DE SISTEMAS
type Producer (Max : Positive) is interface
action out Send (N: Integer);
action in Reply(N : Integer);
behavior
Start => send(0);
(?X in Integer) Reply(?X) where ?X<Max => Send(?X+1);
end Producer;
type Consumer is interface
action in Receive(N: Integer);
action out Ack(N : Integer);
behavior
(?X in Integer) Receive(?X) => Ack(?X);
end Consumer
architecture ProdCon() return SomeType is
Prod : Producer(100); Cons : Consumer;
connect
(?n in Integer) Prod.Send(?n) => Cons.Receive(?n);
Cons.Ack(?n) => Prod.Reply(?n);
end architecture ProdCon;
ADLs - Wright
DEPARTAMENTO DE SISTEMAS
•  Desarrollado por David Garlan (CMU)
•  ADL de propósito general
•  Enfasis en análisis de protocolos de
comunicación
•  Elementos Principales
o 
o 
Componente
Conector
•  Herramientas de desarrollo limitadas
ADLs - Wright
DEPARTAMENTO DE SISTEMAS
System simple_cs
Component client =
port send-request = [behavioral spec]
spec = [behavioral spec]
Component server =
port receive-request= [behavioral spec]
spec = [behavioral spec]
Connector rpc =
role caller = (request!x -> result?x ->caller) ^ STOP
role callee = (invoke?x -> return!x -> callee) [] STOP
glue = (caller.request?x -> callee.invoke!x -> callee.return?x
-> callee.result!x-> glue) [] STOP
Instances
s : server
c : client
r : rpc
Attachments :
client.send-request as rpc.caller
server.receive-request as rpc.callee
end simple_cs.
ADLs - xADL
DEPARTAMENTO DE SISTEMAS
•  Lenguaje de Descripción de Arquitecturas
basado en XML
•  Desarrollado por el Institute for Software
Research (Universidad de California)
•  Principales elementos
o 
o 
o 
o 
Componente
Conector
Interfaces
Configuraciones
•  Facilmente extensible (módulos)
ADLs - xADL
DEPARTAMENTO DE SISTEMAS
<types:component xsi:type="types:Component" types:id="xArchADT">
<types:description xsi:type="instance:Description">xArchADT</types:description>
<types:interface xsi:type="types:Interface" types:id="xArchADT.IFACE_TOP">
<types:description xsi:type="instance:Description">xArchADT Top Interface</
types:description>
<types:direction xsi:type="instance:Direction">inout</types:direction>
<types:type xsi:type="instance:XMLLink" xlink:type="simple"
xlink:href="#C2TopType" />
</types:interface>
<types:interface xsi:type="types:Interface" types:id="xArchADT.IFACE_BOTTOM">
<types:description xsi:type="instance:Description">xArchADT Bottom Interface</
types:description>
<types:direction xsi:type="instance:Direction">inout</types:direction>
<types:type xsi:type="instance:XMLLink" xlink:type="simple"
xlink:href="#C2BottomType" />
</types:interface>
<types:type xsi:type="instance:XMLLink" xlink:type="simple"
xlink:href="#xArchADT_type" />
</types:component>
ADLs - xADL
DEPARTAMENTO DE SISTEMAS
ADLs - xADL
DEPARTAMENTO DE SISTEMAS
archInstance{
componentInstance{
(attr) id = "comp1"
description = "Component 1"
interfaceInstance{
(attr) id = "comp1.IFACE_TOP"
description = "Component 1 Top Interface"
direction = "inout"
}
interfaceInstance{
(attr) id = "comp1.IFACE_BOTTOM"
description = "Component 1 Bottom Interface"
direction = "inout"
}
}
ADLs - xADL
DEPARTAMENTO DE SISTEMAS
•  xADL diferencia dos tipos de elementos
o 
o 
Instancias Arquitecturales (Ejecución)
Estructura Arquitectural (Diseño)
•  Herramientas de Desarrollo – ArchStudio/
ArchEdit
o 
o 
o 
Editor gráfico para documentos xADL 2.0
Visualización de Arquitecturas
Análisis de Arquitecturas
ADLs - xADL
DEPARTAMENTO DE SISTEMAS
Descargar