Um agente móvel é um software agente que pode mover entre localizações. Esta definição implica que um agente móvel também é caracterizado pelo modelo de agente básico. Além do modelo básico, qualquer software agente define um modelo de ciclo-de-vida, um modelo computational, um modelo de segurança, e um modelo de comunicação. Um agente móvel é caracterizado adicionalmente por um modelo de navegação. Os agentes móveis podem ser implementados usando uma duas tecnologias fundamentais: código móvel [Baldi97] ou objetos remotos [Vinoski97]. Exemplos desta abordagem incluem AgentTCL [Gray95, Kotay94] e Telescript [White94], e sobre código móvel, Aglets [Lange97]. Para fazer uso de agentes móveis, um sistema tem que incorporar uma framework de mobilidade. A framework tem que prover facilidades que suportem tudo dos modelos de agente, inclusive o modelo de navegação.
Obviamente, a framework incorre certos custos que incluem exigências de memória aumentadas e demoras na execução e no acesso a todo dispositivo participante. Porém, a tecnologia subjacente está evoluindo rapidamente. Por exemplo, as footprints de uma Máquinas Virtuais Java (JVM), que são a base para muitas frameworks de agente móveis, são feitos muito pequenos, sendo satisfatórios para sistemas embutidos [Sun98a]. Acredita-se que o uso de chips de Java será importante nos futuros dispositivos em rede. Além disso, os próximos pacotes de software novos estilo Jini [Sun98b] suportam muitas das necessidades de sistemas baseados em agentes. O tamanho de um agente móvel depende do que ele faz. Em "enxames inteligentes" [White98a], os agentes são muito pequenos. Por outro lado, configuração ou diagnóstico de agentes poderiam ser bastante grandes, porque eles precisam codificar algoritmos complexos ou contactar máquinas. Note porém, que os agentes podem estender suas capacidades de "on-the-fly" e "on-site" para carregar o código exigido fora da rede. Eles podem levar só a funcionalidade mínima que podem aumentar dependendo do ambiente local e necessidades. Esta capacidade é facilitada pela mobilidade de código.
VantagensO uso de agentes móveis pode ter vantagens sobre outras implementações de agentes. Isto não implica que outras tecnologias (como objetos remotos) não possam ser usadas, porque virtualmente qualquer tarefa que pode ser executada com agentes móveis também pode ser executada com objetos estacionários. Porém, as soluções tradicionais poderiam ser menos eficientes, de difícil desmembramento, ou desajeitadas. A Tabela 1 contém as áreas que podem se beneficiar pelo uso apropriado de agentes móveis, adicionalmente ao uso de modelos clássicos cliente/servidor.
FrameworksAssim como qualquer outra atividade relacionada a comunicações, a aceitação geral de agentes móveis para atividade de gerenciamento de redes dependerá fortemente de uma padronização. O Open Management Group (OMG) já começou trabalho na área de agentes móveis, e uma proposta de padrão tem sido pautada para discussão [OMG97, Cheng97]. O padrão proposto tenta ser uma plataforma neutra e possui uma parte central do código móvel autoidentificada com uma linguagem, ou ambiente de execução requerido. A proposta identifica a necessidade para regiões de código móveis, com gateways entre eles, isso provê uma camada virtual de aplicação de agente sobre a rede atual. Esta arquitetura é mostrada na Figura 1. Uma região de agente é definida como um conjunto de sistemas de agente que podem ter acesso um ao outro, autoridade similar de processamento e identificação de um padrão de migração. As facilidades de agente móveis incluem o armazenamento e recuperação de agentes, transferência de criação de agente remoto e invocação de método de agente. A proposta de padrão também utiliza fortemente CORBA, com IIOP inicialmente usado como o protocolo de transporte, e indicando que muitos serviços CORBA pré-definidos, como nomeação, podem ser usados para apoiar atividades de agente móvel. Dois objetos MAF (Mobile Agent Framework) e suas interfaces são definidas na especificação; o MAFAgentSystemInterface e o MAFFinderInterface. O MAFFinder provê um serviço nomeando para agentes, um MAFFinder (no máximo) sendo provido por região. O MAFFinder é registrado como um objeto CORBA, a intenção que é um agente, ou MAFClient, pode localizar, e comunica com, outro agente. O MAFAgentSystemInterface provê operações padrões de gerência para agentes, como recebimento, criação, suspensão e término. A especificação provê uma linguagem de definição de interface (IDL) detalhes em agente nomeado, autoridade (ou em termos CORBA, principal), e tipo; junto estes que são usados para gerar um nome global único de agente. Enquanto a especificação do MAF é um ponto de partida útil, está limitado no escopo. Nenhum serviço de notificação é definido, segurança é mencionada brevemente e o MAFFinder, em particular, tem uma interface empobrecida. Por exemplo, a questão, " Liste todos os agentes de tipo X " não pode ser feita. |