Agentes Móveis

Back Home Next

agent.gif (1233 bytes)                   

           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.

Para o modelo de ciclo-de-vida, são precisos serviços para criar, destruir, iniciar, suspender, parar, etc., agentes.
O modelo computational se refere às capacidades computationais de um agente  incluindo manipulação de dados e primitives de controle de thread.
O modelo de segurança descreve os modos nos quais os agentes podem ter acesso aos recursos de rede, como também os modos de ter acesso aos serviços internos dos agentes da rede.
O modelo de comunicação define a comunicação entre agentes e entre agente e outras entidades (por exemplo, a rede).
Todo aspecto referente ao transporte de um agente (com ou sem seus estados) entre duas entidades computational em localizações diferentes são dirigidas pela 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.

 

Vantagens

O 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.

 

Frameworks

  Assim 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.