An Infrastructure for Development of Dynamically Adaptable Distributed Components

Documentos relacionados
5 Trabalhos Relacionados

Objetos e Componentes Distribuídos: EJB

Requisitos de sistemas

Técnicas para Reutilização de Software

Introdução ao SCS. Tecgraf PUC-Rio. outubro de 2010

Adriano Medeiros dos Santos. Suporte a Componentes Compostos Para o Middleware SCS. Dissertação de Mestrado

Utilizando linguagens de programação orientadas a objetos para codificar programas adaptativos

Hélcio Bezerra de Mello. Proxies Inteligentes Automáticas DISSERTAÇÃO DE MESTRADO. Programa de Pós graduação em Informática

Arquitetura e Objetos Distribuídos em CORBA. Aula 3. Especificações OMA Object Web

3 Trabalhos relacionados

Agenda da Aula. Arquitetura de Software e Padrões Arquiteturais. Elementos de um Padrão. Arquitetura de Software. Arquitetura de Software

por parte dos usuários dos sistemas de computação se tornou menos necessária e a popularidade desse tipo de linguagem diminuiu. Mais recentemente, a

Informática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1

Ciclo de vida: fases x atividades

SCS-Lua - Tutorial - Básico

Sistemas Distribuídos

Projeto de Linguagem. Linguagens de Programação

Sistemas Distribuídos

IEC Banco de Dados I Aula 11 Técnicas de Programação SQL

Documento de Arquitetura de Software- SGE

Técnicas de Reutilização. Reutilização em Programação Orientada a Objetos. Considere três classes... Reuso de Classes.

UML. Modelando um sistema

Sistemas Distribuídos

Ambientes de Desenvolvimento Avançados

Contexto. Motivação. variabilidade. variabilidade

Programação Orientada a Objetos

Encapsulamento e Modularização

Planning for and Managing Devices in the Enterprise: Enterprise Management Suite (EMS) & On-Premises Tools (20398)

Arquitetura de Software

As 10 Áreas da Engenharia de Software, Conforme o SWEBOK Prof. Elias Ferreira

Desenvolvimento Baseado em Componentes e o Enfoque de Linha de Produtos

Conceitos de Sistemas de Banco de Dados INE 5323

Padrões e exemplos de projetos no LabVIEW 2012

MODELAGEM DE DADOS MÓDULO III - UNIDADE V- MAPEAMENTO OBJETO RELACIONAL

Capítulo VI CORBA. Common Object Request Broker Architecture. [Cardoso2008] Programação de Sistemas Distribuídos em Java, Jorge Cardoso, FCA, 2008.

Banco de Dados Relacional

Leonardo Godinho da Cunha. Modelos de Concorrência e Sandboxes Aplicados a Servidores HTTP em Lua. Dissertação de Mestrado

Leitura: Cap : Sommerville; cap20: Pressman

Introdução. descrever os tipos de interfaces e linguagens oferecidas por um SGBD. mostrar o ambiente de programas dos SGBD s

Sistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21

Protótipo de uma ferramenta de apoio para desenvolvimento de sistemas web para WebIntegrator

Introdução a UML (Unified Modeling Language)

Formação JAVA Web.

Princípios da Engenharia de Software aula 03

Programação Orientada a Objetos

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Sistemas Distribuídos Aula 3

O sistema SCS 34. getreceptaclesbyname(in NameList names): Obtém uma lista de descritores

Criando uma aplicação web

Introdução ao módulo LabVIEW FPGA

Ferramenta MVCASE - Estágio Atual: Especificação, Projeto e Construção de Componentes

Aula 04 Introdução à Programação Orientada à Objetos

ATIVIDADES PRÁTICAS SUPERVISIONADAS

INE Sistemas Distribuídos

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

Design and Evaluation of a Support Service for Mobile, Wireles. Applications

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

InGriDE: Um Ambiente Integrado de Desenvolvimento para Computação em Grade

