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  
   (06) 

Autora: Líliam Carla Gaiotto Maluta 

Capítulo 3  (Cont)

3.4 Sistemas de Agentes Móveis

Um sistema de agentes móveis é um framework computacional que implementa o paradigma de agentes móveis (FILHO, 2000). Este ambiente provê suporte a criação, ativação, desativação e gerenciamento de agentes, incluindo mecanismos para migração, comunicação, persistência e recuperação de falhas.

Este tipo de sistema deve incorporar certas características ao nível de sistema, para que possa assistir ao desenvolvimento de agentes de sofware e sistemas multi-agentes[5] (SILVA, 2001) como as seguintes:

3.4.1 Classificação de Sistemas

            Sistemas de agentes móveis podem ser caracterizados de acordo com a linguagem de programação que suportam. Segundo SCHOORL (1999) a maioria das implementações tende a ser em Java, embora outras linguagens também sejam usadas, devido aos atrativos da linguagem como suporte a multi-plataformas, serialização, carregamento dinâmico de objetos, e adoção da máquina virtual Java (JVM).

 3.4.1.1 Sistemas de múltiplas linguagens

          Alguns sistemas não definem uma linguagem de programação específica, pretendendo prover suporte a várias, permitindo ao programador selecionar a mais apropriada à sua aplicação. Entre tantos temos os abaixo relacionados.

 D’Agent. Anteriormente conhecido como Agent Tcl, suporta agentes escritos em Tcl, Java e Scheme e agentes estacionários em C e C++. D’Agent implementa um servidor multi-thread, com cada agente executando num processo separado, o que simplifica a implementação, mas gera o overhead da comunicação interprocessos. Este servidor inicializa um conjunto de processos interpretadores quando é dado o boot e encaminha os agentes ao primeiro interpretador livre. Quando o agente termina, o interpretador não morre, ficando à disposição de agentes eventuais.

D’Agent apenas protege as máquinas de ataques de agentes, mas não o contrário. Agentes e mensagens contem uma assinatura e são criptografados entre máquinas. Para cada recurso do sistema existe um controlador. Trabalhos recentes realizados neste sistema recaem sobre escalabilidade e suporte a computação móvel.

 Ara.      Suporta agentes escritos em Tcl, Java e C/C++. Agentes C/C++ são compilados em um bytecode interpretado chamado MACE. Ara provê uma instrução go que captura o estado do agente e o transfere para a máquina destino, como também um checkpoint local onde o agente detecta seu estado interno.

O agente servidor e os interpretadores Tcl, Java e MACE rodam dentro de um processo UNIX. Agentes iniciam a execução sempre num novo thread e quando desejam comunicar-se, transferem a estrutura da mensagem ao outro agente, não utilizando comunicação interprocessos.

Os agentes criam ambientes virtuais com regras de admissão em cada máquina, as quais são responsáveis por rejeitar ou não agentes entrantes. Quando existe aceitação, de acordo com as credenciais podem ser permitidos acessos a arquivos e memória, por exemplo.

  Tacoma.    Suporta agentes em C,C++, ML, Perl, Python e outras linguagens. Não provê captura automática de estado, empacotando seu código e informações de estado e os envia à outra máquina. Isto permite a rápida integração de novas linguagens, uma vez que os interpretadores e máquinas virtuais existentes podem ser reutilizados sem modificação.

3.4.1.2 Sistemas baseados em Java

É notável o uso da linguagem Java em sistemas de agentes móveis mais recentes. O advento desta linguagem vem colaborar para o impulso da tecnologia de agentes móveis, pois através da mesma pode-se desenvolver aplicações completas que executem em computadores de plataformas diferentes, desenvolvendo um único código fonte (RADTKE, 2000).

 Aglets.      Segundo KARJOTH (1997), é um ambiente para desenvolvimento de sistemas de agentes móveis desenvolvido pela IBM. Não requer qualquer alteração da máquina virtual Java ou de código nativo, permite o carregamento dinâmico de classes necessárias à execução de um agente e implementa um modelo (callback) orientado a eventos.

