SlideShare ist ein Scribd-Unternehmen logo
1 von 10
Downloaden Sie, um offline zu lesen
ADLs
• Em geral       cada     ADL     oferece            capacidades
  específicas
   – AESOP: permite o uso de estilos arquiteturais
   – ADAGE: permite a descrição de frameworks
     arquiteturais para sistemas de aviação
   – C2: permite a descrição de sistemas de interface com
     usuário usando um estilo baseado em mensagem
   – Wright: suporta a especificação e análise de interações
     entre componentes arquiteturais


                                   Arquitetura de Software – Thaís Batista




                         ACME
• Architecture Description Language
• Motivação:
   – Proliferação de ADLs
   – Necessidade de um formato “padrão”


   Linguagem para Intercâmbio de Descrições
            Arquiteturais = ACME

                                   Arquitetura de Software – Thaís Batista




                                                                             1
ACME
           Objetivos Principais
• Permitir a integração de diferentes
  ferramentas oferecendo uma forma comum
  de intercâmbio arquitetural
• Permitir o desenvolvimento de arquitetura
  compatível com múltiplas ADLs
• Esclarecer o relacionamento entre diferentes
  ADLs


                               Arquitetura de Software – Thaís Batista




                 ACME
          Objetivos Secundários
• Oferecer um esquema para representação de
  arquiteturas que irá permitir o desenvolvimento de
  novas ferramentas para análise e visualização de
  estruturas arquiteturais
• Oferecer      uma      fundamentação     para    o
  desenvolvimento de ADLs
• Servir como veículo para criar convenções e
  padrões para informação arquitetural
• Oferecer descrições expressivas que são fáceis de
  ler e escrever

                               Arquitetura de Software – Thaís Batista




                                                                         2
ACME
• Formato de Intercâmbio Genérico +
  facilidades de anotação para informações
  adicionais específicas de ADLs




                           Arquitetura de Software – Thaís Batista




                 ACME
              Características
• ONTOLOGIA arquitetural: com sete
  elementos para design arquitetural
• Mecanismo de ANOTAÇÃO: suportando
  associação de informação não estrutural
  usando       sublinguagens         definidas
  externamente
• Mecanismo de TEMPLATE
• Framework de semântica aberta

                           Arquitetura de Software – Thaís Batista




                                                                     3
ACME
                       Elementos
• Sete tipos de entidades para representação
  arquitetural:
  –   Componentes
  –   Conectores
  –   Sistemas
  –   Portas
  –   Papéis
  –   Representações
  –   Rep-Maps

                             Arquitetura de Software – Thaís Batista




                     ACME
                   Componentes
• Elemento computacional primário
• Exemplos típicos:
  –   Clientes
  –   Servidores
  –   Filtros
  –   Objetos



                             Arquitetura de Software – Thaís Batista




                                                                       4
ACME
                   Conectores
• Representam interações entre componentes
• Mediam a comunicação e coordenação entre
  componentes
• Exemplos:
  –   Pipes
  –   RPC
  –   Eventos
  –   Protocolos Cliente-Servidor

                               Arquitetura de Software – Thaís Batista




                      ACME
                     Sistemas
• Representam       Configurações                                  de
  componentes e conectores




                               Arquitetura de Software – Thaís Batista




                                                                         5
ACME
                 Interfaces
• Portas => Componentes

• Papéis => Conectores




                           Arquitetura de Software – Thaís Batista




                   ACME
                   Portas
• Interfaces dos componentes são definidas
  por PORTAS
• Cada porta identifica um ponto de interação
  entre o componente e seu ambiente
• Um componente pode prover múltiplas
  interfaces usando diferentes tipos de portas



                           Arquitetura de Software – Thaís Batista




                                                                     6
ACME
                         Papéis
• Interfaces dos Conectores são definidas por papéis
• Cada papel de um conector define um participante
  da interação representada pelo conector
• Conectores Binários têm dois papéis:
   – Em RPC: Caller e Callee
   – Em um Pipe: Leitura e Escrita
• Outros tipos de conectores podem ter mais que
  dois papéis. Exemplo: Broadcast de eventos pode
  ter um papel de um announcer e um número
  arbitrário de papeis de receiver.
                                     Arquitetura de Software – Thaís Batista




                         ACME
                        Exemplo
                  RPC
    Cliente                      Servidor

   System simple_cs = {
     Component client = {Port send-request }
     Component server = {Port receive-request }
     Connector rpc = { Roles {caller, callee} }
     Attachments: {
            client.send-request to rpc.caller ;
            server.receive-request to rpc.callee }
   }
                                     Arquitetura de Software – Thaís Batista




                                                                               7
