Aspectos para Construção de Aplicações Distribuídas
|
|
- Benedita de Mendonça da Cunha
- 6 Há anos
- Visualizações:
Transcrição
1 Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort Programa de Pós-Graduação em Informática PUC Minas Belo Horizonte MG 12 de junho de 2007
2 Middleware Objetivo: Ocultar complexidades do desenvolvimento de aplicações distribuídas Tornar programação distribuída o mais semelhante a programação centralizada Idéia: Oferecer abstrações que tornem transparente detalhes de programação em redes Incluindo concorrência, segurança, falhas, escalabilidade, heterogeneidade etc 2
3 Chamada Remota de Métodos Cliente Servidor: inf.pucminas.br S s = lookup(...); A a = new AImpl(); B b = new BImpl(); s.f(a, b); void main(...){...} b a f( a, b); lookup( //inf.pucminas.br/foo ); by remote reference by serialization <<referência remota>> <<callback>> S s = new Server(); bind( foo, s); Registry bind( foo, s); <<Remote Object>> void main(...){...} void f(a a, B b){ a.g();b.h(); } 3
4 Motivação Plataformas de middleware são invasivas, pervasivas e transversais Problemas: separação de interesses, modularidade e suporte a múltiplas plataformas Aplicação Middleware Transporte/Rede 4
5 Solução Proposta: DAJ DAJ: Distribution Aspects in Java Ferramenta para modularização de código de distribuição requerido por middleware Evita que classes de negócio tenham que seguir protocolos de programação Por exemplo, classes de negócio não precisam: Estender outras classes ou interfaces pré-definidas Implementar métodos get e set Ativar ou tratar exceções pré-definidas Tecnologia modularização: aspectos (AspectJ) 5
6 Programação Orientada por Aspectos Limitação de OO: determinados interesses não são adequadamente modularizados Ex: logging, segurança, persistência, autenticação, controle de concorrência, distribuição etc. Tais interesses são chamados de interesses transversais (crosscuting concerns) Características de interesses transversais: Espalhamento de código (code spreading): requisito transversal implementado em diversas classes Entrelaçamento de código (code tangling): requisito transversal misturado com código de negócio 6
7 Programação Orientada por Aspectos Extensão do paradigma Orientado por Objetos Permite modularizar requisitos transversais Modelo de implementação: Descrição dos requisitos funcionais em classes Descrição dos requisitos transversais em aspectos Costura (weaver) dos requisitos para produção da versão executável da aplicação Requisitos do Sistema POO POA Classes Aspectos W E A V E R Sistema Executável 7
8 POO X POA POA é um complemento de POO POA não veio substituir POO POO Autenticação Persistência Núcleo Distribuição POA 8
9 AspectJ Extensão de Java com recursos para POA Nova abstração: aspecto Transversalidade estática Introdução de membros Alteração da hierarquia de classes Suavização de exceções Transversalidade dinâmica Modificações no fluxo de execução de um programa Podem ocorrer: antes, após e no lugar de pontos bem definidos da execução de um programa 9
10 Solução Proposta Sistema DAJ: Visão Geral Exemplo Motivador Interface de Programação Aspectos Propostos Ferramenta dajc Estudos de caso 10
11 DAJ: Etapas de Desenvolvimento 11
12 DAJ: Plataformas Suportadas DAJ é compatível com os dois principais sistemas de middleware disponíveis para Java: Java RMI: utilizado por aplicações distribuídas integralmente implementadas em Java Java IDL: implementação do padrão CORBA. Permite interoperabilidade entre sistemas implementados em diferentes linguagens 12
13 Exemplo Motivador: Sistema de Controle de Ações 13
14 Cenário de Distribuição CORBAServer Client StockListener RMIServer 14
15 Descritor de Distribuição Especifica a configuração de distribuição de um determinado sistema. Permite configurar: Os servidores que compõem a aplicação: Interface remota Classe que implementa a lógica de negócio Nome usado para registro em um servidor de nomes Tecnologia de middleware (RMI ou IDL) Passagem de parâmetros: Serialização Referência Remota 15 Interface de Programação
16 Descritor de Distribuição <! - Servidores que compõem a aplicação --> <server id="stockmarketa"> <interface>stockmarket.stockmarket</interface> <class>stockmarket.stockmarketimpl</class> <protocol>javaidl</protocol> <nameserver>skank.pucminas.br</nameserver> </server> <server id="stockmarketb"> <interface>stockmarket.stockmarket</interface> <class>stockmarket.stockmarketimpl</class> <protocol>javarmi</protocol> <nameserver>patofu.pucminas.br:1530</nameserver> </server> <! - Objetos remotos no lado do cliente --> <remote interface="stockmarket.stocklistener"> <class>stockmarket.stocklistenerimpl</class> </remote> <! - Objetos que serão transferidos entre cliente e servidor --> <serializable> <class>stockmarket.stockinfo</class> <class>stockmarket.datetime</class> </serializable> Interface de Programação 16
17 Implementação de Clientes Clientes podem chamar métodos remotos sem ciência do middleware de comunicação StockMarket s1, s2; // obtém referência para o serviço CORBA s1=(stockmarket)servicelocator.getreference("stockmarketa"); // obtém referência para o serviço Java RMI s2=(stockmarket)servicelocator.getreference("stockmarketb");... s1.update(new StockInfo("cvrd", , DateTime.now()));... StockListener listener = new StockListenerImpl(); s1.subscribe("bb", listener); s2.subscribe("cef", listener); Interface de Programação 17
18 Implementação de Servidores DAJ gera automaticamente código para: Instanciar objetos remotos Ativar objetos remotos Registrar objetos remotos 18
19 Interfaces Remotas Interfaces remotas são interfaces com código de distribuição entrelaçado Java RMI interface StockMarket extends Remote { void update(stockinfo arg0) throws RemoteException; void subscribe(string arg0, daj.javarmi.api.stockmarket.stocklistener arg1) throws RemoteException; void unsubscribe(string arg0, daj.javarmi.api.stockmarket.stocklistener arg1) throws RemoteException; StockInfo getstock(string arg0) throws StockNotFoundException, RemoteException; } Java IDL interface StockMarketOperations { void update(daj.javaidl.api.stockmarket.stockinfo arg0); void subscribe(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); void unsubscribe(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); daj.javaidl.api.stockmarket.stockinfo getstock(string arg0) throws daj.javaidl.api.stockmarket.exceptions.stocknotfoundexception; } Arquitetura Interna 19
20 Classes Remotas Resultantes da introdução de código de distribuição em classes de negócio. Usadas para: Instanciação de Servidores: adaptar objetos servidores para que eles possam ser localizados e receber chamadas remotas Instanciação de Objetos Remotos: adaptar objetos que são passados como argumentos de chamadas remotas ou retornados como resultado Arquitetura Interna 20
21 Instanciação de Servidores Para registrar determinado objeto em um servidor de nomes, esse objeto deve implementar uma interface remota aspect RemoteStockMarketImpl { declare parents: StockMarketImpl implements StockMarketOperations; interface StockMarket { void update(stockinfo info); void subscribe(string stock, StockListener obj); void unsubscribe(string stock, StockListener obj); StockInfo getstock(string stockname) throws StockNotFoundException; } interface StockMarketOperations { void update_daj_javaidl(daj.javaidl.api.stockmarket.stockinfo arg0); void subscribe_daj_javaidl(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); void unsubscribe_daj_javaidl(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); daj.javaidl.api.stockmarket.stockinfo getstock_daj_javaidl(string arg0) throws daj.javaidl.api.stockmarket.exceptions.stocknotfoundexception; } 21 Arquitetura Interna
22 Instanciação de Servidores Para tanto é necessário introduzir os métodos incompatíveis através de recursos de transversalidade estática de AspectJ aspect Remoting_StockMarketImpl { } declare parents: StockMarketImpl implements StockMarketOperations;... public void StockMarketImpl.subscribe_daj_javaidl(String arg0, }... class StockListenerAdapter implements StockListener { daj.javaidl.api.stockmarket.stocklistener adaptee; StockListenerAdapter (StockListener adaptee){ this.adaptee = adaptee; } public void update(stockinfo arg0) { adaptee.update_daj_javaidl( (daj.javaidl.api.stockmarket.stockinfo)arg0); }... Arquitetura Interna daj.javaidl.api.stockmarket.stocklistener arg1) { subscribe(arg0, new StockListenerAdapter(arg1) ); 22
23 Instanciação de Objetos Remotos Aspecto que transforma a classe de negócio em classe remota aspect Remoting_StockListenerImpl { declare parents: StockListenerImpl implements StockListenerOperations; interface StockListener { void update(stockinfo info); } interface StockListenerOperations { void update_daj_javaidl(daj.javaidl.api.stockmarket.stockinfo arg0); } Arquitetura Interna 23
24 Instanciação de Objetos Remotos Aspecto que transforma a classe de negócio em classe remota aspect Remoting_StockListenerImpl { declare parents: StockListenerImpl implements StockListenerOperations; void StockListenerImpl.update_daj_javaidl( daj.javaidl.api.stockmarket.stockinfo arg0) { update((stockmarket.stockinfo) arg0); } daj.javaidl.api.stockmarket.stocklistener StockListenerImpl.refIDL = null; } daj.javaidl.api.stockmarket.stocklistener StockListenerImpl.export2IDL() { } // ativa objeto segundo as convenções de Java IDL 24 Arquitetura Interna
25 Referências Remotas Cliente não referencia diretamente o objeto remoto e sim um proxy Funções desse proxy: Compatibilizar interface de negócio com interface remota Ativar objetos passados via semântica de referência remota Realizar casting entre objetos de negócio e remotos Tratar exceções remotas Arquitetura Interna 25
26 Referências Remotas Cliente não referencia diretamente o objeto remoto e sim um proxy class StockMarketProxy implements stockmarket.stockmarket { daj.javaidl.api.stockmarket.stockmarket server; interface StockMarket { void update(stockinfo info); void subscribe(string stock, StockListener obj); void unsubscribe(string stock, StockListener obj); StockInfo getstock(string stockname) throws StockNotFoundException; } interface StockMarketOperations { void update_daj_javaidl(daj.javaidl.api.stockmarket.stockinfo arg0); void subscribe_daj_javaidl(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); void unsubscribe_daj_javaidl(string arg0, daj.javaidl.api.stockmarket.stocklistener arg1); daj.javaidl.api.stockmarket.stockinfo getstock_daj_javaidl(string arg0) throws daj.javaidl.api.stockmarket.exceptions.stocknotfoundexception; } Arquitetura Interna 26
27 Referências Remotas Cliente não referencia diretamente o objeto remoto e sim um proxy class StockMarketProxy implements stockmarket.stockmarket { daj.javaidl.api.stockmarket.stockmarket server;... void subscribe(string arg0, StockListener arg1) { daj.javaidl.api.stockmarket.stocklistener _arg1 = SolveReference.javaidlSolve(arg1); server.subscribe_daj_javaidl(arg0, _arg1); }... } Arquitetura Interna 27
28 Ativação de Objetos Remotos Não é necessário escrever código para instanciar, registrar e ativar objetos remotos Aspecto abstrato public abstract aspect RMIServerSide { abstract pointcut registryremoteobject(); abstract String getservername(); abstract int gethostport(); abstract Remote getinstanceobject(); } void around(): registryremoteobject() { // instancia, ativa e registra objetos remotos em RMI } Arquitetura Interna 28
29 Ativação de Objetos Remotos Aspecto concreto aspect RMIServerSide_StockMarketB extends RMIServerSide { pointcut registryremoteobject(): execution(public static void Server_StockMarketB.main(..)); String getservername() { return "StockMarketB"; int gethostport() { return 0; } } Remote getinstanceobject() { return new stockmarket.stockmarketimpl(); } Arquitetura Interna 29
30 Serialização de Objetos Java IDL: objetos devem implementar a interface StreamableValue DAJ gera aspectos que fazem com que classes serializáveis implementem essa interface Aspectos gerados introduzem implementações para os métodos dessa interface Java RMI: objetos devem implementar a interface Serializable DAJ gera aspectos que fazem com que classes serializáveis implementem essa interface A interface Serializable não possui métodos 30
31 Tratamento de Exceções Java IDL: idlj produz classes para serialização de exceções Essas classes não podem ser substituídas DAJ gera aspecto que transforma exceções geradas por idlj em exceções de negócio e vice-versa Java RMI: Exceções de Java seguem convenções de Java RMI Métodos de interfaces remotas devem ativar RemoteException DAJ gera um aspecto que suaviza essa exceção 31
32 Ferramenta dajc Implementação de classes e aspectos para introdução de distribuição é uma tarefa tediosa e sujeita a erros A ferramenta dajc produz código para introdução de distribuição em uma aplicação dajc isenta o programador de: Dominar detalhes e convenções requeridas por plataformas de middleware Dominar conceitos de programação orientada por aspectos 32
33 DAJc: Geração de código Descritor de Distribuição Classes DAJc Núcleo da Aplicação Aspectos 33
34 dajc: Implementação Principais módulos: RemoteInterfaceGenerator IDLFileGenerator AdapterGenerator ProxyGenerator RemoteAspectGenerator SerializableAspectGenerator ExceptionHandlerGenerator Tamanho da ferramenta: Classes: 34 Interfaces: 1 Linhas de código:
35 Estudos de Caso Três sistemas legados: HealthWatcher: sistema para gerenciamento de reclamações sobre condições sanitárias de estabelecimentos da área de alimentação NPS: sistema financeiro para controle de ações negociadas em uma bolsa de valores Library: sistema para controle de biblioteca 35
36 HealthWatcher Versão Original Classes Interfaces Núcleo da aplicação Código específico de distribuição 4 2 Total Versão Baseada em DAJ Classes Interfaces Núcleo da aplicação Módulos internos de DAJ 6 0 DAJ Módulos gerados para Java RMI 2 1 DAJ Módulos gerados para Java IDL Total LOC Aspectos LOC Versões Executáveis Suporte a Java RMI Suporte a Java IDL Suporte múltiplo Classes Interfaces Aspectos LOC
37 NPS Versão Original Núcleo da aplicação Código específico de distribuição Total Classes Interfaces LOC Versão Baseada em DAJ Núcleo da aplicação Módulos adicionados ao núcleo Módulos internos de DAJ DAJ Módulos gerados para Java RMI DAJ Módulos gerados para Java IDL Total Classes Interfaces Aspectos LOC Versões Executáveis Suporte a Java RMI Suporte a Java IDL Suporte múltiplo Classes Interfaces Aspectos LOC
38 Library Versão Original Núcleo da aplicação Classes 66 Interfaces 4 LOC 4997 Versão Baseada em DAJ Núcleo da aplicação Módulos adicionados ao núcleo Módulos internos de DAJ DAJ Módulos gerados para Java RMI DAJ Módulos gerados para Java IDL Total Classes Interfaces Aspectos LOC Versões Executáveis Suporte a Java RMI Suporte a Java IDL Suporte múltiplo Classes Interfaces Aspectos LOC
39 Avaliação dos Estudos de Caso Em todos os cenários avaliados, os resultados obtidos foram aqueles esperados Foi possível adaptar os sistemas a uma segunda plataforma de middleware Clientes podem acessar dois servidores (usando plataformas de middleware distintas) Objetos remotos passados por serialização e por referência remota Testes funcionais são possíveis antes de introduzir distribuição 39
40 Conclusões Avaliação Tecnologias Alternativas Trabalhos Relacionados Trabalhos Futuros 40
41 Avaliação Modularização: DAJ foi capaz de isolar completamente o requisito de distribuição de todos os sistemas avaliados Portabilidade: DAJ permitiu gerar versões de sistemas distribuídos utilizando diferentes plataformas de middleware Obliviousness: com o uso de DAJ, o grau de dependência e entrelaçamento é mínimo 41
42 Tecnologias Alternativas DAJ se vale de três tecnologias: Aspectos Linguagens de domínio específico Geração e transformação de código Tecnologias Alternativas: Ferramentas para manipulação de bytecodes Geração de esqueletos de classes 42
43 Comparação com Outros Trabalhos Health Watcher Ceccato DAJ Java RMI X X X Java IDL (CORBA) X Passagem por serialização X X Passagem por referência remota X X Independência de arquitetura parcial X 43
44 Trabalhos Futuros Desenvolvimento e/ou reestruturação de outras aplicações distribuídas Suporte a serviços Web Suporte a funcionalidades específicas de uma determinada plataforma de middleware Suporte a sistemas de middleware que não sejam baseados em invocação de métodos remotos 44
45 Aspectos para Construção de Aplicações Distribuídas Cristiano Amaral Maffort Orientador: Prof. Marco Túlio de Oliveira Valente Programa de Pós-Graduação em Informática PUC Minas 12 de junho de 2007
46 FIM Não me envergonho de mudar de opinião, porque não me envergonho de pensar. (Blaise Pascal) 46
Sistemas Operacionais II
Modelo orientado a objetos: uma pequena revisão Instituto de Informátic ca - UFRGS Sistemas Operacionais II Modelos para programação distribuída (Remote Method Invocation) Aula 14 Programa é visto como
Leia maisAspectos para Construção de Serviços Web
Aspectos para Construção de Serviços Web Cristiano Amaral Maffort e Marco Túlio de Oliveira Valente Instituto de Informática Pontifícia Universidade Católica de Minas Gerais {maffort,mtov@pucminas.br Abstract.
Leia maisJava RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação
Java Remote Method Invocation Java Remote Method Invocation () é um protocolo Java para comunicação entre processos Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar
Leia maisBy Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa
By Gian Ricardo Berkenbrock & Eduardo Dockhorn da Costa Problema; AOP; Aspect J; Proposta ao Problema; Conclusões; Referências. Desenvolver os tipos abstratos de dados: lista, fila, pilha e deque. Estes
Leia maisProf. Me. Sérgio Carlos Portari Júnior
Prof. Me. Sérgio Carlos Portari Júnior Ambientes que visam desenvolver aplicações que precisam de um processamento paralelo e distribuído deverão saber lidar com algumas dificuldades. Isto decorre da heterogeneidade
Leia maisObjetos e Componentes Distribuídos: EJB e CORBA
: EJB e CORBA Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos
Leia mais15/4/15. Processamento Paralelo Middleware Orientado a Objetos. Sistema operacional é a única infraestrutura para interação. Middleware é adicionado
Aplicações distribuídas: interação entre partes Processamento Paralelo Middleware Orientado a Objetos Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) Rede A Rede B Rede C 2015/01 - INF02799 Sistema
Leia maisRMI e RPC. RPC significou um passo muito grande em direcção à
Sumário RMI Conceito. Arquitectura de Implementação. Java RMI Características. Interfaces e Objectos Remotos JVM e Java RMI. Passagem de Argumentos e Serialização. Class Downloading. 1 RMI e RPC RPC significou
Leia maisChamada Remota de Procedimento (RPC)
Chamada Remota de Procedimento (RPC) cont semântica de chamadas pelo menos uma vez no máximo uma vez exatamente uma vez relação com protocolo subjacente falhas e reinicializações de servidores funções
Leia maisExemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança. Callbacks. Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR
n n n n Exemplo de Aplicação Distribuída Serviço de Nomes Gerente de Segurança Callbacks Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR Introdução Estende o modelo de objeto Java para fornecer suporte
Leia maisJava RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo
Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula
Leia maisProgramando sistemas distribuídos com objetos distribuídos na rede TCP/IP. Prof. Me. Sérgio Carlos Portari Júnior
Programando sistemas distribuídos com objetos distribuídos na rede TCP/IP Prof. Me. Sérgio Carlos Portari Júnior Conteúdo Programático Contextualizando: Aula anterior Camada Middleware Programar para SD
Leia maisImplementação de um Sistema de Objetos Remoto baseado em Java RMI. Ricardo Couto Antunes da Rocha INF/UFG
Implementação de um Sistema de Objetos Remoto baseado em Java RMI Ricardo Couto Antunes da Rocha INF/UFG Declaração da Interface do Objeto Remoto Declaração de uma interface Java, com os métodos que são
Leia maisSistemas de Objetos DistribuídosPrimeira Aplicação Java ORB p.1/21
Sistemas de Objetos Distribuídos Primeira Aplicação Java ORB Francisco José da Silva e Silva Departamento de Informática da Universidade Federal do Maranhão Sistemas de Objetos DistribuídosPrimeira Aplicação
Leia mais5 Trabalhos Relacionados
5 Trabalhos Relacionados Durante o trabalho desenvolvido nesta dissertação foram estudadas diversas tecnologias que têm objetivos semelhantes ao nosso. Os trabalhos estudados apresentam modelos de programação
Leia maisPrincipais conceitos de CORBA
Principais conceitos de CORBA Tecgraf PUC-Rio fevereiro de 2011 Common Object Request Broker Architecture Uma arquitetura aberta para o desenvolvimento de aplicações distribuídas em um ambiente multilinguagem
Leia maisExtração de Aspectos. PUC Minas Instituto de Informática. Mestrado em Informática. Aluno: Marcelo Nassau Malta
Transformações de Código C para Extração de Aspectos PUC Minas Instituto de Informática Mestrado em Informática Aluno: Marcelo Nassau Malta Orientador: Prof. Marco Túlio de Oliveira Valente Sumário Motivação
Leia maisAspectos para Construção de Aplicações Distribuídas
Cristiano Amaral Maffort Aspectos para Construção de Aplicações Distribuídas Dissertação apresentada ao Programa de Pós-Graduação em Informática da Pontifícia Universidade Católica de Minas Gerais, como
Leia maisPOO e suas Limitações Introdução POA AspectJ: Conceitos Básicos. Objetivo da Programação? Introdução à OO Introdução à POO
POO e suas Limitações Introdução POA AspectJ: Conceitos Básicos Exemplo: Tracing Lincoln S. Rocha (lincoln@great.ufc.br) Objetivo da Programação? Introdução à OO Introdução à POO Limitações da POO Requisitos
Leia mais2 Desenvolvimento de Software Orientado a Aspectos
20 2 Desenvolvimento de Software Orientado a Aspectos A divisão em partes é um importante instrumento para se reduzir a complexidade de sistemas de software. É muito difícil para o ser humano compreender
Leia maisProgramação Paralela OO. projeto ProActive www-sop.inria.fr/oasis/proactive/home.html
Programação Paralela OO projeto ProActive www-sop.inria.fr/oasis/proactive/home.html motivação integracão de programacão paralela e distribuida com POO programacão mpi-like trabalha em baixo nivel de abstracão
Leia maisAgenda da Aula. Desenvolvimento de Software Orientado a Aspectos. Aspectos... Motivação. Um pouco de história. Programação Estruturada
Engenharia de Software Aula 23 Agenda da Aula Desenvolvimento de Software Orientado a Aspectos Introdução a desenvolvimento de software orientado a aspectos Interesses centrais e interesses transversais
Leia maisAspectJ - Programação Orientada a Aspectos em Java. Sérgio Soares Centro de Informática Universidade Federal de Pernambuco
AspectJ - Programação Orientada a Aspectos em Java Sérgio Soares Centro de Informática Universidade Federal de Pernambuco Programação Orientada a Objetos Lida com conceitos mais intuitivos Permite ganhos
Leia maisINTRODUÇÃO. RPC x RMI
1 INTRODUÇÃO RPC x RMI 2 INTRODUÇÃO RPC Remote procedure call Este termo é utilizado para aplicativos clientes que fazem normalmente chamadas a procedimentos remotos que estão em outro processo e hosts.
Leia mais2 Estado da Arte e Trabalhos Relacionados
18 2 Estado da Arte e Trabalhos Relacionados Neste capítulo, serão apresentados alguns conceitos relativos a frameworks orientado a objetos, e o paradigma da programação orientada a aspectos. Além disso,
Leia maisInvocação Remota. Prof. Leonardo Barreto Campos. 1/29
Invocação Remota Prof. Leonardo Barreto Campos 1/29 Sumário Introdução Chamada de Procedimento Remoto Invocação a Método Remoto Leitura Complementar Bibliografia 2/29 Introdução Essa aula trata como os
Leia maisRPC e RMI. Sistemas Distribuídos. Mauro Lopes Carvalho Silva. Professor EBTT DAI Departamento de Informática Campus Monte Castelo
Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta aula
Leia maisSistemas Distribuídos
Sistemas Distribuídos RPC Remote Procedure Call 1 Fonte: Alcides Calsavara e Thais V. Batista Chamada de Procedimentos Remotos (RPC) Motivação: comunicação baseada em operações de entrada/saída Ideal:
Leia maisNum sistema de objectos distribuídos, dois conceitos são fundamentais.
Folha 9-1 Java RMI - Remote Method Invocation No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus
Leia maisComunicação Objetos Distribuídos e RMI
Sistemas Distribuídos Comunicação Objetos Distribuídos e RMI - Parte 2 - Instituto de Informática UFG Verão 2005 Baseado em: Tanenbaum, Capítulo 2 Chamadas de Objetos: Chamadas Remotas e Chamadas Locais
Leia maisProgramação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos
Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){
Leia maisHMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP
HMI: UM MIDDLEWARE PARA OBJETOS DISTRIBUÍDOS SOBRE O PROTOCOLO HTTP Aluno: Abel Luiz Cechinel Orientador: Paulo Fernando da Silva Sumário Introdução; Fundamentação Teórica; Desenvolvimento; Conclusão;
Leia maisAspectJ. Silvio do Lago Pereira. Doutorando em Ciência da Computação
AspectJ Silvio do Lago Pereira Doutorando em Ciência da Computação slago@ime.usp.br Sumário Programação Orientada a Objetos (POO) Programação Orientada a Aspectos (POA) AspectJ Exemplos Novembro/2002 Silvio
Leia maisTecnologias de Distribuição e Integração. Quais as preocupações a ter com um sistema distribuído?
network link: Tecnologias de Distribuição e Integração ISP intranet backbone desktop computer: server: satellite link no interior de uma organização (intranet) clientes externos entre organizações 2 Quais
Leia mais3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks
48 3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks Este capítulo apresenta uma visão geral da contribuição principal deste trabalho: uma abordagem orientada a aspectos para o
Leia maisSistemas Distribuídos
Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: eam.avelar@gmail.com 1. Que são sistemas abertos? É um sistema que oferece serviços de acordo com
Leia maisUNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA. Sistemas Distribuídos
UNIVERSIDADE FEDERAL DE GOIÁS INSTITUTO DE INFORMÁTICA Sistemas Distribuídos Mestrado em Ciência da Computação 1o. Semestre / 2006 Prof. Fábio M. Costa fmc@inf.ufg.br www.inf.ufg.br/~fmc/ds-msc2006 Aula
Leia maisAspectJ. AspectJ. Extensões de AspectJ. Pontos de Junção. Exemplos de Pontos de Junção. Modelo de Pontos de Junção
DCC / ICEx / UFMG AspectJ AspectJ Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Linguagem orientada a aspectos mais madura e difundida Extensão simples da linguagem Java Gera arquivos.class compatíveis
Leia maisSmart Proxies para Invocação de Serviços Web Replicados
Smart Proxies para Invocação de Serviços Web Replicados José Geraldo Ribeiro Júnior (CEFET-MG / PUC Minas) Orientador: Prof. Marco Túlio Valente (PUC Minas) Fevereiro 2007 Apresentação Motivação Proposta
Leia maisAspect Oriented Programming (AOP) Uma visão geral da programação orientada a aspectos. Usando AspectJ
Aspect Oriented Programming (AOP) Uma visão geral da programação orientada a aspectos. Usando AspectJ Objetivos O objetivo dessa apresentação é proporcionar uma visão geral sobre a programação orientada
Leia maisCONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO
CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO CLASSES E OBJETOS PARA PROGRAMAÇÃO ORIENTADA A OBJETOS Classes são estruturas das linguagens de POO criadas para conter os dados que
Leia maisPlataformas de Distribuição de Objetos
Plataformas de Distribuição de Objetos Denominações Equivalentes: Modelos de Componentes Modelos de Integração de Objetos Motivação: Reuso de objetos Redução do Tempo e do Custo de Desenvolvimento de Software
Leia maisClasses e Objetos. Sintaxe de classe em Java
Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados
Leia maisClasses e Objetos. Prof. Fernando V. Paulovich 9 de agosto de 2010
Classes e Objetos SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade
Leia maisExemplo de Cliente e de Servidor CORBA Escritos em C++ Voltando ao Nosso Exemplo
Exemplo de Cliente e de Servidor CORBA Escritos em C++ 1 Copyright 1998, 1999 Francisco Reverbel Voltando ao Nosso Exemplo // IDL module Stock { exception UnknownStock { string name; interface Quoter {
Leia maisSistemas Distribuídos
Faculdades SENAC Análise e Desenvolvimento de Sistemas 1 de agosto de 2009 Orientação a Objetos Encapsulamento: Parte interna (privada) dos objetos Implementação: métodos Estado: atributos, variáveis,
Leia maisProgramação Orientada a Objetos
Programação Orientada a Objetos Pacotes e Encapsulamento Msc. Paulo de Tarso F. Júnior 1 Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes e interfaces
Leia maisInformática UFRGS. Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1
Programação com Objetos Distribuídos (C. Geyer) Java Comunicação 1 Autor Autor Local Cláudio Geyer Instituto de Informática disciplinas: POD e PDP Versão v4 2010-1 Programação com Objetos Distribuídos
Leia maisOs princípios do desenho orientado a objetos
Os princípios do desenho orientado a objetos Os princípios do desenho orientado a objetos Encapsulamento e congeneridade Domínios, grau de dependência e coesão Os perigos da herança e do polimorfismo Encapsulamento
Leia maisJavaTM RMI - Remote Method Invocation
JavaTM RMI - Remote Method Invocation Java e Engenharia de Software Orientada a Objetos por Jorge H. C. Fernandes (jhcf@di.ufpe.br) CESAR-DI-UFPE Julho de 1999 Objetivos desta Aula Mostrar o modelo de
Leia maisLista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }
Lista 05 Herança 1. Analisando a classe Java abaixo podemos observar que a mesma possui apenas um atributo, um construtor e dois métodos. Perceba que dentro do método main estão sendo invocados métodos
Leia mais9 Classes Abstractas e Interfaces
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro
9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract
Leia maisIntrodução a Programação Orientada a Aspectos
Introdução a Programação Orientada a Aspectos Parte 1 - Orientação a objetos Um objeto é um componente de software - uma parte de um sistema que exibe certas características específicas. A seguir são algumas
Leia mais2 A Infra-Estrutura SCS
2 A Infra-Estrutura SCS O SCS [7] é uma infra-estrutura para dar apoio à instalação, carga e execução de componentes de software em um ambiente distribuído. Atualmente, é fornecida uma implementação do
Leia maisJava RMI Remote Method Invocation
Java RMI Remote Method Invocation Prof. Tiago Garcia de Senna Carneiro Sistemas Distribuídos - 2006 Conteúdo Passos para implementar um aplicação RMI Executando e compilando uma aplicação RMI Exemplo:
Leia maisInterfaces e Classes Internas
e Classes Internas SCC0604 - Programação Orientada a Objetos Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade
Leia maisFerramenta para Desenvolvimentode Sistemas EmbarcadosUtilizando Linguagem de Alto Nível p.1/25
Universidade Federal do Rio Grande do Sul Escola de Engenharia - Instituto de Informática Graduação em Engenharia de Computação Ferramenta para Desenvolvimento de Sistemas Embarcados Utilizando Linguagem
Leia maisObjetos e Componentes Distribuídos: EJB
: EJB Sistemas Distribuídos Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Objetivos Nesta
Leia maisLinguagem de Programação Visual
Linguagem de Programação Visual Unidade 4 - Introdução à API Swing - JOptionPane Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 API SWING... 3 A CLASSE JOPTIONPANE... 3 PRINCIPAIS MÉTODOS DA CLASSE
Leia mais3 Trabalhos relacionados
3 Trabalhos relacionados Adaptação e implantação dinâmicas são requisitos de aplicações em diversos domínios. Diversas abordagens são capazes de promover adaptação e implantação em tempo de execução. Alguns
Leia maisInterfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.
Interfaces Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Interfaces É utilizada para agrupar conceitos em
Leia maisSistemas Distribuídos
Chamada Remota de Procedimento abril de 2017 RPC: motivação A B send (B, &pedido) receive (B, &resposta) como facilitar esse padrão tão comum? encapsulamento de detalhes de comunicação criação, envio e
Leia maisGrupo I [7v] b) [0,3] Em que componente do sistema de RPC será utilizado o campo identificador de operação?
Número: Nome: Página 1 de 7 LEIC/LETI 2013/14, 1º Teste de Sistemas Distribuídos, 29 de Março de 2014 Responda no enunciado, apenas no espaço fornecido. Identifique todas as folhas. Duração: 1h30m Grupo
Leia maisConceitos de Programação Orientada por Objectos. Rui Camacho Programação 2
Conceitos de Programação Orientada por Objectos Um Problema Problema: Existem, hoje em dia, aplicações complexas e de grande dimensão que é preciso desenvolver e manter de modo eficiente utilizando equipas
Leia maisProtocolo Request-Reply
n n n n Protocolo Request-Reply Modelo de Objeto Remoto Semânticas de Invocação Remota Arquitetura de Invocação Remota Prof a Ana Cristina B. Kochem Vendramin DAINF / UTFPR Introdução Características de
Leia maisHerança. Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman SISTEMAS DE INFORMAÇÃO 1
Herança Fátima L. S. Nunes Luciano A. Digiampietri Norton T. Roman 1 1 1 Motivação Você está desenvolvendo um sistema de gerenciamento de pessoal para a USP Precisa fazer: Cadastro de alunos e professores
Leia maisLeitura: Cap : Sommerville; cap20: Pressman
Leitura: Cap26-27 - 28: Sommerville; cap20: Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º Edição / Ian Sommerville 2000 Slide 1/47 Manutenção de software É modificar um programa depois que
Leia maisp Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco
1 Expandindo o Sistema p Imagine que um Sistema de Controle do Banco pode ser acessado, além dos Gerentes, pelos Diretores do Banco class Diretor extends Funcionario { public boolean autentica(int senha)
Leia maisParadigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura
Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação
Leia maisJava 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br
Java 2 Standard Edition Fundamentos de Objetos Remotos Helder da Rocha www.argonavis.com.br 1 Sobre este módulo Este módulo tem como objetivo dar uma visão geral, porém prática, da criação e uso de objetos
Leia maisManutenção Leitura: Sommerville; Pressman
Manutenção Leitura: Sommerville; Pressman Auxiliadora Freire Fonte: Engenharia de Software 6º - 8º Edição / Ian Sommerville 2000-2007 Slide 1 Manutenção de software É modificar um programa depois que ele
Leia maisUNIVERSIDADE FEDERAL DE P ERNAMBUCO
UNIVERSIDADE FEDERAL DE P ERNAMBUCO GRADUAÇÃO EM SISTEMAS DE INFORMAÇÃO CENTRO DE INFORMÁTICA 2015.2 Programação Orientada a Aspectos com AspectJ nos frameworks Java atuais PROPOSTA DE TRABALHO DE GRADUAÇÃO
Leia maisNúmero: Nome: Página 1 de 7. Duração da prova: 1h30m. Grupo I [7] Considere o seguinte excerto (incompleto) de um programa cliente em SUN RPC:
Número: Nome: Página 1 de 7 LEIC/LETI 2016/17, Repescagem do 1º Teste de Sistemas Distribuídos 4 de julho de 2017 Responda no enunciado, usando apenas o espaço fornecido. Identifique todas as folhas. Uma
Leia maisLinguagem de Programação Orientada a Objeto Abstração - Encapsulamento
Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento Professora Sheila Cáceres Variáveis locais Campos são um tipo de variável. Eles: armazenam valores por toda a vida de um objeto; e
Leia maisRoteiro. Introdução. Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans. Objetos. Princípios da Orientação a Objetos
Uma Introdução à Programação Orientada a Objetos e JAVA usando NetBeans Roteiro Introdução Conceitos de Oientação a Objetos A Linguagem Java NetBeans (www.netbeans.org) Fernando Vieira Paulovich paulovic@icmc.usp.br
Leia maisIntrodução a CORBA. Renato Cerqueira. Departamento de Informática, PUC-Rio
Introdução a CORBA Renato Cerqueira Departamento de Informática, PUC-Rio Ferramentas de Programação p/ SD Vários níveis de abstração Sockets (TCP/IP) Chamada de Procedimentos Remotos (RPC) Objetos Distribuídos
Leia maisTécnicas para Reutilização de Software
DCC / ICEx / UFMG Técnicas para Reutilização de Software Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Panorama de Reutilização Frameworks Padrões de projeto Aplicações configuráveis Padrões de
Leia maisProgramação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III
Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços
Leia maisProgramação Orientada a Objetos
Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no
Leia maisQuando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção.
6 Exceções Quando um programa viola as restrições semânticas da linguagem, a JVM assinala um erro ao programa, sob a forma de exceção. Uma exceção é um erro recuperável - O controlo da execução do programa
Leia maisJava First-Tier: Aplicações. Herança: Simples Múltipla. Orientação a Objetos em Java (III) Problemas de Herança Múltipla.
Java First-Tier: plicações Orientação a Objetos em Java (III) Grupo de Linguagens de Programação Departamento de Informática PUC-Rio Herança: Simples Múltipla O tipo de herança que usamos até agora é chamado
Leia maisConceitos Básicos da Programação OO
Conceitos Básicos da Programação OO Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Objetivos Aprender os
Leia maisGenerics - Java. Fernando Santos. Programação Orientada a Objetos
- Java Fernando Santos Programação Orientada a Objetos Generics é uma funcionalidade incorporada ao Java a partir da versão 5.0 Permite aos programadores escreverem métodos genéricos Os parâmetros dos
Leia maisProgramação Orientada a Objectos - P. Prata, P. Fazendeiro. Hierarquia de classes e mecanismo de ligação
4 Conceito de Herança Hierarquia de classes e mecanismo de ligação Herança Uma classe pode herdar operações de uma superclasse e as suas operações podem ser herdadas por subclasses. O mecanismo de herança
Leia maisIntrodução à Programação. Conceitos Básicos de Orientação a Objetos
Introdução à Programação Conceitos Básicos de Orientação a Objetos Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma Conceito de paradigma Diferentes
Leia maisProjeto de Linguagem. Linguagens de Programação
Projeto de Linguagem Renato Ferreira Linguagens de Programação Linguagens são adotadas para preencher uma demada Facilitar uma aplicação outrora difícil/impossível Independente da qualidade da linguagem
Leia maisEsta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli
Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,
Leia maisCliente. Servidor. Núcleo do ORB. Depende do adaptador Interface proprietária. Independe de ORB Depende das definições IDL.
1 Copyright 1998, 1999 Francisco Reverbel Cliente Servidor Interface de Invocação Dinâmica Stub IDL Interface do ORB Esqueleto IDL Esqueleto Dinâmico Adaptador de Objetos Núcleo do ORB Independe de ORB
Leia mais