Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer...

135
Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer [email protected] Instituto de Informática UFRGS

Transcript of Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer...

Page 1: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Sistemas Distribuídos

Programação Avançada com Objetos Distribuídos

Cláudio Geyer

[email protected]

Instituto de Informática

UFRGS

Page 2: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

2

Versão slides

• Versão– V9– Junho 2011

• Disciplinas– POD

Page 3: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

3

Equipe

• Adenauer Yamin Corrêa• Cláudio Geyer• Débora N. Ferrari• Edvar Bergmann Araújo• Juliano Malacarne• Luciano Cavalheiro da Silva• Patrícia Kayser Vargas• Silvana Campos de Azevedo

Page 4: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

4

Sistemas Distribuídos

• Sistemas Distribuídos– conjunto de computadores interconectados– visão única para programador ou usuário

• Objetos Distribuídos– objeto: entidade de distribuição, concorrência– paradigma mais aceito para aplicações

distribuídas

• Ambientes de Programação Distribuída– RPC, DCE– Java RMI, CORBA, DCOM, DotNet Remoting

Page 5: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

5

DOAP - Distributed Object Advanced Programming

• Ambiente integrado• Objetos Distribuídos• DOBuilder: Interface gráfica de programação

– simplicidade de programação– programação mais implícita

• DOMonitor: monitoração da execução– depuração– melhoria do desempenho

Page 6: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

6

DOAP - Distributed Object Advanced Programming

• REMMOS: Mobilidade mais Replicação– aumento de desempenho– programação

• replicação (quase) implícita• migração: explícita

• DEPAnalyzer: Análise estática– obtenção de informações em tempo de

compilação– usadas para

• melhorar o desempenho• simplificar a programação

Page 7: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

7

DOAP - Distributed Object Advanced Programming

• Primos: Suporte para execução em alto desempenho– criação remota de objetos– coleta de eventos de POD– RMI sobre redes de alto desempenho– suporte a escalonamento

• Linguagem de base: Java

Page 8: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

DOBuilder: Ambiente Visual para Programação Distribuída em Java

Juliano [email protected]

Cláudio Geyer

[email protected]

Page 9: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

9

Sumário

• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros

Page 10: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

10

Sumário

• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros

Page 11: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Introdução 11

Motivação

• complexidade da programação concorrente– interações entre diversos elementos– estruturas bidimensionais

• programação visual• ferramentas visuais atuais (2000/2001)

– priorização de aplicações paralelas• deficiências em aplicações cliente-servidor

– deficiências no desenvolvimento de software: orientação a objeto, reutilização, encapsulamento

Page 12: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Objetivo

projetar e implementar uma ferramenta de programação visual para aplicações de objetos distribuídos em Java, utilizando

orientação a objeto e componentes

Page 13: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

13

Sumário

• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros

Page 14: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 14

Ambientes de Programação

• Conjunto de conceitos e tecnologias– Usados ou considerados– No trabalho (DOBuilder)

Page 15: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 15

Programação visual

• programação visual: linguagem ou sistema de programação onde:– entidades gráficas de alto nível estão disponíveis

como átomos manipuláveis– elementos gráficos formam uma parte integral e

não apenas decorativa da programação

• vantagens: bidimensionalidade, exibição dos relacionamentos, natural ao ser humano

• desvantagem: escalabilidade

Page 16: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 16

Programação visual

• facilita a visualização da concorrência. Exemplo: CC++:

1

2 3 4

5

T1.run()par{

T2.run()T3.run()T4.run()

}T5.run()

Page 17: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 17

Programação visual

• facilita a visualização da comunicação. Exemplo: VPE:

N1: vpe_psend(&v,1,VPE_INT,P1);......N2: vpe_precv(&v,1,VPE_INT,&n,X);

Page 18: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 18

Ambientes de programação paralela e distribuída

• ferramentas atuais (2000):– programação visual paralela– geração de código para PVM e MPI– exemplos: CODE, HeNCE, VisualProg, VPE

• problemas da maioria dessas ferramentas:– não oferecem programação cliente/servidor– não usam orientação a objetos– não empregam reutilização, modularidade,

componentes

Page 19: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 19

Programação orientada a eventos