ACME
              Representação
• Usado para descrição da representação
  hierárquica de arquiteturas
• O uso de múltiplas representações permite
  expressar múltiplas visões das entidades
  arquiteturais




                          Arquitetura de Software – Thaís Batista




                  ACME
                 Rep-Map
• Usado para definir a correspondência entre
  a representação interna do sistema e a
  interface externa do componente ou
  conector
• Descreve uma associação entre portas
  externas e portas internas (para conectores
  define uma associação entre papéis internos
  e papéis externos)

                          Arquitetura de Software – Thaís Batista




                                                                    8
ACME
                                 Propriedades
  • Para acomodar a ampla variedade de
    informação auxiliar, ACME suporta
    anotação de estruturas arquiteturais com
    listas de propriedades
  • Cada propriedade tem: nome, tipo opcional
    e valor
  • Qualquer um dos sete tipos de entidades
    arquiteturais ACME podem ser anotadas

                                                         Arquitetura de Software – Thaís Batista




                     ACME
             Exemplo com Propriedades
System simple_cs = {
  Component client = {
       Port send-request;
       Properties { Aesop-style: style-id = client-server;
                     Unicon-style: style-id = cs;
                      source-code: external = “CODE-LIB/client.c” }}
  Component server = {
       Port receive-request
       Properties { idempotence: boolean = true;
                      max_concurrent_clients : integer = 1;
                      source-code: external = “CODE-LIB/server.c” }}
  Connector rpc = { Roles {caller, callee} }
       Properties { synchronous : boolean = true;
                      max_roles : integer = 2;
                      protocol = Wright = “...” }}
  Attachments: {
         client.send-request to rpc.caller ;
         server.receive-request to rpc.callee } }   Arquitetura de Software – Thaís Batista




                                                                                                   9
Exemplo

                   cliente                     servidor



                                   REPRESENTATIONS
                Properties
Shape = rect.    While(data)
Width = 100      Read(resp)
Color = blue
                 SOURCE CODE                                  High-Perf-rp: RepMap
VISUAL
                               Small-mem-rp: RepMap


                                           Arquitetura de Software – Thaís Batista




                                                                                     10

Weitere ähnliche Inhalte

Andere mochten auch

A Brief Tour of Responsability Driven Design
A Brief Tour of Responsability Driven DesignA Brief Tour of Responsability Driven Design
A Brief Tour of Responsability Driven Designelliando dias
 
How To Build A Better Arduino
How To Build A Better ArduinoHow To Build A Better Arduino
How To Build A Better ArduinoAlastairDSilva
 
Interfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIInterfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIelliando dias
 
hardware de um sistema de computação
hardware de um sistema de computaçãohardware de um sistema de computação
hardware de um sistema de computaçãoelliando dias
 
Representação de Números
Representação de NúmerosRepresentação de Números
Representação de Númeroselliando dias
 
Enabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition LanguageEnabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition Languageelliando dias
 
Linguagens de Transformação de Modelos
Linguagens de Transformação de ModelosLinguagens de Transformação de Modelos
Linguagens de Transformação de Modeloselliando dias
 
UML-Based Web Engineering
UML-Based Web EngineeringUML-Based Web Engineering
UML-Based Web Engineeringelliando dias
 
Gerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de SistemaGerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de Sistemaelliando dias
 
Banco De Dados Básico
Banco De Dados BásicoBanco De Dados Básico
Banco De Dados Básicoelliando dias
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slideselliando dias
 
Introduction to ROBOTICS
Introduction to ROBOTICSIntroduction to ROBOTICS
Introduction to ROBOTICSelliando dias
 

Andere mochten auch (14)

A Brief Tour of Responsability Driven Design
A Brief Tour of Responsability Driven DesignA Brief Tour of Responsability Driven Design
A Brief Tour of Responsability Driven Design
 
How To Build A Better Arduino
How To Build A Better ArduinoHow To Build A Better Arduino
How To Build A Better Arduino
 
Algoritmo Genetico
Algoritmo GeneticoAlgoritmo Genetico
Algoritmo Genetico
 
Interfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUIInterfaces de Usuário Ubíquas - UUI
Interfaces de Usuário Ubíquas - UUI
 
hardware de um sistema de computação
hardware de um sistema de computaçãohardware de um sistema de computação
hardware de um sistema de computação
 
Representação de Números
Representação de NúmerosRepresentação de Números
Representação de Números
 
Enabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition LanguageEnabling White-Box Reuse in a Pure Composition Language
Enabling White-Box Reuse in a Pure Composition Language
 
Linguagens de Transformação de Modelos
Linguagens de Transformação de ModelosLinguagens de Transformação de Modelos
Linguagens de Transformação de Modelos
 
Robótica Móvel
Robótica MóvelRobótica Móvel
Robótica Móvel
 
UML-Based Web Engineering
UML-Based Web EngineeringUML-Based Web Engineering
UML-Based Web Engineering
 
Gerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de SistemaGerenciamento de Projeto para Desenvolvimento de Sistema
Gerenciamento de Projeto para Desenvolvimento de Sistema
 
Banco De Dados Básico
Banco De Dados BásicoBanco De Dados Básico
Banco De Dados Básico
 
Clojurescript slides
Clojurescript slidesClojurescript slides
Clojurescript slides
 
Introduction to ROBOTICS
Introduction to ROBOTICSIntroduction to ROBOTICS
Introduction to ROBOTICS
 

Ähnlich wie ACME - Linguagem para Intercâmbio de Descrições Arquiteturais

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Softwareelliando dias
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...BrunoSouza617
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.netleojr_0
 
Configuração de Drivers
Configuração de DriversConfiguração de Drivers
Configuração de DriversAVEVA
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlManuel Lemos
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-ptPedro Sousa
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresLuis Ferreira
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlDiego Tremper
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - IntroduçãoMarco Pinheiro
 
Arquitetura 3 camadas - RM
Arquitetura 3 camadas - RMArquitetura 3 camadas - RM
Arquitetura 3 camadas - RMHBB Consultoria
 
Análise de Tráfego TCP/IP
Análise de Tráfego TCP/IPAnálise de Tráfego TCP/IP
Análise de Tráfego TCP/IPThiago Finardi
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlDiego Tremper
 
Architecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesArchitecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesMarkus Christen
 
Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Marcelo Charan
 
Começando com aplicações serverless na AWS
 Começando com aplicações serverless na AWS Começando com aplicações serverless na AWS
Começando com aplicações serverless na AWSAmazon Web Services LATAM
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Softwareelliando dias
 

Ähnlich wie ACME - Linguagem para Intercâmbio de Descrições Arquiteturais (20)

Arquitetura de Software
Arquitetura de SoftwareArquitetura de Software
Arquitetura de Software
 
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
Symfony Live - São Paulo 2019 - Como construir uma API em um passo com API Pl...
 
Diagramas de distribuicao
Diagramas de distribuicaoDiagramas de distribuicao
Diagramas de distribuicao
 
Fundamentos do asp.net
Fundamentos do asp.netFundamentos do asp.net
Fundamentos do asp.net
 
Configuração de Drivers
Configuração de DriversConfiguração de Drivers
Configuração de Drivers
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Integracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControlIntegracao Contínua com CruiseControl e phpUnderControl
Integracao Contínua com CruiseControl e phpUnderControl
 
Workshop Ruby on Rails dia 2 ruby-pt
Workshop Ruby on Rails dia 2  ruby-ptWorkshop Ruby on Rails dia 2  ruby-pt
Workshop Ruby on Rails dia 2 ruby-pt
 
Módulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de ComputadoresMódulo 5 Arquitetura de Computadores
Módulo 5 Arquitetura de Computadores
 
Integração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControlIntegração Contínua com Cruise Control e phpUnderControl
Integração Contínua com Cruise Control e phpUnderControl
 
2006 - ASP.NET.ppt
2006 - ASP.NET.ppt2006 - ASP.NET.ppt
2006 - ASP.NET.ppt
 
PHPMyadmin - Introdução
PHPMyadmin - IntroduçãoPHPMyadmin - Introdução
PHPMyadmin - Introdução
 
Arquitetura 3 camadas - RM
Arquitetura 3 camadas - RMArquitetura 3 camadas - RM
Arquitetura 3 camadas - RM
 
Análise de Tráfego TCP/IP
Análise de Tráfego TCP/IPAnálise de Tráfego TCP/IP
Análise de Tráfego TCP/IP
 
Integração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControlIntegração Contínua com CruiseControl e phpUnderControl
Integração Contínua com CruiseControl e phpUnderControl
 
Architecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de AplicaçõesArchitecture In a Box - Plataforma de Aplicações
Architecture In a Box - Plataforma de Aplicações
 
Redes 1 - Sockets em C#
Redes 1 - Sockets em C#Redes 1 - Sockets em C#
Redes 1 - Sockets em C#
 