Escola Politécnica da Universidade de São Paulo Departamento de Engenharia de Computação e Sistemas Digitais. PCS 0014: Linguagens de Programação

ao paradigma imperativo

Processos de software

Sérgio Koch Van-Dall

Ferramentas Programação. UDESC - Prof. Juliano Maia 1

Protótipo tipo de software para geração de sistemas distribuídos. dos utilizando Design Patterns

Livro texto: Capítulo 1

Desenvolvimento Baseado em Componentes: Tecnologia J2EE

Permita o acesso ao Internet para o módulo ips ASA 5500-X

Computação Ciente do Contexto - Parte II

UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos

CAP. VI ANÁLISE SEMÂNTICA

Introdução INTRODUÇÃO AO SWEBOK. Origens do corpo de conhecimentos da Engenharia de Software: Introdução a Computação e Engenharia de Software

Sistemas Distribuídos Capítulo 2 - Aula 2

PROGRAMAÇÃO EM JOGOS DIGITAIS

Engenharia de Software.

Sistemas Distribuídos. Professora: Ana Paula Couto DCC 064

SUMÁRIO CAPÍTULO 1 - INTRODUÇÃO 19 CAPÍTULO 2 - CONCEITOS 25

DNS central. A new approach for DNS records management at Unesp. Carlos Coletti GRC

Sistema de acesso a dispositivos eletrônicos através da TV Digital interativa. Aluno: Rodrigo Brüning Wessler Orientador: Francisco Adell Péricas

Levantamento, Análise e Gestão Requisitos. Aula 03

Qualidade de Software QUALIDADE DE SOFTWARE PRODUTO

Introdução 12 que inuenciam a execução do sistema. As informações necessárias para o diagnóstico de tais problemas podem ser obtidas através da instru

Capítulo 2. Orientação a Objetos

Uma Abordagem para Modelagem de Contextos Dinâmicos em Simulação de Projetos Baseada em Multi-Agentes

4 Arquitetura de Componentes para o OiL

PROJETO DE PROGRAMAS. Projeto de Programas PPR0001

Padrão de projeto de software

Descrição: Retorna uma lista com todos os publishers disponíveis no middleware.

Singleton e Adapter. Professor: Nazareno Andrade (baseado no material de Hyggo Almeida e Jacques Sauvé)

Gerência de Projetos de Software. Prof. Dr. João Dovicchi INE / CTC / UFSC.

Usuários. Interface com Usuários. Programa Aplicativo. Interfaces de Programação. Sistema Operacional

Unidade II MODELAGEM DE PROCESSOS. Profa. Gislaine Stachissini

Modelagem de Dados MODELAGEM DE DADOS. Sistemas de Banco de Dados. Profa. Rosemary Melo

Engenharia de Software

NextFlow: Um Framework para Mapeamento de Processos de Negócio e Objetos

Desenvolvimento Web com Framework Demoiselle versão 1.0

Orientação a Objetos - Programação em C++

Processos de Software by Pearson Education Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 4 Slide 1

UML (Linguagem Modelagem Unificada) João Paulo Q. dos Santos

Transcrição:

14/2/2006 PUC-Rio 1 An Infrastructure for Development of Dynamically Adaptable Distributed Components Renato Figueiró Maia DOA 2004 Agya Napa, Cyprus

Agenda Introduction Software Components Dynamic Adaptation CCM Model LOAF Use Examples Conclusions Future Work

Introduction Challenges in software evolution Flexibility to incorporate unexpected changes Larger the amount of software requirements Apropriate programming abstractions More complex and tenologically advanced Changes at run time (dynamic adaptation) More essential (e.g. financial, medical, military). Run for months or even years.

Software Components Enables modularity and reuse Black-box components Interactions through connectors and contracts Offered services Dependencies with other components Complements object orientation Objects are too small Dependencies are not explicit and are spread thorugh many objects

