WirelessBR

WirelessBr é um site brasileiro, independente, sem vínculos com empresas ou organizações, sem finalidade  comercial,  feito por voluntários, para divulgação de tecnologia em telecomunicações 

Pesquisa e Projeto de uma Aplicação em Computação Móvel para 
Monitoramento de Pacientes em UTI  
   (05) 

Autora: Líliam Carla Gaiotto Maluta 

Capítulo 3

Agentes Móveis

            A computação móvel requer uma estrutura avançada que integre protocolos de suporte, mecanismos e ferramentas adequadas. Ambientes abertos[1] devem superar a heterogeneidade do sistema e garantir um nível de segurança apropriado. Soluções devem visar garantir a interoperabilidade entre sistemas diferentes e componentes legados.

             Muitas propostas sugerem o uso de agentes móveis (SILVA, 1998, SILVA et al, 2001). Por ser capaz de migrar entre as máquinas de uma rede durante sua execução, carregando consigo o seu código e estado (CHESS, 1995, ENDLER, 1998), um agente móvel viabiliza a atualização de ambientes de computação distribuída sem a suspensão dos serviços.

             SILVA (2001) define um agente móvel como um agente de software capaz de transportar-se de uma rede para outra, executar tarefas locais e dependendo de seus objetivos retornar ou não à origem. Um agente móvel tem autonomia de execução e independência quanto à aplicação que o invocou.

             Para FERBER (1995) um agente deve ter um objetivo a realizar e uma representação do mundo, de si próprio e dos outros agentes. Pode criar novos agentes, cooperar com outros, executar em diferentes plataformas, tomar decisões e resolver problemas. Segundo GRAY et al (2000) um agente móvel é um programa executável que pode migrar, no instante em que desejar, entre máquinas de uma rede heterogênea e interagir com agentes estacionários[2] e outros recursos para realizar sua tarefa.

             Embora existam vários sistemas de agentes móveis e grupos de pesquisa como Telexcript, Odyssey, Voyager, Aglet, D’Agent (Agent Tcl) e muitos outros, agentes móveis não são muito utilizados devido a serem mais úteis em computação móvel, a não existirem aplicações que os requeiram e à maioria dos sistemas serem protótipos.

             Realmente, qualquer aplicação pode ser executada com técnicas tradicionais de computação distribuída. Contudo, agentes móveis provêem um framework onde grande quantidade de aplicações distribuídas pode ser implementada de forma fácil, eficiente e robusta, agregando vantagens como: 

             O fato é que existem muitas aplicações que são mais adequadas e se beneficiam do paradigma de agentes móveis. ENDLER (1998) indica algumas aplicações possíveis:

             Segundo JENNINGS (1998), as áreas em que têm ocorrido aplicações utilizando agentes, além das acima citadas, são as de manufaturas, controle de processos, sistemas de telecomunicação, controle de tráfego aéreo, gerenciamento de transporte, gerenciamento empresarial e cuidados médicos.

3.1 Modelo de agentes móveis

            Há uma terminologia usada em sistemas de agentes móveis que engloba conceitos comuns, onde (OMG, 1997): 

 3.2 Quando usar Agentes Móveis

             Mas como agentes móveis vem sendo usados e para que tipo de aplicações eles são uma boa solução? Algumas companhias acreditam que agentes podem ser utilizados para automatizar o gerenciamento e configuração de redes, outras acham-nos mais indicados em aplicações colaborativas e em redes de baixa confiança. Agentes vêm apresentar uma enormidade de implementações e soluções, nas mais diversas áreas.

             Em sistemas distribuídos o uso de agentes pode simplificar a implementação de servidores. A elaboração do ambiente é centrada no agente, que só precisa ser definido uma única vez. Em termos de processamento e consumo de largura de banda, o uso de agentes móveis é justificado quando o custo de algum recurso remoto usando o paradigma cliente/servidor supera o uso de agentes.

    Agentes podem monitorar servidores e tratar quedas e paralisações, realizar trocas transparentes com servidores de backup ou multiplexação em banco de dados distribuídos, trabalhando em paralelo num conjunto de servidores. Finalmente, podem ser removidos se todos os nós da rede pertencem à mesma LAN e esta não requer o uso de agentes.

             Entretanto, um agente móvel nem sempre representa a melhor escolha. Em algumas aplicações o código do agente pode apresentar-se do mesmo tamanho que os resultados intermediários, e o agente consumirá mais largura de banda do que soluções cliente/servidor. Assim, fica claro que agentes devem poder estimar seu uso potencial de largura de banda e decidir migrar ou interagir através da rede como se fossem clientes.

            Devido a serem escritos normalmente em linguagens interpretadas, por razões de portabilidade e segurança, mesmo em redes rápidas podem apresentar má performance. O fato de transferirem o processamento ao servidor em alguns aspectos é uma vantagem, mas isto envolve lidar com escalabilidade. À medida que aumenta a quantidade de clientes, é preciso decidir entre a economia no tempo de transmissão de rede e o possível tempo extra, esperando por um servidor abarrotado.

