Desenvolvimento de Aplicações
de Agentes Móveis Usando Aglets
Por Adriano L. I. Oliveira
alio@cin.ufpe.br
Roteiro

Introdução

Por Que Usar Agentes Móveis?

O Modelo Aglet

A API Aglet

Construção de Sistemas de Agentes Móveis

Aplicações

Referências
Conceitos

Agente de software
– Agentes cujo ambiente é o computador ou rede de
computadores

Agente estacionário
– Executa apenas no sistema onde iniciou a execução
– Para interagir com outros agentes usa mecanismos de
comunicação como RPC

Agente móvel
– Pode se transportar, através da rede, de um sistema para
outro
Exemplo do Mundo Real
Por Que Usar Agentes Móveis?

Eles reduzem a carga da rede
App
Host A
Serviço
Abordagem baseada
em RPC
App
Host B
Serviço
Abordagem baseada
em agentes móveis
Por Que Usar Agentes Móveis?

Eles superam o problema da latência da
rede
–
–

Sistemas de tempo-real não toleram atrasos
na resposta a mudanças em seu ambiente
Agentes podem ser despachados de um
controlador central para atuar localmente
Eles encapsulam protocolos
–
Eliminam o problema da atualização de
protocolos
Por Que Usar Agentes Móveis?

Eles executam de forma assíncrona e autônoma
App
App
Envia o agente
X
Serviço
Serviço
Desconecta
App
Reconecta e retorna
Serviço
Por Que Usar Agentes Móveis?

Eles se adaptam dinamicamente
– Novas versões de agentes podem ser enviadas para
substituir versões antigas
– Agentes podem perceber seu ambiente e reagir a mudanças
autonomamente

Eles são naturalmente heterogêneos

Eles são robustos e tolerantes a falhas
– Quando um host está prestes a ser desligado, os agentes
podem se mover para outros hosts
– A possibilidade de operação desconectada e a arquitetura
distribuída e redundante eliminam pontos de falha centrais
Aglets: O Que É?

Ambiente de trabalho para a construção de
sistemas de agentes móveis desenvolvido
pela IBM do Japão

Consiste em um kit de desenvolvimento de
aglets e uma plataforma para sua execução

A API é um pacote de classes para Java
Aglets versus Applets

Aglet estende o modelo de código móvel dos
applets
 Applet:
– Código pode se mover do servidor para o cliente
– Ambiente de execução: browser Web

Agglet:
– Programa Java em execução (código + estado)
que pode se mover de um host para outro
– Pode viajar seqüencialmente entre vários hosts,
podende, inclusive, voltar ao host original
– Ambiente de execução: contexto (ex: Tahiti)
Aglet: Abstrações Básicas

Aglet

Proxy

Context

Message

Future reply

Identifier
Aglet: Modelo do Ciclo de Vida
Contexto A
Clone
Contexto B
Dispatch
Aglet
Aglet
Dispose
Retract
Create
Arquivo
de Classes
Deactivate
Activate
Disco
A Classe Aglet

Classe abstrata usada como base para o
desenvolvimento de aglets customizados

Define métodos para controlar seu próprio
ciclo de vida

Define métodos que são chamados pelo
ambiente do aglet antes da execução de
cada operação do ciclo de vida
– Exemplos: onDispatch(), onCloning(),
onDisposing()
Transferência de um Aglet
Host A
Host B
Campos de dados
Passo 1
+
Código da classe
Hospedando
Fluxo através da rede
Passo 2
Enviando
Recebendo
Passo 3
Hospedando
A Interface AgletProxy

O proxy age como um objeto escudo que
protege o aglet de aglets maliciosos
 Um aglet interage com outro aglet através de
um proxy
 Quando invocado, o objeto AgletProxy
consulta o gerente de segurança para
determinar se o contexto de execução atual
pode executar o método
 Outro papel importante de AgletProxy é
prover transparência de localização para o
aglet
A Interface AgletContext

O contexto é um ambiente de execução
uniforme para os aglets