Dynamic Adaptation Definition Changes of a running system prior of changes on their requirements Types of change Expected Mobile computing, software agents Unexpected Long-term systems, computer-intensive systems Mechanisnms (computational reflection) Introspection (interfaces) Java reflrection API, CORBA Interface Repository. Intercesstion (variation points) Interceptors, function pointers, etc.

Coarse-grained adaptations Alterações na estrutura (macro) do sistema Modular Substituição dos módulos. Orientação a objetos Troca de objetos e relacionamentos. Componentes Troca de conexões entre os componentes. Reconfiguração de componentes Substituição Reconexão

Adaptação em Ponto Pequeno Alterações internas aos componentes que formam o sistema. Estruturas mais fundamentais. Nível de detalhe maior. Níveis de detalhe Linguagem de programação. Arquitetura ou middleware. Componentes. Introspecção da estrutura do componente Intercessão da implementação do componente.

Ponto Grande vs. Ponto Pequeno Ponto Grande Mais simples e eficiente. Exige planejamento da arquitetura pra acomodar alterações. Adequada para alterações esperadas. Aplicações auto-adaptáveis (alterações no contexto). Ponto Pequeno Mais flexível, porém mais complexa. Adequada para alterações não esperadas. Manutenção dinâmica de sistemas.

CCM Model Facetas Receptores de eventos Home Atributos e interfaces oferecidas Componente instancia Composição Receptáculos Fontes de eventos component MyComponent supports SupportedInterface : SuperComponent { attribute string myattribute; provides Interface myfacet; uses Interface myreceptacle; publishes Event mypublisher; emits Event myemitter; consumes Event myconsumer; }; home MyHome manages MyComponent {};

CCM Container Protected execution environment Different types of components Intercepts all interactions with the external world Simplifies the implementation Manages instances Creation and activation. Offers services Transaction, persistence. Manages connections. Executor callback internas Contêiner externa

LOAF LuaOrb Adaptation Framework LuaCCM Protocols and roles Handlers

LuaCCM Ambiente para construção de componentes reflexivos Motivação Incorporar os conceitos do CCM ao LuaOrb. Simplicidade e flexibilidade. Estrutura de implementação: CORBA LuaCCM CCM LuaOrb LOOP Lua

Contêiner Lua Executor Principal Servant LuaOrb Tratador de evento Servant LuaOrb Executor de faceta Servant LuaOrb Contexto Contêiner Lua

Contêiner Lua Instâncias de Componente Contêiner Lua Classe do Envoltório instanciado delega consulta define Envoltório (objeto Lua) Repositório de Interfaces de Componentes (serviço de objetos) Gerenciador de Definição (objeto Lua) Classe de Contexto instanciado usa Executor (objeto Lua) Contexto (objeto Lua)

Componentes LuaCCM Recursos reflexivos Introspecção (interfaces do CCM) Obter informações sobre portas. Estabelecer e desfazer conexões em portas. Intercessão (LuaCCM::Adaptable) Adicionar e remover portas. Substituir a implementação de portas. Associar interceptadores a portas. Alterações em níveis de abrangência (mesmo servidor) Por Definição (através do contêiner) Por Home (através do home do componente) Por Instância (através da instância do componente)

Interfaces de Adaptação interface Adaptable { void add_facet(in string name, in string iface, in LuaCode code); void add_receptacle(in string name, in string iface, in boolean ismultiple);... void set_implementation(in string port, in LuaCode code);... void intercept(in string point, in LuaCode code); }; interface AdaptableContainer : ::Components::Container { Adaptable get_component_adaptor(in string absolute_name); };

Papéis e Protocolos Papel Conjunto de alterações no componente para realizar uma nova função (papel) Protocolo Regras de como os papéis são aplicados e os componentes são reconectados para fornecer a nova funcionalidade. Novas portas Protocolo Scripts Papel aplica e conecta faz requisições Componente Novas interações