Começando com aplicações serverless na AWS
 Começando com aplicações serverless na AWS Começando com aplicações serverless na AWS
Começando com aplicações serverless na AWS
 
MODELO ASP
MODELO ASPMODELO ASP
MODELO ASP
 
Visão Geral Arquiteturade Software
Visão Geral Arquiteturade SoftwareVisão Geral Arquiteturade Software
Visão Geral Arquiteturade Software
 

Mehr von elliando dias

Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScriptelliando dias
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structureselliando dias
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de containerelliando dias
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agilityelliando dias
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Librarieselliando dias
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!elliando dias
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Webelliando dias
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduinoelliando dias
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorceryelliando dias
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Designelliando dias
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makeselliando dias
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.elliando dias
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebookelliando dias
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Studyelliando dias
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introductionelliando dias
 

Mehr von elliando dias (20)

Why you should be excited about ClojureScript
Why you should be excited about ClojureScriptWhy you should be excited about ClojureScript
Why you should be excited about ClojureScript
 
Functional Programming with Immutable Data Structures
Functional Programming with Immutable Data StructuresFunctional Programming with Immutable Data Structures
Functional Programming with Immutable Data Structures
 
Nomenclatura e peças de container
Nomenclatura  e peças de containerNomenclatura  e peças de container
Nomenclatura e peças de container
 
Geometria Projetiva
Geometria ProjetivaGeometria Projetiva
Geometria Projetiva
 
Polyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better AgilityPolyglot and Poly-paradigm Programming for Better Agility
Polyglot and Poly-paradigm Programming for Better Agility
 
Javascript Libraries
Javascript LibrariesJavascript Libraries
Javascript Libraries
 
How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!How to Make an Eight Bit Computer and Save the World!
How to Make an Eight Bit Computer and Save the World!
 
Ragel talk
Ragel talkRagel talk
Ragel talk
 
A Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the WebA Practical Guide to Connecting Hardware to the Web
A Practical Guide to Connecting Hardware to the Web
 
Introdução ao Arduino
Introdução ao ArduinoIntrodução ao Arduino
Introdução ao Arduino
 
Minicurso arduino
Minicurso arduinoMinicurso arduino
Minicurso arduino
 
Incanter Data Sorcery
Incanter Data SorceryIncanter Data Sorcery
Incanter Data Sorcery
 
Rango
RangoRango
Rango
 
Fab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine DesignFab.in.a.box - Fab Academy: Machine Design
Fab.in.a.box - Fab Academy: Machine Design
 
The Digital Revolution: Machines that makes
The Digital Revolution: Machines that makesThe Digital Revolution: Machines that makes
The Digital Revolution: Machines that makes
 
Hadoop + Clojure
Hadoop + ClojureHadoop + Clojure
Hadoop + Clojure
 
Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.Hadoop - Simple. Scalable.
Hadoop - Simple. Scalable.
 
Hadoop and Hive Development at Facebook
Hadoop and Hive Development at FacebookHadoop and Hive Development at Facebook
Hadoop and Hive Development at Facebook
 
Multi-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case StudyMulti-core Parallelization in Clojure - a Case Study
Multi-core Parallelization in Clojure - a Case Study
 
From Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn IntroductionFrom Lisp to Clojure/Incanter and RAn Introduction
From Lisp to Clojure/Incanter and RAn Introduction
 