• o fluxo de execução é comandado pelo surgimento e tratamento de eventos

• importância para a programação distribuída:– não há necessidade de pesquisar continuamente

as diversas fontes de dados– quando algo importante acontece, o evento ocorre

de forma assíncrona

• eventos em PDP– Usualmente eventos de comunicação– send e receive, ...

Page 20: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 20

Componentes de software

• módulos de software independentes de contexto– reutilização de projeto e implementação– implementados segundo interfaces padronizadas– desvantagens: falta de confiabilidade,

incompatibilidade de versões

• JavaBeans– arquitetura de componentes de Java

Page 21: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 21

Objetos distribuídos

• invocação de métodos remotos e criação remota de objetos de forma transparente

• problemas: latência, erros de comunicação• principais implementações

– CORBA (OMG)– DCOM (Microsoft)– RMI (SunSoft - Java)– Voyager (ObjectSpace - Java)– JMS (Java, J2EE)– C#/Remote

Page 22: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Ambientes de programação 22

Ferramentas RAD

• RAD: Rapid Application Development• geração automática e reutilização de código

• exemplo: JBuilder

Page 23: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

23

Sumário

• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros

Page 24: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 24

Objetivos e requisitos

• programação visual• facilidade de uso• flexibilidade• portabilidade• programação orientada a objetos• reutilização de código• extensão do sistema

Page 25: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 25

Objetivos e requisitos

• Exercícios– Objetivos foram atendidos?– Ferramentas de hoje atendem os requisitos com

outra abordagem?

Page 26: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Objetivos e requisitos

• Dificuldades– Compatibilizar

• facilidade de uso versus• flexibilidade• portabilidade

26

Page 27: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 27

Alvo

• aplicações– cliente-servidor– objetos distribuídos– comunicação

• inicialmente por sockets, RMI, Voyager• usuários

– não ideal para usuários totalmente iniciantes

– devem ter conhecimento de Java e de programação concorrente

Page 28: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 28

Descrição da ferramenta

• manipulação visual de objetos– edição gráfica da estrutura da aplicação– edição das propriedades dos objetos

• código fonte dos objetos distribuídos– esqueleto gerado pela ferramenta

conforme as ações do usuário durante a edição visual

– edição da lógica da aplicação feita diretamente pelo usuário (formato texto)

Page 29: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 29

Descrição da ferramenta

• Não voltada à programação paralela como– HenCE, ...

Page 30: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

30

Propriedadese Eventos

Propriedadese Eventos

Paleta deComponentes

Paleta deComponentes

Barra deFerramentas

Barra deFerramentas

Editor decódigo fonte

Editor decódigo fonteEditor do GrafoEditor do Grafo

Estruturado Grafo

Estruturado Grafo

Mensagens dosistema

Mensagens dosistema

Page 31: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 31

Programação de aplicações

ferramenta javac javausuário

criaçãode

projeto

edição/geração

de código

Voyager

RMI

criaçãode

grafos

compi-lação

execução

geraçãode

código

Page 32: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 32

Modelo de programação visual

• representação explícita da concorrência e da comunicação– grafo dirigido

• nodos: objetos distribuídos• arcos: relacionamentos (comunicação)

objeto distribuídocomunicação

Page 33: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 33

Modelo de programação visual

• nodos– tipos escolhidos conforme as

necessidades das aplicações, p. ex.:• chamadas remotas de método• criação remota de objetos• grafos

• arcos– relacionamentos entre os nodos

Page 34: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 34

Nodos

Objeto com código editado pelo programador

nodos básicos

componentes

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Page 35: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 35

Nodos

• nodo básico• nodo de interface • nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Interface com os métodospara invocação remota

nodos de interface

métodos

Page 36: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 36

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Objeto visual utilizado para representar o método de uma classe ou interface

Page 37: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 37

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Representação visual de um recurso externo

acessado pela aplicação

servidor TCP impressora

Page 38: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 38

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Objeto distribuídojá desenvolvido

Page 39: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 39

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Componente de software que pode ser acoplado a

um nodo básico

componentes

Page 40: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 40

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Diversos tipos: em geral associados a tecnologias:

RMI, sockets, ...

componentes

