Mobilidade de Código em Sistemas Abertos Distribuídos

 

O contínuo e rápido crescimento das capacidades de comunicação e processamento levou ao surgimento de ambientes computacionais massivamente distribuídos (e.g. Internet). Estes ambientes são freqüentemente chamados "ambientes abertos", sendo caracterizados por: massiva distribuição geográfica, alta heterogeneidade e dinamismo, inexistência de controle global, falhas parciais e falta de segurança. Desenvolver aplicações para estes ambientes é uma tarefa complexa e esforços de pesquisa têm sido direcionados para melhorar o suporte ao desenvolvimento e execução de aplicações distribuídas.

O desenvolvimento de novas tecnologias de código móvel é um resultado destes esforços. Em sistemas distribuídos tradicionais, os componentes de aplicações são essencialmente estáticos. Um componente é instanciado em um certo nó do ambiente e permanece neste nó durante todo seu ciclo de vida. Interações remotas entre componentes se dão através de troca de mensagens pela rede. As tecnologias que suportam mobilidade de código permitem que trechos de código possam ser transmitidos através da rede para serem executados em locais remotos. A migração não é transparente ao desenvolvedor de aplicações distribuídas, mas explicitamente manipulada por ele para atingir objetivos próprios da aplicação. Mobilidade de código fornece flexibilidade para o gerenciamento da configuração de código em um ambiente distribuído e pode oferecer vantagens para a execução de atividades distribuídas. A adequabilidade de Java applets para a modelagem de interações com usuários finais, por exemplo, é observável pelo número de aplicações na Internet que utilizam esta tecnologia.

Grande parte dos esforços para o desenvolvimento de suporte a código móvel se destina ao desenvolvimento de sistemas de agentes móveis e de aplicações baseadas em tais sistemas. Um agente móvel (ou simplesmente, agente) é um elemento de software auto-contido responsável pela execução de uma tarefa, que é capaz de autonomamente migrar em um sistema distribuído. Um agente migra em um ambiente distribuído de um local lógico, denominado neste texto de agência, a outro. Quando um agente migra, sua execução é suspendida na agência original, o agente é transportado (isto é, seu código, estado de dados, estado de execução e informação de controle) para outra agência no sistema distribuído, onde sua execução é retomada.

O conceito de agentes móveis começou a obter forte atenção da comunidade de pesquisa e da indústria com o sistema Telescript, onde objetos ativos capazes de migrar foram introduzidos como um conceito adequado para suportar o desenvolvimento de aplicações sobre redes de comunicação públicas. Em seguida, muitos projetos em institutos de pesquisa e na indústria começaram a aparecer, entre eles: Mole, TACOMA, Aglets, Agent Tcl, Magna, Page e Grasshopper. O conceito de agentes móveis tem sido proposto para suportar diferentes tipos de aplicações, dentre elas: comércio eletrônico; gerenciamento de workflows; gerenciamento de redes; implementação de serviços de telecomunicação; recuperação de informações distribuídas; e redes ativas. Agentes móveis têm sido considerado um conceito que pode ser explorado para fornecer, entre outros, os seguintes benefícios: melhor uso de recursos de comunicação (em termos de custo e desempenho); suporte flexível a operação desconectada; flexibilidade no gerenciamento de instalação, distribuição ("deployment") e manutenção de software; e suporte adequado para interações com usuários humanos.

O desenvolvimento de uma infra-estrutura de suporte a agentes móveis demanda o desenvolvimento de soluções para um conjunto de problemas específicos que surgem devido à mobilidade. As soluções sendo propostas têm variado consideravelmente de sistema para sistema. Propostas de padronização para permitir a interoperabilidade entre sistemas de agentes móveis também já existem.

[Áreas envolvidas] [topo]