Para realizar a interação entre os agentes utiliza-se de mensagens assíncronas ou síncronas, notificação de eventos para agentes do mesmo contexto e chamada a métodos de outros aglets.

 Concórdia.Um sistema que prioriza segurança e confiabilidade. Como vários sistemas, move o código e os dados, mas não o estado do agente. Os agentes têm um itinerário a ser seguido, com várias paradas onde podem escolher os métodos a serem executados. Agentes, eventos e mensagens podem ter que aguardar até uma máquina estar disponível, portanto, para prevenir perdas estes dados são armazenados. Para prevenir falsificações e ataques de agentes, usa-se criptografia e autenticação. Suporta mecanismos de checkpoint para tolerância à falhas.

Voyager.     Apresenta um ambiente integrado com CORBA[6]. A interação é feita através de objetos de referência proxy. Quando um objeto migra, proxies são deixados no caminho a fim de redirecionarem mensagens ao novo destino. Agentes podem mover-se autonomamente. Como no Concórdia, código e dados são movidos, o estado não, e os agentes podem tornar-se persistentes. Não oferece mecanismos de segurança contra agentes não autorizados.

 3.4.1.3 Outros sistemas

Messengers. Usa código móvel, não especificamente agentes, para construir sistemas distribuídos. Neste sistema utiliza-se um sistema operacional mensageiro, responsável por receber e enviar mensagens contendo dados e código.

Telescript. Primeiro sistema comercial de agentes móveis, seu sucessor, porém com plataforma Java é o Odyssey. Em cada site da rede roda um servidor entre os quais os agentes devem escolher em qual entrar. Os servidores devem autenticar os agentes e então definir direitos e permissões de acesso. Agentes que violarem as regras são terminados. Além disso, servidores armazenam dados dos agentes para possíveis restaurações.

3.4.2 Agentes em Java

De acordo com DELGADO (1999), o código Java é simples, seguro, compacto e por ser orientado a objetos permite reuso e formas coerentes de explorar recursos como interfaces, encapsulamento e polimorfismo. JAVA é uma linguagem de programação portável, robusta, de certa forma segura, com suporte à programação distribuída e recursos para desenvolvimento de aplicações multimídia (LEWANDOWSKI, 1998).

 JAVA vem estabelecer um novo paradigma para gerenciamento de aplicações cliente-servidor, por sua rapidez no desenvolvimento de aplicações (e atualizações) e facilidade de distribuição do código cliente (aplicações rodam em qualquer sistema operacional).

 Java é uma linguagem dinâmica e uma candidata natural ao desenvolvimento de aplicações em rede. OSHIMA e LANGE (1998) descrevem as características de Java em perspectiva com a concepção de um ambiente baseado em agentes móveis, como relacionado a seguir.

 Apesar de apresentar aspectos positivos para a implementação de agentes móveis, a linguagem Java apresenta alguns problemas:

3.5 Uso da rede www x uso da rede com Agentes

            A atual WWW, em sua maioria, encontra-se utilizando o paradigma de redes passivas, onde o usuário é soterrado com dados e informações inúteis e desvia-se com facilidade de seu objetivo original. Neste contexto a função da rede se concentra em enviar pacotes de um ponto a outro, executando roteamento, controle de congestionamento e implementando algum tipo de qualidade de serviço (PSOUNIS, 1999)

            Assim, têm sido identificados problemas como a dificuldade de integrar novas tecnologias e padrões numa infra-estrutura de rede compartilhada, má performance devido a operações redundantes em algumas camadas do protocolo e dificuldade de acomodar novos serviços no modelo de arquitetura existente.

             Desta feita, surgiu a idéia de conceder ao usuário, meios de programar a rede e habilitar roteadores e switches a processar dados, cujo conceito se dá o nome de redes ativas. Programas trafegam pela rede dentro de pacotes de rede e são executados em nodos intermediários resultando na modificação de seu estado e comportamento.

             Conceitualmente, estes ‘pacotes ativos’ nos remetem à noção de agentes móveis. O paradigma de agentes móveis propõe tratar a rede como múltiplos ambientes de agentes e os agentes como entidades que se movem executando tarefas de usuários (TENNENHOUSE, 1997). As características são similares, porem, redes ativas visualizam a rede como uma coleção de nodos e pacotes ativos. A idéia básica é que uma rede ativa oferece aplicações de agentes móveis como sua funcionalidade básica.

             Em uma rede com agentes, tarefas de busca são delegadas a agentes, os quais fornecem uma visão personalizada da rede (informações que interessam).      O usuário pode concentrar-se na análise dos dados, pois a informação é previamente filtrada através de critérios de busca.