Page 41: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 41

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Componente usado parainvocar métodos remotos client invoca métodos da

interface interface em server

Page 42: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 42

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Componente que cria objetosremotos dinamicamente

objeto criador cria criatura

Page 43: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 43

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Encapsulamento de grafos

Interfaces de acessoao grafo

Page 44: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 44

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Encapsulamento de grafos

Page 45: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 45

Nodos

• nodo básico• nodo de interface• nodo virtual• nodo terminal• componente• procurador• criação dinâmica• método• interface de grafo• chamada a grafo• documentação

Informação auxiliar para documentação

Textos

Gráficos

Cliente Servidor

Page 46: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 46

Arcos

• normal• implementação de

interface• compartilhamento de

memória• referência a objeto

remoto• criação de obj. remoto• interface de obj.

remoto• criação de grafo• interface de grafo• documentação

Comunicação: combinação de propriedades

host remotoporta remota

host localporta local

Page 47: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 47

Arcos

• normal• implementação de

interface• compartilhamento de

memória• interface de obj.

remoto• referência a objeto

remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação

Indicação de que um nodo básico implementa

determinada interface

Page 48: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 48

Arcos

• normal• implementação de

interface• compartilhamento

de memória• interface de obj.

remoto• referência a objeto

remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação

Compartilhamento de dados entre dois nodos básicos

Page 49: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 49

Arcos

• normal• implementação de

interface• compartilhamento de

memória• interface de

objeto remoto • referência a objeto

remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação

Especificação de interface para componentes procuradores ou decriação dinâmica

Page 50: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 50

Arcos

• normal• implementação de

interface• compartilhamento de

memória• interface de obj.

remoto• referência a

objeto remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação

Referência local a objeto remoto (RMI, ...)

Page 51: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 51

Arcos

• normal• implementação de

interface• compartilhamento de

memória• interface de obj.

remoto• referência a objeto

remoto• criação de objeto

remoto• criação de grafo• interface de grafo• documentação

Objeto local cria objeto remoto

Page 52: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 52

Arcos

• normal• implementação de

interface• compartilhamento de

memória• interface de obj.

remoto• referência a objeto

remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação

Objeto local cria grafo

Page 53: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 53

Arcos

• normal• implementação de

interface• compartilhamento de

memória• interface de obj.

remoto• referência a objeto

remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação

Objeto conectado à interface de grafo é visível

externamente

Page 54: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Descrição da ferramenta 54

Arcos

• normal• implementação de

interface• compartilhamento de

memória• interface de obj.

remoto• referência a objeto

remoto• criação de obj. remoto• criação de grafo• interface de grafo• documentação

Comentário visual

Page 55: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

55

Arcos x Nós

• Questão–Há informação redundante entre um

tipo de arco associado a um tipo de nó?

–Por exemplo,• Arco de chamada RMI com objeto

RMI?

Page 56: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

56

Sumário

• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros

Page 57: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 57

Implementação

• Java– portabilidade, orientação a objeto, eventos– componentes JavaBeans– interface gráfica: Swing– 1º trabalho sobre Java no grupo

• ambiente de execução para os objetos distribuídos– Voyager: bastante usado e conhecido, simples de

se utilizar e com muitos recursos– RMI: disponível com Java

Page 58: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 58

Componentes

• Componentes– técnica muito usada na implementação– características

• reutilização• extensão: implementação de novos

componentes para estender as capacidades da ferramenta

– definição• propriedades• métodos• eventos

Page 59: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 59

Exemplo – Porta de conexão

onRemoteDisconnectsend

onReceivereceiveprotocol

onConnectionRefusecloseremoteHost

onConnectionAcceptopenremotePort

eventosmétodospropriedades

Page 60: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 60

Nodo básico

• implementados como classes Java• métodos start, shutdown

– dependentes do ambiente de execução usado– operações de configuração na rede

• registro no servidor de nomes• método run

– código executado inicialmente• gerador de código

– operações durante a edição visual do objeto

Page 61: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 61

Componentes

• componente geral– componente JavaBean tradicional– design patterns para classes Java

• componente procurador– se torna método para busca de referência remota– método é inserido no nodo básico que o contém