Manipuladores Complexidade de manipulação de portas Diversos nomes de operações connect, subscribe, get, provide, etc. Utilização específica de acordo com o tipo de porta Obter uma faceta e então conectá-la ao receptáculo. Objeto consumidor de eventos é obtido e então conectado ou registrado à fonte de eventos. Geração automática de id. de conexão. Identificador gerado não apresenta signifcado para a aplicação. Aplicação mantém um mapeamento do identificador gerado para outro que possua significado (e.g. nome de um usuário).

Manipuladores Complexidade de manipulação de portas CCM CCM: messager:subscribe_out(printer:get_consumer_in()) LOAF: printer.in = messager.out

Aplicação de Exemplo rver = loaf.handler(producers:create()) ent1 = loaf.handler(processorsa:create()) ent2 = loaf.handler(processorsb:create()) raw Cliente A : Processor done rver.name = "Servidor" ent1.name = "Cliente A" ient2.name = "Cliente B" ient1.raw = server.produced ient2.raw = server.produced rver.request = client1.done rver.request = client2.done rver.controller:start() request Servidor : Producer controller Controla a produção de eventos Console : LuaCCM produced interfaces de configuração raw Cliente B : Processor done

Sincronização de Fluxo FlowWatcher = loaf.role { before = { raw = { code = [[...]] }}, after = { raw = { code = [[...]] }}, provides = { limit = { interface = "Limited", code = [[...]]}}, uses = { regulator = { interface = "Rateable"}}} FlowRegulator = loaf.role { before = { produced = { code = [[...]] }}, provides = { rater = { interface = "Rateable", code = [[...]]}}} request Servidor : Processor rater Console : LuaCCM Insere atrasos no envio de eventos de acordo com a taxa de vazão definida produced FlowRegulator Define nova taxa de vazão de eventos no servidor raw raw Cálcula taxa de vazão de eventos FlowWatcher Define valor de vazão limite para disparar a regulagem regulator Cliente A : Producer Cliente B : Producer limit done done

Depuração Distribuída BreakPoint = loaf.role { uses = { pauser = { interface = "Pauser" }}, before = { done = { code = [[ function(self, request) local c = request.context local p = c:get_connection_pauser() if p then while p:locked() do sleep(1) end end end ]]}}} request Inspectable Servidor : Processor Console : LuaCCM produced evaluator Inspeciona os campos dos segmentos do componente raw raw Inspectable evaluator Consulta se a execução no ponto de parada deve continuar pausada Cliente A : Producer Cliente B : Producer done BreakPoint done

Replicação Passiva adaptor = container:get_component_adaptor( "Processor ) Replicator:assign(adaptor) raw Cliente A : Processor done replica1 = loaf.handler(replicas:create()) replica2 = loaf.handler(replicas:create()) request Servidor : Producer produced raw Replicator Cliente B : Processor copied done done Replica 1 : Processor raw replica1.name = "Replica 1" replica2.name = "Replica 2" replica1.raw = client2.copied replica2.raw = client3.copied Replicator raw copied Cliente C : Processor done raw Replica 2 : Processor done

Conclusões LuaOrb Adaptation Framework Fornece recursos úteis para adaptação dinâmica. Alteração de componentes sem perda de estado. Níveis de abrangência das alterações. Alterações através de papéis e protocolos. Simplificação da reconfiguração de componentes CCM. Ambiente para experimentação de novas ferramentas Arquiteturas de aplicações adaptatívas. Novas abstrações para inserção de alterações.

Trabalhos Futuros Implementação completa da especificação CCM Implementação completa da arquitetura de implantação proposta pelo modelo CCM. Contêiner com suporte a componentes persistentes e serviços de objetos. Diminuição das limitações do modelo Mecanismos para manter consistência das adaptações (inter e intra componentes). Definir mecanismos de segurança para controlar alterações. Validação das ferramentas propostas Implementação de sistemas reais. Arquiteturas para aplicações adaptáveis. Avaliação de outras abstrações Contratos de coordenação dinâmicos. Aspectos dinâmicos.

FIM Dúvidas Críticas Comentários