3.3 Plataformas de Agentes Móveis em Software


Plataformas de agentes móveis em software suportam a criação de processos computacionais autônomos e assíncronos, capazes de execução e migração continuada entre computadores em rede. O aspecto que mais diferencia entre a migração de agentes e a transferência de código móvel (também chamado de código sob demanda) é que, quando migrando entre hosts, os agentes transferem não apenas o código, mas também o estado da sua execução. Sendo assim, no contexto de agentes móveis, tende a desaparecer a diferença entre clientes e servidores, e todas as máquinas que suportam a execução de agentes são chamados de hosts. O modelo computacional de agentes móveis pode ser considerado um caso particular de tecnologia de código móvel. Carzaniga et alli (1997) apresentam uma comparação entre os paradigmas cliente-servidor, código móvel e de agentes móveis.

As plataformas de agentes móveis em software mais representativas da atualidade são baseadas na especificação da Mobile Agent Facility - MAF/OMG (GMD Fokus et alli, 96), suportada pelo consórcio Object Management Group (1996). As tecnologias de agentes móveis em software tem uma ampla variação de características e existem pelo menos dois outros grupos que desenvolvem especificações divergentes de plataformas de agentes:Agent Society (1997) e Foundation for Intelligent Physical Agentes (1997). Dada a rapidez e fluidez com que a área se desenvolve é difícil se fazer uma descrição atualizada de quantas plataformas diferentes existem ou estão sendo criadas.

Uma das pioneiras no desenvolvimento de plataformas de agentes foi a empresa General Magic (1999), que concebeu a já descontinuada plataforma Telescript (General Magic, 1996). Atualmente, uma das mais difundidas plataformas de referência para construção de agentes móveis em software, é a chamada Aglets Workbench (IBM TRL, 1997), que serviu como base para especificação da MAF/OMG.

Aglets Workbench


Aglets consistem em uma biblioteca arquitetural de classes (framework) e programas de suporte implementados em Java. O Aglets Workbench pode ser livremente utilizado sem fins comerciais. O framework contém um conjunto de classes usadas para descrever agentes, mensagens, itinerários, identificadores de agentes, contextos, etc.

O Aglets Workbench utiliza-se da capacidade multiplataforma de Java para criar uma arquitetura simples, que suporta a migração e execução de código entre computadores hosts interligados através da Internet. Os principais elementos da plataforma Aglets Workbench são:

Aglets (Agentes)
Programas assíncronos e autônomos, que são auto-contidos, sabem o que fazer (que computação devem realizar) e para onde ir (qual o itinerário a seguir) em qualquer momento durante sua existência. O agente executa seu código assincronamente, de modo que controla o seu próprio thread de execução, independentemente do processo e do computador que o criou.
Proxies e Contexto de Aglets
Para permitir a execução segura de agentes quaisquer em hosts quaisquer é necessário garantir a integridade, tanto dos agentes, como dos hosts. Agentes podem estar hospedados em um host hostil, defeituoso, ou que hospeda outros agentes maliciosos. Por outro lado, um host que hospeda um agente malicioso tem que se proteger de ações não permitidas que um agente queira executar.

Estes problemas inerentes à segurança de sistemas multi-agentes são solucionados através da:

Transferência de Aglets entre hosts
O código e o estado de execução de agentes é transferido entre hosts através de um protocolo seguro chamado Agent Transfer Protocol - ATP (GMD Focus et alli, 1996);
Execução de Aglets
Agentes são objetos computacionais cuja execução é suportada dentro de uma máquina virtual Java. Estes objetos (agentes, Aglets) executam as tarefas para as quais foram incumbidos através do envio de mensagens para os outros agentes e para o contexto de execução onde estão hospedados.
A implementação de Aglets segue o princípio de desenvolvimento de frameworks (Orfali et alli, 1996), da mesma forma que se desenvolvem Applets e Servlets em Java. Frameworks são esqueletos de uma arquitetura de sistema, suportados por uma biblioteca (API) orientada a objetos. Em conformidade com o princípio de desenvolvimento de frameworks, o programador que desenvolve Aglets implementa uma série de métodos com nomes pré-definidos, os quais são invocados sobre o agente durante a ocorrência de eventos característicos do ciclo de vida deste agente. Os principais métodos que constituem o framework de programação de um Aglet são (Lange e Oshima, 1997): A Figura 10 apresenta pictorialmente o relacionamento entre os métodos descritos acima e o ciclo de vida de um Aglet hipotético. Na figura são mostrados dois hosts (A e B), onde cada host está executando um contexto de Aglet (A e B, respectivamente). Imediatamente após a criação do agente um método é invocado sobre ele, que depende do modo como o agente foi concebido, se foi através de cópia de um agente pré-existente - onClone()- ou não - onCreate(). Imediatamente antes do agente ser despachado para outro contexto (possivelmente localizado em outro host) o método onDispacthing()é invocado. O agente (código + estado de execução) é transmitido entre os hosts A e B através do protocolo ATP. Ao ser carregado no contexto B, o método onArrival()é invocado sobre o agente. Caso o contexto B decida suspender temporariamente a execução do aglet ele invoca o método onDeactivating()sobre o aglet, antes de mover o estado do aglet para um meio permanente de armazenamento (disco, por exemplo). Na situação inversa, o método onActivation()é invocado sobre o aglet após seu estado ser restaurado para a memória. As atividades específicas que o aglet vai executar são programadas no método run(), invocado sobre o aglet em um threadde execução próprio. O aglet é notificado assincronamente da chegada de uma mensagem oriunda de outros aglets através da invocação do método handleMessage(). Imediatamente antes de ser destruído, o aglet recebe uma invocação do método onDisposing().


Figura 10 - Principais métodos invocados durante o ciclo de vida de um Aglet.

Plataformas de Agentes Móveis e o Ciberespaço

O grande potencial de interação capaz de ser obtido através da miríade de modelos e tecnologias de agentes móveis em software só pode ser plenamente realizado através do uso intensivo da capacidade de migração e interação social que os agentes teoricamente apresentam. Alguns fatores contribuem para que isto seja difícil de ocorrer atualmente: Em função do exposto acima é bastante provável que os modelos e tecnologias de agentes móveis ainda permaneçam por longo tempo restritos a usos localizados.