• componente de criação dinâmica– se torna método para criação do objeto remoto– método é inserido no nodo básico que o contém

Page 62: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 62

Relacionamentos - arcos

• implementação diferente para cada tipo• a implementação é implícita

– não existe objeto representando o relacionamento– o relacionamento está no código fonte

• a visualização no grafo não é fixa– pode ser configurada pelo usuário– leva em conta os objetos do relacionamento– Questão chave

• Alteração pelo programador do código gerado pela ferramenta => pode-se refazer grafo?

Page 63: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 63

Arco normal

O relacionamento é implementado pelacombinação de propriedades

Page 64: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 64

Exemplos

bate-papo com troca de mensagens

Page 65: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Implementação 65

Exemplos

bate-papo com chamada remota de método

Page 66: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

66

Sumário

• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros

Page 67: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Trabalhos relacionados 67

Comparação geral

Vantagens programação orientada a objeto modelo de componentes de software portabilidade geração automática de código

Desvantagensdesempenho menor de Javanecessidade de adaptação do usuário

Page 68: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Trabalhos relacionados 68

Ferramentas de programação textual

Vantagens identificação dos relacionamentos visualização geral da aplicação Java é orientada a objeto componentes de software

Desvantagensas ferramentas textuais já têm base instaladao ambiente de programação é pesadoa concorrência é definida explicitamente

Page 69: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Trabalhos relacionados 69

Ferramentas de programação visual paralela e distribuída

Vantagens programação com objetos distribuídos possibilidade de extensão da ferramenta modularidade programação cliente/servidor portabilidade

Desvantagenssem visualizaçãosem depuraçãosem suporte direto a paralelismo de alto

desempenho (paralelismo de dados, p. ex.)

Page 70: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Trabalhos relacionados 70

Ferramentas de programação visual em Java

Vantagens visualização global da aplicação desenvolvimento integrado de clientes e servidores desenvolvimento hierárquico das aplicações

Desvantagensfalta de suporte à geração de interfaces gráficasnão há depuração seqüencialgeração de código não totalmente transparente

Page 71: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

71

Algumas referências

• http://www.informatik.uni-trier.de/~ley/db/journals/vlc/vlc12.html– Lista de diversos artigos (2001)

• GeoVISTA Studio: a codeless visual programming environment for geoscientific data analysis and visualization (2002)

• Pegasus: A framework for mapping complex scientific workflows onto distributed systems (2005).

Page 72: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

72

Sumário

• introdução• ambientes de programação• descrição da ferramenta• implementação• trabalhos relacionados• conclusões e trabalhos futuros

Page 73: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Conclusões e trabalhos futuros 73

Resultados

• problema: dificuldade de avaliação teórica da facilidade de uso da ferramenta

• solução: implementar e por à prova com usuários reais

• impressões de usuários:– componentes para programação distribuída– semelhanças com ferramentas já conhecidas– documentação gráfica do sistema

Page 74: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Conclusões e trabalhos futuros 74

Trabalhos futuros

• integração com os outros trabalhos do grupo:– monitoração e visualização– escalonamento– ambiente de execução com réplica de objetos

• depuração do código seqüencial de cada objeto e de toda a aplicação

• implementação de novos componentes

Page 75: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Conclusões e trabalhos futuros 75

Considerações finais

• principal contribuição: projeto e implementação de uma ferramenta visual para programação distribuída onde é possível se visualizar toda a aplicação simultaneamente

• aplicação dos principais conceitos de engenharia de software: reutilização, modularidade e encapsulamento

Page 76: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

76

Links

• Avaliação– http://www.inf.ufrgs.br/procpar/disc/cmp167/

trabalhos/sem2000-1/T2/kenzo_pilla/

• Tutorial– http://www.inf.ufrgs.br/procpar/disc/cmp167/

trabalhos/sem2000-1/T2/kenzo_pilla/

• Visão geral– http://www.inf.ufrgs.br/procpar/hetnos/

rf003.html#dobuilder– http://www.inf.ufrgs.br/procpar/hetnos/DOBuilder/

index.html

Page 77: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

77

Referências

• Referências– [MAL97] MALACARNE, J. Implementação de um