ACME - Linguagem para Intercâmbio de Descrições Arquiteturais

  • 1. ADLs • Em geral cada ADL oferece capacidades específicas – AESOP: permite o uso de estilos arquiteturais – ADAGE: permite a descrição de frameworks arquiteturais para sistemas de aviação – C2: permite a descrição de sistemas de interface com usuário usando um estilo baseado em mensagem – Wright: suporta a especificação e análise de interações entre componentes arquiteturais Arquitetura de Software – Thaís Batista ACME • Architecture Description Language • Motivação: – Proliferação de ADLs – Necessidade de um formato “padrão” Linguagem para Intercâmbio de Descrições Arquiteturais = ACME Arquitetura de Software – Thaís Batista 1
  • 2. ACME Objetivos Principais • Permitir a integração de diferentes ferramentas oferecendo uma forma comum de intercâmbio arquitetural • Permitir o desenvolvimento de arquitetura compatível com múltiplas ADLs • Esclarecer o relacionamento entre diferentes ADLs Arquitetura de Software – Thaís Batista ACME Objetivos Secundários • Oferecer um esquema para representação de arquiteturas que irá permitir o desenvolvimento de novas ferramentas para análise e visualização de estruturas arquiteturais • Oferecer uma fundamentação para o desenvolvimento de ADLs • Servir como veículo para criar convenções e padrões para informação arquitetural • Oferecer descrições expressivas que são fáceis de ler e escrever Arquitetura de Software – Thaís Batista 2
  • 3. ACME • Formato de Intercâmbio Genérico + facilidades de anotação para informações adicionais específicas de ADLs Arquitetura de Software – Thaís Batista ACME Características • ONTOLOGIA arquitetural: com sete elementos para design arquitetural • Mecanismo de ANOTAÇÃO: suportando associação de informação não estrutural usando sublinguagens definidas externamente • Mecanismo de TEMPLATE • Framework de semântica aberta Arquitetura de Software – Thaís Batista 3
  • 4. ACME Elementos • Sete tipos de entidades para representação arquitetural: – Componentes – Conectores – Sistemas – Portas – Papéis – Representações – Rep-Maps Arquitetura de Software – Thaís Batista ACME Componentes • Elemento computacional primário • Exemplos típicos: – Clientes – Servidores – Filtros – Objetos Arquitetura de Software – Thaís Batista 4
  • 5. ACME Conectores • Representam interações entre componentes • Mediam a comunicação e coordenação entre componentes • Exemplos: – Pipes – RPC – Eventos – Protocolos Cliente-Servidor Arquitetura de Software – Thaís Batista ACME Sistemas • Representam Configurações de componentes e conectores Arquitetura de Software – Thaís Batista 5
  • 6. ACME Interfaces • Portas => Componentes • Papéis => Conectores Arquitetura de Software – Thaís Batista ACME Portas • Interfaces dos componentes são definidas por PORTAS • Cada porta identifica um ponto de interação entre o componente e seu ambiente • Um componente pode prover múltiplas interfaces usando diferentes tipos de portas Arquitetura de Software – Thaís Batista 6
  • 7. ACME Papéis • Interfaces dos Conectores são definidas por papéis • Cada papel de um conector define um participante da interação representada pelo conector • Conectores Binários têm dois papéis: – Em RPC: Caller e Callee – Em um Pipe: Leitura e Escrita • Outros tipos de conectores podem ter mais que dois papéis. Exemplo: Broadcast de eventos pode ter um papel de um announcer e um número arbitrário de papeis de receiver. Arquitetura de Software – Thaís Batista ACME Exemplo RPC Cliente Servidor System simple_cs = { Component client = {Port send-request } Component server = {Port receive-request } Connector rpc = { Roles {caller, callee} } Attachments: { client.send-request to rpc.caller ; server.receive-request to rpc.callee } } Arquitetura de Software – Thaís Batista 7
  • 8. ACME Representação • Usado para descrição da representação hierárquica de arquiteturas • O uso de múltiplas representações permite expressar múltiplas visões das entidades arquiteturais Arquitetura de Software – Thaís Batista ACME Rep-Map • Usado para definir a correspondência entre a representação interna do sistema e a interface externa do componente ou conector • Descreve uma associação entre portas externas e portas internas (para conectores define uma associação entre papéis internos e papéis externos) Arquitetura de Software – Thaís Batista 8
  • 9. ACME Propriedades • Para acomodar a ampla variedade de informação auxiliar, ACME suporta anotação de estruturas arquiteturais com listas de propriedades • Cada propriedade tem: nome, tipo opcional e valor • Qualquer um dos sete tipos de entidades arquiteturais ACME podem ser anotadas Arquitetura de Software – Thaís Batista ACME Exemplo com Propriedades System simple_cs = { Component client = { Port send-request; Properties { Aesop-style: style-id = client-server; Unicon-style: style-id = cs; source-code: external = “CODE-LIB/client.c” }} Component server = { Port receive-request Properties { idempotence: boolean = true; max_concurrent_clients : integer = 1; source-code: external = “CODE-LIB/server.c” }} Connector rpc = { Roles {caller, callee} } Properties { synchronous : boolean = true; max_roles : integer = 2; protocol = Wright = “...” }} Attachments: { client.send-request to rpc.caller ; server.receive-request to rpc.callee } } Arquitetura de Software – Thaís Batista 9
  • 10. Exemplo cliente servidor REPRESENTATIONS Properties Shape = rect. While(data) Width = 100 Read(resp) Color = blue SOURCE CODE High-Perf-rp: RepMap VISUAL Small-mem-rp: RepMap Arquitetura de Software – Thaís Batista 10