+ All Categories
Home > Documents > Arquitecturas de Software - Profesoresisis3702/dokuwiki/lib/... · DEPARTAMENTO DE SISTEMAS ADLs -...

Arquitecturas de Software - Profesoresisis3702/dokuwiki/lib/... · DEPARTAMENTO DE SISTEMAS ADLs -...

Date post: 15-Sep-2018
Category:
Upload: lyminh
View: 228 times
Download: 0 times
Share this document with a friend
22
DEPARTAMENTO DE SISTEMAS Arquitecturas de Software Lenguajes de Descripción de Arquitecturas ADLs
Transcript

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


Recommended