Ambiente Gráfico para o Desenvolvimento de Aplicações Distribuídas. Trabalho de Diplomação, Instituto de Informática, UFRGS, pp. 91, Dez. 1997.

– [MAL98] MALACARNE, J.; GEYER, C. F. R. Monitoração na Ferramenta VisualProg. In X Simpósio Brasileiro de Arquitetura de Computadores e Processamento de Alto Desempenho, Búzios, RJ, setembro 1998.

Page 78: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

78

Referências

• Refrências– [MAL99] MALACARNE, J. Ambientes de

Programação Visual Paralela e Distribuída: trabalho individual. Porto Alegre: PPGC da UFRGS, 1999. 91 p. (TI-776).

– [MAL01] MALACARNE, J.; GEYER, C. F. R. DOBuilder. Ambiente de Programação Visual com Objetos Distribuídos em Java. . In: 19 SIMPÓSIO BRASILEIRO DE REDES DE COMPUTADORES, 2001, Florianópolis. Anais... Florianópolis: SBC, 2001

Page 79: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

79

Referências

• Referências– [SCH96] SCHRAMM, J. F. L. Ambiente Gráfico

para o Desenvolvimento de Aplicações Distribuídas. CPGCC-UFRGS, pp. 78, 1996.

– [SCH97] SCHRAMM, J. F. L.; MALACARNE, J.; GEYER, C. F. R. Ambiente Gráfico para o Desenvolvimento de Aplicações Distribuídas. XXIII Conferência Latinoamericana de Informática. Universidad Tecnica Federico Santa Maria, Valparaiso, Chile, p.505-514. Nov. 1997.

Page 80: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

80

Refêrencias

• Refêrencias– [BEG94] BEGUELIN, A. et al. HeNCE: A Users'

Guide Version 2.0. 1994. Disponível em: <ftp://netlib2.cs.utk.edu/hence/HeNCE-2.0-doc.ps.gz>. Acesso em: 20 nov. 1998.

– [NEW92] NEWTON, P.; BROWNE, J. C. The CODE 2.0 Graphical Parallel Programming Language. 1992. Disponível em: <ftp://ftp.cs.utexas.edu/pub/code2/CodeICS92.ps.Z>. Acesso em: 25 nov. 2000.

Page 81: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

81

Refêrencias

• Refêrencias– [NEW95] NEWTON, P.; DONGARRA, J. Overview

of VPE: A Visual Environment for Message-Passing. 1995. Disponível em: <ftp://cs.utk.edu/pub/newton/vpe/docs/hcw95.ps.Z>. Acesso em: 25 nov. 2000.

– [LOQ98] LOQUES, O.; LEITE, J.; CARRERA, E. V. P-RIO: A Modular Parallel-Programming Environment. IEEE Concurrency, Los Alamitos, CA, v. 6, n. 1, p. 47-57, Jan.-Mar. 1998.

Page 82: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

DOVisualizerUma Ferramenta de Visualização para Aplicações Distribuídas em

Java

Edvar Bergmann Araujo

[email protected]

Cláudio Geyer

[email protected]

Page 83: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

83

Sumário

• Motivação• Objetivos• Modelo

– Coleta de Informações– Processamento das Informações– Geração dos Gráficos

• Conclusão

Page 84: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

84

Motivação

• Programação Orientada a Objetos escolhida para desenvolvimento de aplicações distribuídas

• Comportamento complexo• Problemas de desempenho

Page 85: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

85

Motivação

• As Ferramentas de Visualização para o modelo Orientado a Objetos:– são raras ou mais recentes que para processos– auxiliam o refinamento e a depuração das

aplicações– não tratam de aplicações do tipo cliente/servidor

Page 86: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

86

Objetivos

• Demonstrar graficamente o comportamento que a aplicação apresentou durante a execução

• Facilitar a depuração e o refinamento• Visualização dos objetos e de seus

relacionamentos

Page 87: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

87

Objetivos

• Visualização de aplicações distribuídas• Visualização de aplicações do tipo

cliente/servidor• Gráficos com enfoque para sistemas

distribuídos

Page 88: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

88

Modelo - DOVisualizer

• A ferramenta é voltada para aplicações compostas por objetos distribuídos