AgletContext é usada pelos aglets para:
– Obter informações sobre o ambiente
– Enviar mensagens para o ambiente, inclusive
para outros aglets ativos neste

Tahiti:
– Interface gráfica da IBM para o contexto
– O usuário pode realizar as diversas operações do
ciclo de vida de um aglet
A Classe Message

Aglets se comunicam através da troca de
objetos da classe Message.

Criando o objeto message:
– Message myName = new Message("my name", "Jacob");
– Message yourName = new Message("your name?");

Mensagens são enviadas através de
métodos de AgletProxy:
– Object sendMessage(Message msg)
– FutureReply sendFutureMessage(Message msg)
– void sendOnewayMessage(Message msg)
Construção de Sistemas de Agentes
Móveis: Design Patterns

Design Patterns fazem parte do kit de
desenvolvimento Aglets
 Objetivo: identificar e formalizar bons
elementos de projeto que sejam reutilizáveis
para aplicações de agentes móveis
 Os padrões disponíveis podem ser divididos
em três classes:
– Viagem (ex: padrão itinerário)
– Tarefa (ex: padrão mestre-escravo)
– Interação (ex: padrão reunião)
Padrão Mestre-Escravo

O agente mestre pode delegar uma
tarefa a um agente escravo

Aplicações:
– Quando um agente precisa realizar uma
tarefa em paralelo com outras tarefas
– Quando um agente estacionário precisa
realizar uma tarefa em um destino remoto
Padrão Mestre-Escravo: Participantes
Padrão Mestre-Escravo: Colaboração
Padrão Reunião

Provê uma forma dos agentes estabelecerem
interações locais em hosts específicos

Aplica-se nos seguintes casos:
– Quando agentes precisam interagir e o custo de
sua locomoção para um local central é menor que
o custo associado à comunicação remota
– Quando agentes não podem interagir
remotamente
– Quando agentes precisam acessar serviços locais
em determinado host
Padrão Reunião: Participantes
Padrão Reunião: Colaboração
Padrão Itinerário

Encapsula os itinerários dos agentes e suas
navegações entre múltiplos destinos

Deve ser usado quando se deseja:
– Ocultar os detalhes do itinerário do agente para
promover modularidade em ambas as partes
– Prover uma interface uniforme para uma
navegação seqüencial de agentes para múltiplos
hosts
– Definir itinerários que possam ser compartilhados
entre agentes
Padrão Itinerário: Participantes
Padrão Itinerário: Colaboração
Aplicações

Busca de Arquivos

Comércio Eletrônico

Busca Distribuída

Sistema de Detecção de Intrusão
Busca de Arquivos
Aglet Meeting Place Middleware

Framework desenvolvido pela IBM que executa
sobre Aglets.

Trata-se de um sistema multi-agente em que agentes
de venda e de compra interagem uns com os outros.

A arquitetura define o papel dos proprietários do
mercado, dos vendedores e dos consumidores.

Uma importante construção do AMPM é uma base
de dados de tipos de mensagens.

Aplicado em http://www.tabican.ne.jp
Arquitetura do Aglet Marketplace
Busca Distribuída

Duas classe de agentes: Publishers e
Searchers
 Publisher:
– Emite mensagens a respeito de novos
documentos publicados

Searcher:
– Define, no momento da sua criação, os
documentos que lhe interessam
– Registra interesse em receber mensagens de
publisher
– Ao receber mensagem de publisher, verifica se o
documento é interessante e informa ao usuário
Sistema de Detecção de Intrusão
Referências

http://www.aglets.org

http://www.trl.ibm.co.jp/aglets

http://www.aglets.org/resources/articles/index.jsp

http://www.javaworld.com/javaworld/jw-04-1997/jw04-agents.html

http://www.javaworld.com/javaworld/jw-04-1997/jw04-hood.html

http://www.javaworld.com/javaworld/jw-05-1997/jw05-hood.html
Download

Razões para Usar Agentes Móveis