View
232
Download
0
Category
Preview:
Citation preview
DEPARTAMENTO DE SISTEMAS
Introducción
• Uno de los objetivos de una Arquitectura de Software es comunicar o Documentos de Arquitecturas de Software
Usualmente expresados en lenguaje natural Modelos (UML) Comunican bien decisiones arquitecturales No son facilmente verficables y validables
o Lenguajes de Descripción (ADLs) Formales Semántica clara Verificables / Validables Sintaxis compleja
DEPARTAMENTO DE SISTEMAS
ADLs - Acme
• ADLs o Lenguajes que proveen elementos para modelar la
arquitectura conceptual de un sistema o Debe soportar los bloques principales de una
descripción arquitectural Componentes Conectores
DEPARTAMENTO DE SISTEMAS
ADLs - Acme
• ACME o Creado en 1995 o Su objetivo principal era ofrecer un mecanismo de
intercambio de descripciones arquitecturales o Adicionalmente provee herramientas de análisis y
diseño de arquitecturas ACME Language ACME Tool Developer’s Library (AcmeLib)
o Provee tres funcionalidades básicas Intercambio arquitectural Plataforma extensible de herramientas de arquitectura Descripción de arquitecturas
DEPARTAMENTO DE SISTEMAS
ADLs - Acme
• Lenguaje ACME o Ontología de arquitecturas
Components, Connectors, Systems, Ports, Roles, Representations, Re-maps
o Provee un mecanismo de anotaciones o Provee tipos arquitecturales (Estilos) o Marco de análisis semántico
DEPARTAMENTO DE SISTEMAS
ADLs - Acme
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; } }
DEPARTAMENTO DE SISTEMAS
ADLs - Acme
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; }
DEPARTAMENTO DE SISTEMAS
ADLs - Acme
• Análisis Semántico o Open Semantic Framework o Formalismo lógico basado en relaciones y
restricciones o Una descripción Acme se representa con un
predicado o El predicado puede ser consultado mediante
sentencias lógicas o 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
DEPARTAMENTO DE SISTEMAS
ADLs - Rapide
• Rapide o Desarrollado por David Luckham (Stanford) o ADL de propósito general o Su objetivo es facilitar la simulación de eventos
Comportamientos aceptados y prohibidos
o Las especificaciones Rapide son ejecutables o Lenguaje OO
Modela concurrencia
o Requerimientos del sistema son expresados como restricciones en el tiempo
DEPARTAMENTO DE SISTEMAS
ADLs - Rapide
• Principales Elementos o Component
Interface Objects Module (Implementan los Objetos Interface)
o Connector 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
o Constraints Se definen en las conecciones de la arquitectura
DEPARTAMENTO DE SISTEMAS
ADLs - Rapide
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;
DEPARTAMENTO DE SISTEMAS
ADLs - Wright
• Desarrollado por David Garlan (CMU) • ADL de propósito general • Enfasis en análisis de protocolos de
comunicación • Elementos Principales
o Componente o Conector
• Herramientas de desarrollo limitadas
DEPARTAMENTO DE SISTEMAS
ADLs - Wright
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.
DEPARTAMENTO DE SISTEMAS
ADLs - xADL
• Lenguaje de Descripción de Arquitecturas basado en XML
• Desarrollado por el Institute for Software Research (Universidad de California)
• Principales elementos o Componente o Conector o Interfaces o Configuraciones
• Facilmente extensible (módulos)
DEPARTAMENTO DE SISTEMAS
ADLs - xADL
<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>
DEPARTAMENTO DE SISTEMAS
ADLs - xADL
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" } }
DEPARTAMENTO DE SISTEMAS
ADLs - xADL
• xADL diferencia dos tipos de elementos o Instancias Arquitecturales (Ejecución) o Estructura Arquitectural (Diseño)
• Herramientas de Desarrollo – ArchStudio/ArchEdit o Editor gráfico para documentos xADL 2.0 o Visualización de Arquitecturas o Análisis de Arquitecturas
Recommended