22
DEPARTAMENTO DE SISTEMAS Arquitecturas de Software Lenguajes de Descripción de Arquitecturas ADLs

Arquitecturas de Software - Profesoresisis3702/dokuwiki/lib/... · DEPARTAMENTO DE SISTEMAS ADLs - Acme • ADLs o Lenguajes que proveen elementos para modelar la arquitectura conceptual

  • Upload
    lyminh

  • View
    228

  • Download
    0

Embed Size (px)

Citation preview

DEPARTAMENTO DE SISTEMAS

Arquitecturas de Software

Lenguajes de Descripción de Arquitecturas ADLs

DEPARTAMENTO DE SISTEMAS

Agenda

•  Introducción •  Lenguajes de Descripción de Arquitecturas

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

•  Algunos ADLs o  ACME o  Rapide o  Wrigth o  UML o  xADL

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-Acme

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

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

DEPARTAMENTO DE SISTEMAS

ADLs - xADL