• Caracteriza-se por identificar principalmente:– A comunicação entre os objetos– A utilização dos métodos de sincronização

• Suporta aplicações cliente/servidor• Pode ser utilizada para aplicações Java pura• Será integrada ao DOBuilder

Page 89: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

89

Modelo - DOVisualizer

Page 90: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

90

Coleta de Informações

• Informações sobre as chamadas de métodos• Traçar a interação entre clientes e servidor

– resolver as Invocações de Métodos Remotos - RMI

• O overhead pode ser minimizado a partir da escolha dos métodos que serão traçados

• O módulo obtém os eventos apropriados à ferramenta, como os relacionados a:– Threads, sincronização e RMI

Page 91: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

91

O que é preciso coletar?

• Thread– ID– JVM– Tempo Inicial– Tempo Final– Estado (Executando, Finalizada, Bloqueada)

• JVM– Máquina

Page 92: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

92

Processamento das Informações

• Processamento Post-Mortem• Realiza a ligação entre eventos de JVM´s

diferentes • Ordenação causal entre os eventos de JVM´s

diferentes• Possibilita a geração parcial das informações• Armazena as mesmas em arquivos com um

layout definido

Page 93: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

93

Geração dos Gráficos

• Gargalos de desempenho• Estado dos objetos• Interação entre as threads• Interação entre os objetos

Page 94: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

94

Diagrama de mapeamento de objetos

Page 95: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

95

Conclusão

• Utilização de gráficos para demonstrar o comportamento da execução

• Auxilia o desenvolvimento de aplicações distribuídas– Depuração– Problemas de desempenho

• Suporte a aplicações cliente/servidor• Integrado ao DOBuilder

Page 96: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

Um Modelo de Replicação em Ambientes que Suportam

Mobilidade

Débora Nice [email protected]

Patrícia Vargas [email protected]

Cláudio [email protected]

Page 97: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

97

Sumário

• Mobilidade e Replicação• ReMMoS - Um Modelo de Replicação em

Ambientes que suportam Mobilidade• Conclusões

Page 98: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

98

Introdução

• Mobilidade e Replicação– Mobilidade

• capacidade das entidades envolvidas na computação deslocarem-se através de um sistema distribuído [FUG 98]

• não existem cópias das entidades computacionais

Page 99: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

99

Introdução

• Mobilidade e Replicação– Mobilidade

• entidades movidas sob demanda para uso local

• diferentes tipos de mobilidade, em especial:– fraca: somente de código– forte: código e estado

Page 100: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

100

Introdução

• Mobilidade e Replicação– Replicação

• permite que várias cópias de uma mesma entidade computacional residam em diferentes máquinas do sistema distribuído [GUE 97]

• existem cópias de uma mesma entidade computacional

Page 101: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

101

Introdução

• Mobilidade e Replicação– Replicação

• acesso simultâneo de diferentes nodos à mesma entidade computacional

• problema clássico:– manter a consistência das diferentes cópias

• diferentes técnicas classificadas sob diferentes aspectos

Page 102: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

102

Introdução

• Problemas– como permitir replicação em ambientes com

mobilidade?• e vice-versa

– como oferecer replicação com aumento de desempenho?

– quando oferecer replicação com aumento de desempenho?

– como permitir replicação sem nunca perder desempenho?

Page 103: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

103

ReMMoS - Replication Model in Mobility Systems

• Entidade básica– objeto

• Mobilidade– objetos não replicados– objetos replicados

• Replicação– estratégia de replicação parcial– protocolo de atualização– atualização pela técnica de cópia primária-

secundária

Page 104: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

104

ReMMoS - Replication Model in Mobility Systems

• Mobilidade– objetivo

• acesso local para objetos não replicados– mobilidade para objetos não replicados

• baseada no modelo de mobilidade do Voyager• mobilidade explícita• cliente ou servidor

Page 105: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

105

ReMMoS - Replication Model in Mobility Systems

• Mobilidade– mobilidade para objetos replicados

• objetos não são movidos• cópia na nova localização é tratada conforme

replicação– por exemplo, escritas futuras via cópia

primária• cópia primária é responsável pelo controle