KINIRY (1997) recai sobre o problema da segurança de rede, como também a representação do conhecimento e afirma que ainda existem muitos outros problemas antes que aplicações se tornem comercialmente viáveis. Java e alguns modelos de segurança têm auxiliado desenvolvedores a resolverem o problema de agentes danificarem sistemas e redes, como também, a resguardar o código e estado do agente de seu ambiente de execução.

Porém, ataques de denial-of-service causados por agentes móveis não têm sido evitados, o que poderia ser realizado por meio do controle da quantidade de recursos usados pelos agentes, em tempo de execução (BELLAVISTA et al, 2001b).

Conclui-se então que em muitos casos agentes não são estritamente necessários e podem introduzir desvantagens. Para CHESS (1995), a maioria das aplicações realizadas por agentes móveis pode ser executada de forma melhor por RPCs. Agentes móveis apresentam desvantagens como a necessidade de ambientes de execução altamente seguros, tendo-se por isso limitação na performance e funções.

Entretanto, SCHOORL (1999) afirma que o uso em conjunto de agentes e RPCs pode ser benéfico. Em sistemas de banco de dados distribuídos, RPC pode ser a melhor escolha para transferência de dados, mas em certas situações, agentes podem apresentar-se mais indicados devido à própria natureza de serem criados e enviados onde são necessários. A escolha entre estas tecnologias deve recair sobre a natureza do problema em questão.

 3.3  Porque usar Agentes Móveis em Computação Móvel

            Em aplicações envolvendo dispositivos móveis, como visto no decorrer deste trabalho, as conexões são intermitentes e apresentam baixa largura de banda. Dispositivos móveis estão freqüentemente desconectados da rede por longos períodos de tempo e mudam de endereço a cada nova conexão. Agentes móveis podem tratar estes problemas. Aplicações podem ser escritas como agentes que migram para hosts móveis, executam suas tarefas e retornam assim que a conexão permite.

Um agente pode migrar de um dispositivo móvel para a Internet em busca de informações de forma eficiente, pois não tem necessidade de ficar enviando requisições e respostas como no modelo cliente/servidor tradicional. Por outro lado, uma aplicação de rede pode enviar um agente ao dispositivo móvel e este interagir com o usuário. Em ambas abordagens o agente não é afetado por perda súbita da conexão, uma vez que não carece de contato contínuo com o dispositivo.

Agentes são relativamente fáceis de desenvolver e testar uma vez que escondem os canais de comunicação, mas não a localização da computação. Eliminam a necessidade de detectar e tratar falhas de rede, exceto durante a migração.

Agentes móveis não requerem pré-instalação de software em cada site, podendo distribuir-se dinamicamente permitindo aplicações on-the-fly[4], todavia requerem a instalação de um sistema de agentes móveis. Enfim, conduzem a aplicações mais escaláveis, visto que serviços podem ser movidos para onde sejam mais apropriados.


[1] Ambientes computacionais massivamente distribuídos, com alta heterogeneidade e dinamismo, inexistência de controle global, mas, apresentando falhas parciais e falta de segurança. A Internet é um exemplo deste tipo de ambiente.

[2] Um agente estacionário executa apenas no sistema onde iniciou sua execução. Se necessitar de informações que não estejam presentes, ou precisar interagir com um agente em outro sistema, geralmente utiliza RPC (chamada a procedimento remoto).

[3] Consultas que permanecem efetivas por um período de tempo, e são aplicadas a cada documento novo.

[4] Em tempo de execução

 

Anterior                               Home WirelessBR                              Próxima