0
Agentes Móveis Aspectos de Desenvolvimento Componentes : Luiz Matos, Marcelo Almeida, Margarete Sá Salvador, 2007 Universi...
Organização do estudo <ul><li>Introdução a Agentes Móveis </li></ul><ul><ul><li>Princípios básicos </li></ul></ul><ul><ul>...
<ul><li>Introdução a Agentes Móveis </li></ul><ul><ul><li>Princípios básicos </li></ul></ul><ul><ul><li>Quando usar </li><...
Princípios básicos <ul><li>Crescimento das redes de informação; </li></ul><ul><li>Desenvolvimento de aplicações distribuíd...
Princípios básicos <ul><li>A alternativa é permitir que um computador além de chamar procedimentos em outro, forneça os pr...
<ul><li>É um programa em execução que  passa de um computador para outro , realizando uma tarefa em nome de alguém e final...
<ul><li>Ag ência : É o ambiente de execução dos agentes, dando suporte ao seu ciclo de vida – recebe, executa,  envia, con...
Migração de Código <ul><li>Modelos </li></ul><ul><ul><li>Mobilidade fraca – Quando ocorre a transferência de código e dado...
Quando usar <ul><li>Gerência de redes – monitoramento, filtragem e notificação; </li></ul><ul><li>Processamento paralelo –...
<ul><li>Dados armazenados nos computadores; </li></ul><ul><li>Dados armazenados no agente; </li></ul><ul><li>A integridade...
Representação das ameaças Sistema de Agentes M óveis Entidades Externas Aspectos de segurança 1. ameaças do servidor contr...
<ul><li>Desenvolvimento de Agentes Móveis </li></ul><ul><ul><li>Agentes Móveis baseados em Java </li></ul></ul><ul><ul><li...
Agentes móveis baseados em Java <ul><li>A escolha da linguagem Java para o desenvolvimento de Agentes Móveis está fortemen...
<ul><li>Em Java : </li></ul><ul><li>Aglets - IBM, Japão </li></ul><ul><li>Odyssey - General Magic, EUA </li></ul><ul><li>V...
Conceitos básicos <ul><li>Plataforma de agentes móveis baseados na linguagem de programação Java; </li></ul><ul><li>Lançad...
<ul><ul><li>Aglet :  </li></ul></ul><ul><ul><ul><li>Autônomo por possuir sua própria  thread  de execução; </li></ul></ul>...
<ul><ul><li>Contexto :  </li></ul></ul><ul><ul><ul><li>É o habitat do Aglet (agência), onde o mesmo não só vive como obtém...
<ul><li>O ato de mover/migrar um Aglet de um contexto para o outro é feito de forma ativa ou passiva. </li></ul><ul><ul><l...
Ciclo de Vida Aglets: uma visão geral Figura 9.  Ciclo de Vida de um Aglet  (JUNG, [s.d.]) O Aglet   toma seu lugar em um ...
<ul><ul><li>Modelo de programação baseado em  eventos  de  callback  manipulados através de tratadores denominados  listen...
<ul><ul><li>CloneListener: </li></ul></ul><ul><ul><ul><li>Gerencia os eventos associados à clonagem. </li></ul></ul></ul><...
<ul><ul><li>MobilityListener: </li></ul></ul><ul><ul><ul><li>Gerencia os eventos associados à mobilidade. </li></ul></ul><...
<ul><ul><li>PersistenceListener: </li></ul></ul><ul><ul><ul><li>Gerencia os eventos associados à persistência do Aglet no ...
<ul><ul><li>Baseado no paradigma de pedido/resposta (request/reply) entre máquinas. </li></ul></ul><ul><ul><li>Operações s...
<ul><ul><li>Aglets não invocam métodos de outros diretamente; </li></ul></ul><ul><ul><li>Utilizam objetos  AgletProxy , qu...
Aglet Server (TAHITI) Figura 12.  Interface TAHITI Demonstração:  Desenvolvendo um agente móvel com Aglets Cria um novo Ag...
<ul><li>import com.ibm.aglet.*; </li></ul><ul><li>public class FirstAglet  extends Aglet  { </li></ul><ul><ul><li>//Metodo...
Exemplo 2 – Tratando Listeners Demonstração:  Desenvolvendo um agente móvel com Aglets <ul><li>import com.ibm.aglet.*; </l...
<ul><ul><li>/* </li></ul></ul><ul><ul><li>* Metodos da interface CloneListener </li></ul></ul><ul><ul><li>*/ </li></ul></u...
Exemplo 2 – Tratando Listeners import com.ibm.aglet.*; import com.ibm.aglet.event.*; public class MyListenerTest  extends ...
Exemplo 3 – Tratando Proxys Demonstração:  Desenvolvendo um agente móvel com Aglets <ul><li>import com.ibm.aglet.*; </li><...
import com.ibm.aglet.*; import java.util.Enumeration; import java.util.Date; public class ProxyInfoExample  extends Aglet ...
Exemplo 3 – Tratando Proxys <ul><ul><li>catch (Exception e) {  </li></ul></ul><ul><ul><li>print(“Falha ao criar o child.&q...
Considerações finais <ul><li>Dificuldades: escassez de conteúdo atualizado e carência na disponibilidade de aplicações. </...
Referências <ul><li>AGLETS.  The IBM Aglets Software Development Kit Version 2.02.  Disponível em: <http://www.trl.ibm.com...
MALUTA, Líliam C. Gaiotto.  Aplicação em Computação Móvel para Monitoramento de Pacientes em UTI. Disponível em: <http://w...
Figura 5.  Representação Places (WHITE, 1996) Figura 6.  Representação Agents (WHITE, 1996) Figura 7.  Representação Trave...
 
Upcoming SlideShare
Loading in...5
×

Agentes Moveis - Aspectos De Desenvolvimento

1,803

Published on

Seminário apresentado na disciplina de Computação Móvel.
Introdução a Agentes Móveis, Aglets, Exemplos.

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total Views
1,803
On Slideshare
0
From Embeds
0
Number of Embeds
0
Actions
Shares
0
Downloads
72
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • Transcript of "Agentes Moveis - Aspectos De Desenvolvimento"

    1. 1. Agentes Móveis Aspectos de Desenvolvimento Componentes : Luiz Matos, Marcelo Almeida, Margarete Sá Salvador, 2007 Universidade Federal da Bahia Especialização em Sistemas Distribuídos Computação Móvel
    2. 2. Organização do estudo <ul><li>Introdução a Agentes Móveis </li></ul><ul><ul><li>Princípios básicos </li></ul></ul><ul><ul><li>Quando usar </li></ul></ul><ul><ul><li>Porque usar </li></ul></ul><ul><ul><li>Aspectos de segurança </li></ul></ul><ul><li>Desenvolvimento de Agentes Móveis </li></ul><ul><ul><li>Agentes Móveis baseados em Java </li></ul></ul><ul><ul><li>Frameworks e Aplicações existentes </li></ul></ul><ul><ul><li>Aglets: uma visão geral </li></ul></ul><ul><ul><li>Demonstração: Desenvolvendo um agente móvel com Aglets </li></ul></ul><ul><li>Considerações Finais </li></ul><ul><li>Referências </li></ul>
    3. 3. <ul><li>Introdução a Agentes Móveis </li></ul><ul><ul><li>Princípios básicos </li></ul></ul><ul><ul><li>Quando usar </li></ul></ul><ul><ul><li>Porque usar </li></ul></ul><ul><ul><li>Aspectos de segurança </li></ul></ul>
    4. 4. Princípios básicos <ul><li>Crescimento das redes de informação; </li></ul><ul><li>Desenvolvimento de aplicações distribuídas; </li></ul><ul><li>Remote Procedure Calling (RPC); </li></ul><ul><li>Remote Method Invocation (RMI); </li></ul>Figura 1. Funcionamento RPC (WHITE, 1996) <ul><li>Permite que um computador chame procedimentos em outro. </li></ul><ul><li>Uma requisição inclui os argumentos do procedimento. </li></ul><ul><li>A resposta inclui os resultados. </li></ul><ul><li>Cada interação entre cliente e servidor consiste de duas conexões; </li></ul><ul><li>A comunicação deve ser contínua. </li></ul>Contextualização
    5. 5. Princípios básicos <ul><li>A alternativa é permitir que um computador além de chamar procedimentos em outro, forneça os procedimentos a serem executados. </li></ul>Figura 2. Funcionamento Agentes Móveis (WHITE, 1996) <ul><li>A interação não requer uma comunicação contínua; </li></ul><ul><li>Um agente do cliente visita o servidor; </li></ul><ul><li>O agente possui procedimentos e argumentos; </li></ul><ul><li>O servidor o executa local-mente, podendo enviar seu próprio agente para outro computador. </li></ul>Contextualização
    6. 6. <ul><li>É um programa em execução que passa de um computador para outro , realizando uma tarefa em nome de alguém e finalmente retornando com os resultados obtidos a esse alguém. (COULOURIS e outros, 2007) </li></ul><ul><li>São programas de computador auto-contidos e identificáveis que podem se mover dentro da rede e agir em nome do usuário ou de uma outra entidade. (PHAM e KARMOUCH, 1998) </li></ul>Princípios básicos Definição Agente Interações Locais Cliente Interações de Rede Figura 3. Representação Agentes Móveis <ul><ul><li>Carrega consigo: </li></ul></ul><ul><ul><ul><li>– seu código; </li></ul></ul></ul><ul><ul><ul><li>– informação de estado de execução; </li></ul></ul></ul><ul><ul><ul><li>– estado dos dados; </li></ul></ul></ul>Servidor
    7. 7. <ul><li>Ag ência : É o ambiente de execução dos agentes, dando suporte ao seu ciclo de vida – recebe, executa, envia, controla recursos, etc. </li></ul><ul><li>Places : Ambiente de execução específico de uma agência, que disponibiliza um conjunto de serviços (recursos). Uma agência pode ter vários places, dando um contexto ao agente. </li></ul><ul><li>Agents : Consiste de Código + Estado, tem atributos como identidade, localização, autoridade e permissões. </li></ul><ul><li>Travel : É a transferência de um agente de um lugar para outro, que só ocorre se o agente está autorizado a visitar o destino. </li></ul>Princípios básicos Conceitos Figura 5. Representação Places (WHITE, 1996) Figura 6. Representação Agents (WHITE, 1996) Figura 7. Representação Travel (WHITE, 1996) Agente Serviços/Recursos Figura 4. Representação Agência
    8. 8. Migração de Código <ul><li>Modelos </li></ul><ul><ul><li>Mobilidade fraca – Quando ocorre a transferência de código e dados para a Agência destino. </li></ul></ul><ul><ul><li>Mobilidade forte – O agente (código, dados e estado de execução) é transportado para a Agência destino. Assim, a sua execução continua a partir da instrução seguinte àquela que causou a migração. </li></ul></ul><ul><li>Razões para o uso </li></ul><ul><ul><li>Melhora no Desempenho </li></ul></ul><ul><ul><ul><li>permitir a distribuição de tarefas a vários computadores eliminando o processamento centralizado. </li></ul></ul></ul><ul><ul><li>Flexibilidade </li></ul></ul><ul><ul><ul><li>a divisão da aplicação em diferentes partes (por arquitetura de multicamadas). </li></ul></ul></ul>Princípios básicos
    9. 9. Quando usar <ul><li>Gerência de redes – monitoramento, filtragem e notificação; </li></ul><ul><li>Processamento paralelo – particionamento e alocação dinâmica de tarefas; </li></ul><ul><li>Comércio eletrônico – negociação, transação e busca; </li></ul><ul><li>Entretenimento – busca de informações, jogos em ambientes virtuais distribuídos, Etc.. </li></ul><ul><li>Redu zir custos de comunicação; Ganhar performance através da delegação de tarefas; Reduzir a carga de rede e superar a latência de comunicação; Descentralização do Processamento, Etc.. </li></ul>Porque usar
    10. 10. <ul><li>Dados armazenados nos computadores; </li></ul><ul><li>Dados armazenados no agente; </li></ul><ul><li>A integridade do agente; </li></ul><ul><li>A não interrupção indevida do agente; </li></ul><ul><li>A não personificação indevida do agente; </li></ul><ul><li>A não utilização indevida de recursos computacionais. </li></ul>O que devemos proteger*? Aspectos de segurança <ul><li>Compilar o código localmente; </li></ul><ul><li>Verificar executáveis em ambientes controlados; </li></ul><ul><li>Autenticação de usuários; </li></ul><ul><li>Criar políticas de acesso a recursos; </li></ul><ul><li>Criptografia e assinatura de mensagens. </li></ul>Como podemos proteger*? * Adaptado de Cunha (2005).
    11. 11. Representação das ameaças Sistema de Agentes M óveis Entidades Externas Aspectos de segurança 1. ameaças do servidor contra o agente; 2. ameaças do agente contra o servidor; 3. ameaças do agente contra outro agente sendo executado no mesmo servidor; 4. outras ameaças contra o sistema de agentes. Personificação, negação de serviço, alteração de dados ou código, acesso não autorizado, entre outros. Figura 8. Ameaças em Agentes Móveis (UTO, 2003)
    12. 12. <ul><li>Desenvolvimento de Agentes Móveis </li></ul><ul><ul><li>Agentes Móveis baseados em Java </li></ul></ul><ul><ul><li>Frameworks e Aplicações existentes </li></ul></ul><ul><ul><li>Aglets: uma visão geral </li></ul></ul><ul><ul><li>Demonstração: Desenvolvendo um agente móvel com Aglets </li></ul></ul>
    13. 13. Agentes móveis baseados em Java <ul><li>A escolha da linguagem Java para o desenvolvimento de Agentes Móveis está fortemente relacionada às suas características de: </li></ul><ul><ul><li>Portabilidade; </li></ul></ul><ul><ul><li>Suporte a requisitos de rede; </li></ul></ul><ul><ul><li>Mecanismos de serialização; </li></ul></ul><ul><ul><li>etc </li></ul></ul>
    14. 14. <ul><li>Em Java : </li></ul><ul><li>Aglets - IBM, Japão </li></ul><ul><li>Odyssey - General Magic, EUA </li></ul><ul><li>Voyager - ObjectSpace, EUA </li></ul><ul><li>Em outras linguagens : </li></ul><ul><li>Telescript - General Magic, EUA </li></ul><ul><li>D’Agents - Dartmouth College, Inglaterra </li></ul><ul><li>TACOMA - Universidade de Cornell, EUA </li></ul>Frameworks e Aplicações existentes
    15. 15. Conceitos básicos <ul><li>Plataforma de agentes móveis baseados na linguagem de programação Java; </li></ul><ul><li>Lançada em 1996, resultado de trabalhos desenvolvidos nos laboratórios da IBM do Japão; </li></ul><ul><li>Utilizam contexto- aglet (espaço de trabalho dos Aglets) onde os agentes são gerenciados; </li></ul><ul><li>Código aberto disponibilizado pela IBM em licença pública; </li></ul><ul><li>Aglet = AGent + appLET. </li></ul>Aglets: uma visão geral
    16. 16. <ul><ul><li>Aglet : </li></ul></ul><ul><ul><ul><li>Autônomo por possuir sua própria thread de execução; </li></ul></ul></ul><ul><ul><ul><li>Objeto Java com capacidade de se deslocar por nodos da web; </li></ul></ul></ul><ul><ul><ul><li>Reativo pela capacidade de responder mensagens. </li></ul></ul></ul><ul><ul><li>Proxy : </li></ul></ul><ul><ul><ul><li>Representante local do Aglet; </li></ul></ul></ul><ul><ul><ul><li>Usado para proteger o acesso aos métodos públicos deste; </li></ul></ul></ul><ul><ul><ul><li>Provê transparência de localização (é um objeto estático enquanto que um Aglet é móvel). </li></ul></ul></ul>Conceitos básicos Aglets: uma visão geral
    17. 17. <ul><ul><li>Contexto : </li></ul></ul><ul><ul><ul><li>É o habitat do Aglet (agência), onde o mesmo não só vive como obtém informações sobre seu ambiente atual. </li></ul></ul></ul><ul><ul><ul><li>É um objeto estacionário que monitora os Aglets e mantém o ambiente seguro contra invasões. </li></ul></ul></ul><ul><ul><li>Mensagem : </li></ul></ul><ul><ul><ul><li>Objeto passado entre Aglets de forma síncrona ou assíncrona, usado para a colaboração entre eles. </li></ul></ul></ul><ul><ul><li>Itinerário : </li></ul></ul><ul><ul><ul><li>É o caminho que o Aglet tem que percorrer. </li></ul></ul></ul><ul><ul><li>Identificador : </li></ul></ul><ul><ul><ul><li>Identidade única do Aglet usado em toda a sua vida. </li></ul></ul></ul>Conceitos básicos Aglets: uma visão geral
    18. 18. <ul><li>O ato de mover/migrar um Aglet de um contexto para o outro é feito de forma ativa ou passiva. </li></ul><ul><ul><li>Migração ativa : O próprio Aglet decide migrar o estado corrente de sua execução para um novo contexto através da operação dispatch ; </li></ul></ul><ul><ul><li>Migração passiva : O contexto (agência) invoca o método retract para requisitar que o agente volte ao seu local de origem; </li></ul></ul><ul><ul><li>A migração de um Aglet é feita por mobilidade fraca utilizando serialização de classes. </li></ul></ul>Mobilidade Aglets: uma visão geral
    19. 19. Ciclo de Vida Aglets: uma visão geral Figura 9. Ciclo de Vida de um Aglet (JUNG, [s.d.]) O Aglet toma seu lugar em um contexto, ganha seu identificador e é inicializado. Um aglet nasce igual o pai exceto ID e estado. Ação de despachar um Aglet de um contexto e inseri-lo em outro, onde este reiniciará sua execução. Um Aglet, previamente despachado, é trazido de volta a um contexto e seu estado volta junto. Um Aglet é retirado temporariamente de seu contexto e é colocado em um contexto secundário. Um Aglet desativado pode ser reativado, voltando a executar a partir do seu estado no momento da esativação. O Aglet é retirado de seu contexto e morre. Seu estado é perdido para sempre.
    20. 20. <ul><ul><li>Modelo de programação baseado em eventos de callback manipulados através de tratadores denominados listeners ; </li></ul></ul><ul><ul><li>Eventos atuam durante as várias fases do ciclo de vida do Aglet; </li></ul></ul><ul><ul><li>Programador utiliza tais eventos para ligar ações aos Aglets; </li></ul></ul><ul><ul><li>Listeners podem ser combinados para executar tarefas complexas; </li></ul></ul><ul><ul><li>Há três tipos de listeners : </li></ul></ul><ul><ul><ul><li>CloneListener: </li></ul></ul></ul><ul><ul><ul><li>MobilityListener: </li></ul></ul></ul><ul><ul><ul><li>PersistenceListener: </li></ul></ul></ul>Modelo de Eventos Aglets: uma visão geral
    21. 21. <ul><ul><li>CloneListener: </li></ul></ul><ul><ul><ul><li>Gerencia os eventos associados à clonagem. </li></ul></ul></ul><ul><ul><ul><li>Métodos utilizados: </li></ul></ul></ul><ul><ul><ul><ul><li>onCloning (logo antes da clonagem); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>onClone (durante a clonagem); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>onCloned (depois da clonagem). </li></ul></ul></ul></ul>Tipos de Listeners Aglets: uma visão geral
    22. 22. <ul><ul><li>MobilityListener: </li></ul></ul><ul><ul><ul><li>Gerencia os eventos associados à mobilidade. </li></ul></ul></ul><ul><ul><ul><li>Métodos utilizados: </li></ul></ul></ul><ul><ul><ul><ul><li>onDispatching (logo antes do despacho); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>onReverting (logo antes da retratação); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>onArrival (assim que o Aglet chega ao destino). </li></ul></ul></ul></ul>Tipos de Listeners Aglets: uma visão geral
    23. 23. <ul><ul><li>PersistenceListener: </li></ul></ul><ul><ul><ul><li>Gerencia os eventos associados à persistência do Aglet no contexto. </li></ul></ul></ul><ul><ul><ul><li>Métodos utilizados: </li></ul></ul></ul><ul><ul><ul><ul><li>onDeactivating (logo antes da desativação); </li></ul></ul></ul></ul><ul><ul><ul><ul><li>onActivation (logo depois da ativação); </li></ul></ul></ul></ul><ul><ul><li>Outros métodos utilizados: </li></ul></ul><ul><ul><ul><li>onCreation e onArrival (métodos automaticamente acionados quando um Aglet chega ao contexto destino). </li></ul></ul></ul>Tipos de Listeners Aglets: uma visão geral
    24. 24. <ul><ul><li>Baseado no paradigma de pedido/resposta (request/reply) entre máquinas. </li></ul></ul><ul><ul><li>Operações suportados pelo protocolo: </li></ul></ul>ATP – Agent Transfer Protocol Aglets: uma visão geral Figura 10. Operações do ATP (JUNG, [ s.d.]) solicita a um sistema de agentes destino que reconstrua um agente a partir do conteúdo de uma requisição e inicie sua execução. solicita a um sistema de agentes destino que envie de volta um determinado agente ao emissor. solicita a um receptor que este recupere e envie alguma informação. Similar ao método GET do HTTP. usado para transmitir uma mensagem a um agente identificado por um agent-id e retornar alguma resposta à ação.
    25. 25. <ul><ul><li>Aglets não invocam métodos de outros diretamente; </li></ul></ul><ul><ul><li>Utilizam objetos AgletProxy , que agem como representantes do agente; </li></ul></ul><ul><ul><li>A classe AgletProxy utiliza métodos como dispatch(), clone(), deactivate() e dispose() . </li></ul></ul>Interações entre Aglets Aglets: uma visão geral Figura 11. Relação entre Aglet e proxy (JUNG, [s.d.])
    26. 26. Aglet Server (TAHITI) Figura 12. Interface TAHITI Demonstração: Desenvolvendo um agente móvel com Aglets Cria um novo Aglet. Exibe caixa de dialogo de um Aglet. Traz informações sobre o Aglet selecionado. Elimina um Aglet Clona um Aglet Envia um Aglet para um host destino Traz de volta um Aglet enviado a outro host Aglet em atividade. - Demonstração da ferramenta
    27. 27. <ul><li>import com.ibm.aglet.*; </li></ul><ul><li>public class FirstAglet extends Aglet { </li></ul><ul><ul><li>//Metodo run, executado no dispatching </li></ul></ul><ul><ul><li>public void run () { </li></ul></ul><ul><ul><li> String hello = “oi pessoal”; </li></ul></ul><ul><ul><ul><li>System. out .println(hello + &quot;! &quot;); </li></ul></ul></ul><ul><ul><ul><li>for(int i=0; i<3; i++) { </li></ul></ul></ul><ul><ul><ul><li>System. out .println(i); </li></ul></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li> System. out .println(&quot;Eu falei: &quot; + hello.toUpperCase()); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>}; //Fim da classe FirstAglet </li></ul>Exemplo 1 – Hello World Móvel Demonstração: Desenvolvendo um agente móvel com Aglets Importar pacotes da API Herdar a classe Aglet Implementar método run()
    28. 28. Exemplo 2 – Tratando Listeners Demonstração: Desenvolvendo um agente móvel com Aglets <ul><li>import com.ibm.aglet.*; </li></ul><ul><li>import com.ibm.aglet.event.*; </li></ul><ul><li>public class MyListener implements </li></ul><ul><li>MobilityListener, CloneListener, PersistencyListener { </li></ul><ul><ul><li>/** </li></ul></ul><ul><ul><li>* Metodos da interface MobilityListener </li></ul></ul><ul><ul><li>*/ </li></ul></ul><ul><ul><li>public void onArrival (MobilityEvent event) { </li></ul></ul><ul><ul><li>System. out .println(&quot;O Agente chegou: &quot; + event); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public void onDispatching (MobilityEvent event) { </li></ul></ul><ul><ul><li>System. out .println(&quot;Antes de mover: &quot; + event); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public void onReverting (MobilityEvent event) { </li></ul></ul><ul><ul><li>System. out .println(&quot;Antes de voltar para meu lugar: &quot; + event); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>//Continua no próximo slide.. </li></ul></ul>Importar pacotes da API Implementar Interfaces Implementar métodos
    29. 29. <ul><ul><li>/* </li></ul></ul><ul><ul><li>* Metodos da interface CloneListener </li></ul></ul><ul><ul><li>*/ </li></ul></ul><ul><ul><li>public void onClone (CloneEvent event) { </li></ul></ul><ul><ul><li>System. out .println(&quot;Eu sou o clone: &quot; + event); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public void onCloned (CloneEvent event) { </li></ul></ul><ul><ul><li>System. out .println(&quot;Um clone de mim foi criado: &quot; + event); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public void onCloning (CloneEvent event) { </li></ul></ul><ul><ul><li>System. out .println(&quot;Alguem esta me clonando: &quot; + event); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>/* </li></ul></ul><ul><ul><li>* Metodos da interface PersistencyListener </li></ul></ul><ul><ul><li>*/ </li></ul></ul><ul><ul><li>public void onActivation (PersistencyEvent event) { </li></ul></ul><ul><ul><li>System. out .println(&quot;Ativando: &quot; + event); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>public void onDeactivating (PersistencyEvent event) { </li></ul></ul><ul><ul><li>System. out .println(&quot;Desativando: &quot; + event); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>}; //Fim da classe MyListener </li></ul>Demonstração: Desenvolvendo um agente móvel com Aglets Implementar métodos Implementar métodos
    30. 30. Exemplo 2 – Tratando Listeners import com.ibm.aglet.*; import com.ibm.aglet.event.*; public class MyListenerTest extends Aglet { public boolean move = true; public void onCreation (Object init) { //cria um objeto listener MyListener listener = new MyListener(); //registra um listener mobility this.addMobilityListener((MobilityListener)listener); //registra um listener clone this.addCloneListener((CloneListener)listener); //registra um listener persistency this.addPersistencyListener((PersistencyListener)listener); } public void run () { System.out.println(&quot;Ola pessoal!&quot;); } }; //Fim da classe (Aglet) MyListenerTest Demonstração: Desenvolvendo um agente móvel com Aglets Importar pacotes da API Herdar a classe Aglet
    31. 31. Exemplo 3 – Tratando Proxys Demonstração: Desenvolvendo um agente móvel com Aglets <ul><li>import com.ibm.aglet.*; </li></ul><ul><li>public class ProxyInfoChild extends Aglet { </li></ul><ul><ul><li>public void run () { </li></ul></ul><ul><ul><li>print(&quot;Rodando...&quot;); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>private void print(String s) { </li></ul></ul><ul><ul><li>System. out .println(ProxyInfoExample. NAME + &quot; (child): &quot; + s); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><li>}; //Fim da classe (Aglet) ProxyInfoChild </li></ul>Importar pacotes da API Herdar a classe Aglet
    32. 32. import com.ibm.aglet.*; import java.util.Enumeration; import java.util.Date; public class ProxyInfoExample extends Aglet { public void run () { print(&quot;STARTING --------------------&quot;); try { print(“Criando o child...&quot;); AgletProxy proxy = getAgletContext().createAglet(getCodeBase(), &quot;examples.ProxyInfoChild&quot;, null); print(“Finalizando a criacao do child.&quot;); pause(); print(“Usando o proxy diretamente: &quot;); print(&quot;Identificador: '&quot; + proxy. getAgletID () + &quot;'&quot;); print(&quot;Code Base: '&quot; + &quot;(Depreciated, using aglet.getCodeBase()) &quot; + getCodeBase () + &quot;'&quot;); print(“Nome da Classe: '&quot; + proxy. getAgletClassName () + &quot;'&quot;); pause(); print(&quot;... E agora, as informacoes do objeto: &quot;); AgletInfo info = proxy.getAgletInfo(); print(&quot;Identificador: '&quot; + info. getAgletID () + &quot;'&quot;); print(&quot;Code Base: '&quot; + info. getCodeBase () + &quot;'&quot;); print(“Nome da Classe: '&quot; + info. getAgletClassName () + &quot;'&quot;); print(&quot;Origem: '&quot; + info. getOrigin () + &quot;'&quot;); print(“Endereco: '&quot; + info. getAddress () + &quot;'&quot;); print(“Hora de Criacao: '&quot; + new Date(info. getCreationTime ()) + &quot;'&quot;); } //Continua no proximo slide.. Importar pacotes da API Herdar a classe Aglet Demonstração: Desenvolvendo um agente móvel com Aglets
    33. 33. Exemplo 3 – Tratando Proxys <ul><ul><li>catch (Exception e) { </li></ul></ul><ul><ul><li>print(“Falha ao criar o child.&quot;); </li></ul></ul><ul><ul><li>print(e.getMessage()); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>}; //Fim do metodo run() </li></ul></ul><ul><ul><li>static public String NAME = &quot;ProxyInfoExample&quot;; </li></ul></ul><ul><ul><li>private void print(String s) { </li></ul></ul><ul><ul><li>System.out.println(NAME + &quot; (parent): &quot; + s); </li></ul></ul><ul><ul><li>} </li></ul></ul><ul><ul><li>private static long SLEEP = 3000; </li></ul></ul><ul><ul><li>private void pause() { </li></ul></ul><ul><ul><ul><li>try { </li></ul></ul></ul><ul><ul><ul><li>Thread.sleep(SLEEP); </li></ul></ul></ul><ul><ul><ul><li>} catch (InterruptedException ie) { } </li></ul></ul></ul><ul><li>} //Fim do metodo pause </li></ul><ul><li>}//Fim da classe ProxyInfoExample </li></ul>
    34. 34. Considerações finais <ul><li>Dificuldades: escassez de conteúdo atualizado e carência na disponibilidade de aplicações. </li></ul><ul><li>Agentes Móveis possui uma rápida curva de aprendizado para o desenvolvedor Java. </li></ul><ul><li>Provê soluções pontuais, para problemas específicos. </li></ul><ul><li>Sobreposição por tecnologias ‘da moda’. </li></ul>Conclusões do Grupo Desafios na área <ul><ul><li>Capacidade de controle de agentes; </li></ul></ul><ul><ul><li>Segurança; </li></ul></ul><ul><ul><li>Tolerância a falhas; </li></ul></ul><ul><ul><li>Padr ões de Projeto; </li></ul></ul><ul><ul><li>Novas aplicabilidades. </li></ul></ul>
    35. 35. Referências <ul><li>AGLETS. The IBM Aglets Software Development Kit Version 2.02. Disponível em: <http://www.trl.ibm.com/aglets/>. Acesso em: 04 set. 2007. </li></ul><ul><li>BELLONI, Edgardo A. A Multi-paradigm Approach for Mobile Agents Development. Disponível em : <http://journal.info.unlp.edu.ar/ </li></ul><ul><li>Journal/journal4/papers/pap1.pdf>. Acesso em: 06 set. 2007. </li></ul><ul><li>CHESS, David; HARRISON, Colin; KERSHENBAUM, Aaron. Mobile Agents: are they a good idea? IBM Research Report, 1995. Disponível em: <http://citeseer.ist.psu.edu/chess95mobile.html>. Acesso em: 15 ago. 2007. </li></ul><ul><li>COULOURIS, George; DOLLIMORE, Jean; KINDBERG, Tim. Sistemas distribuídos: conceitos e projeto . 4. ed. Bookman, 2007. </li></ul><ul><li>CUNHA, Leonardo Godinho. Segurança em Códigos Móveis. Julho, 2005. Disponível em : <http://www-di.inf.puc-rio.br/~endler/semGSD/monografias/leonardo-godinho.pdf>. Acesso em: 02 set. 2007. </li></ul><ul><li>FERRARI, Luca. The Aglets 2.0.2 User’s Manual. Outubro, 2004. Disponível em: <http: //aglets.sourceforge.net/>. Acesso em: 05 set. 2007. </li></ul><ul><li>FUGGETTA, Alfonso; PICCO, Gian Pietro; VIGNA, Giovanni Vigna. Understanding Code Mobility. IEEE Transactions on Software Engineering, Volume 24, No. 5, p. 342-361, Maio 1998. </li></ul><ul><li>JUNG, Galeno. Manual de Utilização do Aglets. Universidade Federal de Santa Catarina, Inteligência Artificial Aplicada à Controle e Automação. Apostila de aula, [s.d.] </li></ul><ul><li>LIMA, Emerson Ferreira de Araújo. Formalização e Análise de Padrões de Projeto para Agentes Móveis. Dissertação de Mestrado. Universidade Federal de Campina Grande, Coordenação de Pós-Graduação em Informática, Fevereiro de 2004. Disponível em: <http://copin.ufcg.edu.br/twiki-public/pub/COPIN/Dissertacoes </li></ul><ul><li>Mestrado/DissertacaoEmersonFerreiraALima.pdf>. Acesso em: 06 set. 2007. </li></ul><ul><li>MAHMOUD, Qusay. Mobile Agents and Java: java is the ideal language for writing mobile agents . Disponível em: <http://www2.sys-con.com/itsg/virtualcd/Java/archives/0211/mahmoud/index.html>. Acesso em: 06 set. 2007. </li></ul>
    36. 36. MALUTA, Líliam C. Gaiotto. Aplicação em Computação Móvel para Monitoramento de Pacientes em UTI. Disponível em: <http://www.wirelessbrasil.org/wirelessbr/colaboradores/liliam_maluta/monitor_uti_01. html>. Acesso em: 05 set. 2007. MENDES, Manuel de Jesus; SILVA, Flávio M. de Assis. Mobile Agents in Autonomous Decentralized Systems. IEEE Autonomous Decentralized Systems, 1999. Integration of Heterogeneous Systems. Proceedings. MODAK, Vishal D.; LANGAN, David D.; HAIN, Thomas F. A Pattern-based Development Tool for Mobile Agents. ACM SIGCSE Bulletin, Volume 37, p. 72-75, Fev. 2005. OBJECT Management Group. Agent Technology Green Paper. Agent Platform Special Interest Group, 2000. Disponível em: <http://www.objs.com/agent/agents_Green_Paper_v100.doc>. Acesso em: 06 set. 2007. OYAMADA, Márcio Seiji; ITO, Sérgio Akira. Aglets: agentes móveis em java. Disponível em: <http://www.inf.ufrgs.br/ procpar/disc/cmp134/trabs/T2/981/Aglets/aglets.html>. Acesso em: 05 set. 2007. PHAM, Vu Anh; KARMOUCH, Ahmed. Mobile Software Agents: an overview. IEEE, 1998. Disponível em: <http://www.comsoc.org/ci/private/1998/jul/Karmouch.html>. Acesso em: 05 set. 2007. UTO, Nelson. Segurança de Sistemas de Agentes Móveis. Dissertação de Mestrado. Universidade Estadual de Campinas, Instituto de Computação, Abril de 2003. Disponível em: <http://www.las.ic.unicamp.br/paulo/teses/trabalhos-relacionados/NelsonUto.pdf>. Acesso: 06 set. 2007. Wayne A. Jansen. Countermeasures for Mobile Agent Security. Special Issue on Advanced Security Techniques for Network Protection, Elsevier Science BV, novembro de 2000. In: UTO, Nelson. Segurança de Sistemas de Agentes Móveis. Dissertação de Mestrado. Universidade Estadual de Campinas, Instituto de Computação, Abril de 2003. Disponível em: <http://www.las.ic.unicamp.br/paulo/teses/trabalhos- relacionados/NelsonUto.pdf>. Acesso em: 06 set. 2007. WHITE, Jim. Mobile Agents White Paper. General Magic, 1996. Disponível em: <http://citeseer.ist.psu.edu/white96mobile.html>. Acesso em: 15 ago. 2007. WONG, David; PACIOREK, Noemi; MOORE, Dana. Java-based Mobile Agents. Communications Of The Acm, v. 42, n. 3, p. 92-102, mar. 1999. Referências
    37. 37. Figura 5. Representação Places (WHITE, 1996) Figura 6. Representação Agents (WHITE, 1996) Figura 7. Representação Travel (WHITE, 1996)
    1. A particular slide catching your eye?

      Clipping is a handy way to collect important slides you want to go back to later.

    ×