– se cópia já existe na máquina destino?• sim: não move• não: cria uma cópia na máquina destino

Page 106: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

106

ReMMoS - Replication Model in Mobility Systems

• Replicação– objetivos

• reduzir quantidade de mensagens• permitir paralelismo no acesso ao objeto

– replicação implícita• programador não precisa tratá-la

Page 107: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

107

ReMMoS - Replication Model in Mobility Systems

• Replicação– técnica de replicação parcial

• divisão dos acessos (métodos) em leitura/escrita

• ambiente de execução– responsável pela criação e localização das

cópias– criação de cópias quando houver aumento

de desempenho

Page 108: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

108

ReMMoS - Replication Model in Mobility Systems

• Replicação– técnica cópia primária-secundária

• escrita– sempre via cópia primária– protocolo de 2 fases síncrono– sobre todas as cópias secundárias

• leitura– acesso somente à cópia secundária local

– replicação ocorre sobre os objetos servidores

Page 109: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

109

ReMMoS - Replication Model in Mobility Systems

• Visão geral da organização

Ambiente

Sistema de Replicação

Sistema de Mobilidade

Plataforma de Objetos Distribuídos

Sistema Operacional / Hardware

Aplicação

ReMMoS

Aplicação Aplicação

– Monitoramento e gerência

Page 110: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

110

ReMMoS - Replication Model in Mobility Systems

ObS

ReMMoS

Nodo 1 Nodo 2

Cliente1

Controle de objeto potencialmente replicável

ObS

ReMMoS

Nodo 1 Nodo 2

Cliente1

Indicação de criação de réplica

bloqueio do objeto e fila de mensagens

• Replicação– Processo de criação de réplicas

Page 111: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

111

ReMMoS - Replication Model in Mobility Systems

Cópia para o destino

Se sucesso

objeto replicado

primário-backup

ObS

ReMMoS

Nodo 1 Nodo 2

Cliente1

RObS

ReMMoS

ObS

ReMMoS

Nodo 1 Nodo 2

Cliente1

RObS

ReMMoS Acesso local

Mensagens liberadas na origem

• Replicação– Processo de criação de réplicas

Page 112: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

112

ReMMoS - Replication Model in Mobility Systems

Cliente

POb1

ROb1

ROb1

atualização

Ack + estadobloqueio+

atualização

resposta

desbloqueio

Nodo 2

Nodo 1

Nodo 2

Nodo 3

• primário recebe solicitação de escrita

• Replicação– Protocolo de atualização

• réplica recebe solicitação de escrita

Page 113: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

113

ReMMoS - Replication Model in Mobility Systems

• Replicação– Controle dinâmico do número de réplicas

• objetivos– adaptação ao perfil da aplicação– custo de atualização de réplicas ociosas

• que não estão processando leitura

Page 114: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

114

ReMMoS - Replication Model in Mobility Systems

• Replicação– Controle dinâmico do número de réplicas

• funcionamento– método LRU (last recently used)– uso de contador de acesso local – uso do protocolo de atualização para

controle• descarte na terceira atualização

Page 115: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

115

ReMMoS - Replication Model in Mobility Systems

• Integração com a DOBuilder– DOBuilder

• ferramenta para programação visual com objetos distribuídos

• uso de Java e Voyager• não possui replicação

Page 116: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

116

ReMMoS - Replication Model in Mobility Systems

• Integração com a DOBuilder– DOBuilder + ReMMoS

• ambiente de desenvolvimento + ambiente de execução

• a ferramenta permite que o programador especifique o ambiente de execução ReMMoS

– indicação na estruturas de menus– padrão: sem replicação

Page 117: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

117

– Cliente 2

ReMMoS - Implementação

Gráfico comparativo para cliente com característica de leitura predominante

2337

1185 1102 1357

0

1000

2000

3000

4000

5000

característica da aplicação com relação a mobilidade e replicação

Te

mp

o e

m

mil

ise

gu

nd

os sem mobilidade e sem

replicação

com mobilidade e comreplicação

sem mobilidade e comreplicação

com mobilidade e semreplicação

Page 118: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

118

Conclusões

• Trabalhos futuros– outras estratégias de replicação– integração do ReMMoS com o DOBuilder– integração do ReMMoS com o trabalho de análise