3.6 Uso de Agentes na Medicina

             Têm sido desenvolvidas aplicações no campo da Medicina utilizando o paradigma de agentes. Talvez a mais importante delas seja o sistema Guardian (1996). Direcionado ao monitoramento de pacientes em unidades de cuidados intensivos cirúrgicos, seu suporte é provido pela colaboração de especialistas, cada um em seu domínio, interagindo e compartilhando dados e conhecimento com enfermeiras responsáveis pelo contínuo monitoramento do paciente.

    Este sistema distribui a monitoração entre três tipos de agentes: perceptivos – responsáveis pela interface entre o sistema e o exterior; reativos (reasoning) – responsáveis por organizar o processo de decisão e um agente de controle, organizados em hierarquias.

     HUANG et al (1995) apresentam um protótipo para uma aplicação específica de gerenciamento distribuído de dados de pacientes com câncer entre hospitais, paramédicos, farmácias e organizações de cuidado doméstico. O uso de agentes é devido a apresentarem distribuição de dados e controle, incerteza de informação e ambiente dinâmico. Usa-se Prolog para representação do conhecimento e implementação de regras de produção para controle dos dados. Agentes comunicam-se por meio de um sistema de e-mail.

     Uma outra implementação, o patient advocate (MIKSCH et al, 1996), apresenta um modelo de assistente inteligente, centrado no paciente. Tem como função a assistência no gerenciamento das condições físicas, na interação com a rede de informações e no acionamento de mecanismos para tratamento de situações críticas (envio de mensagens). São aplicadas tecnologias cooperativas baseadas em conhecimento, para interpretar dados, derivar recomendações e explicações, e gerar interfaces de acordo com a necessidade e preferência de cada paciente. É implementado em Java.

      Em MEA (2001) é descrito um sistema para análise e desenvolvimento de sistemas de telemedicina baseado no paradigma de agentes. É oportunizado suporte a diagnóstico colaborativo em patologia, por meio do intercambio de imagens microscópicas e de dados dos pacientes. Porém, a plataforma FIPA demonstrou ser um obstáculo quando muitas trocas com agentes externos foram efetivadas, enquanto que o fato de usar uma linguagem genérica causou overhead, evidenciando a necessidade de grandes recursos.

      Mais especificamente em agentes móveis, MORTON e BUKHRES (1997) realizam um trabalho envolvendo assistência remota de urgência em ambulâncias, com a adição de um agente estação base (BSA), que age como intermediário aos hosts móveis desconectados. Neste sistema, evidencia-se o problema do transporte de informações, como também o tempo no qual os resultados são gerados e enviados. Numa situação de emergência é impraticável que um computador móvel fora de uso passe ao modo sleep[7], pois é importante reter a conexão à rede para proporcionar respostas rápidas.

       Por fim, o sistema DITIS (2000) visa suportar a criação, gerenciamento e coordenação de equipes médicas virtuais com o intuito de assistir a pacientes com câncer em ambiente doméstico, e se necessário, locomoção dos mesmos para tratamento com pessoal especializado, com retorno posterior. Pretende oferecer serviços personalizados, dedicados e privativos no conforto do lar, melhor qualidade de vida e economia financeira. Consiste na implementação de agentes na parte fixa da rede e WAP na móvel. O acesso aos dados dos pacientes, bem como exames e marcação de consultas podem ser feitos por meio do celular, o que oportuniza a criação de uma espécie de médico de família, semelhante ao praticado no Brasil.


[5] O sistema é designado e implementado como vários agentes interagindo na resolução de problemas.

[6] CORBA (Common Object Request Broker Architecture), um modelo padrão de arquitetura baseado em objetos distribuídos, cujo objetivo é permitir a interação entre componentes heterogêneos de aplicações distribuídas, foi definido pelo OMG (Object Management Group), visando solucionar eventuais incompatibilidades entre plataformas, como também, garantir o reaproveitamento de toda base de dados. CORBA separa a interface das implementações do objeto, o que provê independência de linguagem e plataforma, capacitando especificações abertas suportarem implementações proprietárias (OMG, 1999). 

 [7] O computador móvel mantém a conexão celular com a rede, mas não é capaz de receber ou submeter transações. 

 

Anterior                               Home WirelessBR                              Próxima