estática DEPAnalyzer• informações necessárias + comportamento da

aplicação, tamanho dos argumentos e do objeto

– outros sistemas de mobilidade

Page 119: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

119

Conclusões

• Trabalhos futuros– estudo, projeto e implementação de mobilidade

implícita– otimizações no protótipo– testes com outras aplicações em redes mais

rápidas e outros sistemas operacionais– tolerância a falhas

Page 120: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

DEPAnalyser - Análise Estática para Melhoria de Programas com

Objetos Distribuídos

Silvana Campos de Azevedo

Patrícia Kayser Vargas

Cláudio Geyer

Page 121: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

121

Sumário

• Visão geral– Análise Estática– DEPAnalyzer– Classes - conjuntos de objetos– Dependências– Leitura/escrita de métodos

• Modelo– Estrutura– Funcionalidade dos módulos

Page 122: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

122

Visão Geral

• Análise Estática– prevê, em nível de código fonte, características da

execução de um programa.• otimização, depuração, paralelização,

distribuição

• DEPAnalyzer– analisar estaticamente as dependências entre as

entidades de um programa Java– determinar se os métodos, destas entidades, são

de escrita ou de leitura

Page 123: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

123

Visão Geral

• Entidades– classes: estaticamente– conjuntos de objetos: dinamicamente

• Dependências– invocação de método (comunicação) entre

classes

• Leitura/escrita de métodos– identifica se um método altera o estado de alguma

variável global (escrita) ou não (leitura)

Page 124: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

124

Modelo

Programa Fonte

Coleta das InformaçõesColeta das Informações

TransformaçãoGeração

do Grafo

Informações de Leitura/Escrita

Informações de Dependência

Programa Fonte Transformado

Grafo de Dependências

Análise Leitura/Escrita

Análise Dependências

Informações

Page 125: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

125

Modelo

• Coleta das Informações– Classe

• nome• descendência• variáveis• métodos

– Variáveis• acesso• tipo• nome• objeto atribuído• escopo

Page 126: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

126

Modelo

• Coleta das Informações– Métodos

• acesso• nome• id• leitura/escrita• parâmetros• variáveis locais• métodos chamados• variáveis atribuídas

Page 127: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

127

Modelo

• Coleta das Informações– Métodos Chamados

• objeto• nome• escopo• argumentos

Page 128: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

128

Modelo

• Escopo X Dependências– dependências relativas

• em escopos condicionais• podem ou não acontecer

– dependências indeterminadas• em escopos iterativos (loops)• o número de vezes de ocorrências é

indeterminado.

Page 129: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

129

Modelo

• Escopo X Dependências– dependências efetivas

• em outros escopos• acontecem somente uma vez naquela

invocação

Page 130: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

130

Modelo

• Análise de Leitura/Escrita– método de escrita

• modifica uma variável global• ou chama um método que modifica

– método de leitura• não modifica variáveis globais• e não chama nenhum método que modifique

– invocação de método de escrita• manter a consistência das cópias (replicação)

– invocação de método de leitura• problema de consistência inexistente

Page 131: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

131

Modelo

• Transformação– o código fonte analisado é transformado– segundo as informações de leitura/escrita– para que contenha automaticamente as primitivas

necessárias à implementação ReMMos

Page 132: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

132

Modelo

• Dependências– se dentro do escopo do método for invocado

métodos de outra classe– o método invocador estabelece uma relação de

dependência com a classe do método chamado.

• Grafo de Dependências– os nodos são os conjuntos de objetos– as setas são as dependências entre os nodos

Page 133: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

133

Modelo

• Conclusão– as informações geradas visam auxiliar

• no escalonamento dos objetos (dependências)• e no processo de replicação (leitura/escrita)

Page 134: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

134

Conclusões Gerais

• Síntese das anteriores• Dificuldade de integração em ambiente

acadêmico• Trabalhos futuros

– balanceamento de carga

• Semântica de replicação relaxada

Page 135: Sistemas Distribuídos Programação Avançada com Objetos Distribuídos Cláudio Geyer geyer@inf.ufrgs.br Instituto de Informática UFRGS.

FIM

Questões?