Você está na página 1de 49

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL

INSTITUTO DE INFORMTICA
CURSO DE PS-GRADUAO EM CINCIA DA COMPUTAO

Um Estudo sobre Mobilidade


em Sistemas Distribudos

por
DBORA NICE FERRARI

T.I. 780 CPGCC-UFRGS

Trabalho Individual II

Prof. Dr. Cludio Fernando Resin Geyer


Orientador

Porto Alegre, fevereiro de 1999

UNIVERSIDADE FEDERAL DO RIO GRANDE DO SUL


Reitora: Profa. Wrana Panizzi
Pr-Reitora de Ps-graduao: Profa. Lorena Holzmann da Silva
Diretor do instituto de Informtica: Philipe Oliver Navaux
Coordenador do CPGCC: Carla Freitas
Bibliotecria-Chefe do Instituto de Informtica: Zita Prates de Oliveira

Sumrio

SUMRIO................................................................................................................................................... 3
LISTA DE FIGURAS.................................................................................................................................4
LISTA DE TABELAS ................................................................................................................................ 5
RESUMO .................................................................................................................................................... 6
ABSTRACT ................................................................................................................................................ 6
1
1.1
1.2
1.3
1.4
2
2.1
2.2
2.3
2.3.1
2.3.2
2.3.3
2.4
3
3.1
3.2
3.3
3.4
4
4.1
4.1.1
4.1.2
4.1.3
4.1.4
4.2
4.2.1
4.2.2
4.2.3
4.3
4.4
5
5.1
5.2
6

INTRODUO .................................................................................................................................7
TEMA .............................................................................................................................................. 7
MOTIVAO .................................................................................................................................... 7
OBJETIVOS ...................................................................................................................................... 9
ESTRUTURA DO TEXTO ................................................................................................................... 9
MOBILIDADE ................................................................................................................................ 10
CONCEITOS ................................................................................................................................... 10
MECANISMOS ................................................................................................................................ 11
PARADIGMAS PARA MOBILIDADE................................................................................................... 14
Avaliao Remota......................................................................................................................... 15
Cdigo em Demanda .................................................................................................................... 15
Agentes Mveis............................................................................................................................. 16
CONCLUSES ................................................................................................................................ 16
MOBILIDADE EM OBJETOS E AGENTES.............................................................................. 17
PARADIGMA ORIENTADO OBJETOS ............................................................................................ 17
PARADIGMA ORIENTADO A AGENTES ............................................................................................ 18
AGENTES MVEIS ......................................................................................................................... 20
CONCLUSES ................................................................................................................................ 23
TECNOLOGIAS PARA SUPORTE MOBILIDADE .............................................................. 24
FERRAMENTAS PARA SUPORTE MOBILIDADE .............................................................................. 24
Java .............................................................................................................................................. 24
Obliq............................................................................................................................................. 25
Oz Distribudo .............................................................................................................................. 26
CORBA ......................................................................................................................................... 27
AMBIENTES QUE PERMITEM EXPLORAR MOBILIDADE .................................................................... 30
Voyager ........................................................................................................................................ 30
Aglets ............................................................................................................................................ 33
Concordia..................................................................................................................................... 35
APLICAES .................................................................................................................................. 37
CONCLUSES ................................................................................................................................ 38
ANLISE COMPARATIVA DAS TECNOLOGIAS QUE SUPORTAM MOBILIDADE .....40
ANLISE COMPARATIVA DAS FERRAMENTAS ................................................................................. 40
CONCLUSES ................................................................................................................................ 44
CONCLUSO .................................................................................................................................45

BIBLIOGRAFIA ...................................................................................................................................... 47

Lista de Figuras
FIGURA 2.1 - Mecanismos de Mobilidade

13

FIGURA 4.1 - Arquitetura de Gerenciamento de Objetos (OMA)

29

FIGURA 4.2 - Objeto Voyager

32

FIGURA 4.3 - Criao de um programa Voyager

32

FIGURA 4.5 - Arquitetura do Concordia

35

Lista de Tabelas

TABELA 1 - Ferramentas para suporte mobilidade

42

TABELA 2 - Ambientes para explorar mobilidade

44

Resumo
O nmero de aplicaes distribudas criadas para serem usadas na Internet aumentou
consideravelmente nos ltimos anos. Uma das mais complexas questes nestas
aplicaes diz respeito mobilidade das entidades envolvidas na computao
distribuda. Neste texto define-se mobilidade como a capacidade das entidades
computacional deslocar-se de um ambiente para outro, atravs do sistema distribudo.
Os estudos sobre mobilidade intensificaram-se com o uso em grande escala da Internet.
Atualmente, a maioria das aplicaes de mobilidade so desenvolvidas utilizando ou
baseando-se nos paradigmas de orientao a objetos ou de agentes. Pode-se observar
que estes dois paradigmas, esto cada vez mais presentes no desenvolvimento de
aplicaes para Internet.
Considerando os aspectos acima mencionados e o interesse crescente da comunidade
cientfica com relao mobilidade, este trabalho procura estudar aspectos referente
mobilidade em sistemas distribudos envolvendo agentes e objetos. Neste texto so
abordados assuntos importantes como os fundamentos que envolvem os estudos em
mobilidade, resultados dos estudos envolvendo mobilidade em objetos e agentes,
tecnologias e aplicaes para suporte mobilidade. Apresenta-se tambm uma anlise
comparativa referente mobilidade dos sistemas distribudos apresentados neste
trabalho.
Palavras-chave: Orientao a Objetos, Agentes Mveis, Mobilidade, Sistemas
Distribudos.

Abstract
In the last few years, the number of Internet-based distributed applications increased
meaningfully. One of the most complex issues involving these applications are related
to entity mobility. This text defines mobility as the capacity of an computational entity
to relocate itself from an environment to another one, through the distributed system.
Research on mobility had been intensified with the Internet large-scale use. Currently,
the majority of mobility applications is developed using or being based on
object oriented or agents paradigms. Note that these two paradigms are even more
present in the development of applications for Internet.
Considering the aspects mentioned above and the scientific community increasing
interest with relation to mobility, in this work are presented mobility aspects in
distributed systems involving agents and objects. These aspects include: the
fundamental concepts of mobility research, results of studies involving mobility in
objects and agents, technologies and applications for mobility support. An comparative
analysis related to mobility in distributed systems is also presented in this work.
Keyword: Objects, Mobile Agents, Mobility, Distributed Systems.

1 Introduo
1.1 Tema
O paradigma orientado a objetos e o paradigma de agentes so interesses constantes da
comunidade cientfica, principalmente em ambientes distribudos. Sendo assim,
surgiram modelos para computao distribuda de objetos e agentes. Uma das mais
complicadas questes envolvendo ambientes distribudos com estas caractersticas diz
respeito mobilidade nesses dois paradigmas. O texto [GLA 98] define mobilidade
como a habilidade de mover-se independentemente de um dispositivo para outro atravs
da rede. Como visto no captulo 2, vrios conceitos sobre mobilidade so encontrados
na literatura. O tema deste trabalho o estudo da mobilidade em sistemas distribudos,
principalmente envolvendo objetos e agentes.

1.2 Motivao
A rpida disseminao de microcomputadores e estaes de trabalho, o aumento nas
suas capacidades de processamento, e o surgimento de redes de comunicao com
grande largura de banda, tm levado ao desenvolvimento cada vez maior de aplicaes
distribudas. Os sistemas distribudos apresentam vrias caractersticas que so objetos
de constante pesquisa na busca de solues, tais como: afastamento, concorrncia,
ausncia de estado global, ocorrncia de falhas parciais, assincronismo,
heterogeneidade, autonomia e mobilidade.
Diversos modelos de arquitetura distribuda tm sido desenvolvidos com o objetivo de
oferecer conceitos que auxiliem o tratamento das caractersticas de distribuio citadas
acima. A caracterstica de heterogeneidade, presente em grande parte destes modelos,
impe a necessidade de especificaes abertas, com interfaces padronizadas e pblicas,
levando ao desenvolvimento de middlewares abertos.
Um middleware uma camada de software, residente acima do sistema operacional e da
camada de comunicao, que oferece abstraes de alto nvel, com objetivo de facilitar a
programao distribuda. As abstraes oferecidas fornecem uma viso uniforme na
utilizao de recursos heterogneos existentes nas camadas de sistema operacional e
redes[OMG 95].
Ambientes de sistemas abertos permitem aos usurios escolherem entre um grupo de
computadores e tecnologias, aqueles que se adequam a suas necessidades. Esses
sistemas oferecem tambm uma crescente interoperabilidade, escalabilidade e
portabilidade. A interoperabilidade permite que sistemas diferentes convivam juntos. J
a portabilidade permite que um software desenvolvido em uma plataforma possa
executar em outra com adaptaes mnimas. A escalabilidade permite que novos
recursos, tanto hardware quanto software, sejam adicionados ao sistema a medida que
h necessidade de novos recursos ou de aumento do poder de processamento.
Juntamente com estes adventos quanto aos sistemas distribudos, surgiram vrias frentes
de pesquisas para que as organizaes pudessem explorar ao mximo os sistemas

distribudos. Dentre estas linhas de pesquisa, este texto destaca mobilidade em


sistemas distribudos como sendo a principal motivao para este trabalho. O estudo
sobre mobilidade abrange tanto aspectos conceituais, quanto sistemas e linguagens.
A orientao a objetos tornou-se um dos principais padres no desenvolvimento de
sistemas. As linguagens orientadas a objeto tentam propor a diminuio da distncia
semntica existente entre a modelagem computacional e o mundo real. Neste sentido,
surgem os objetos e suas diversas caractersticas (herana, polimorfismo,
encapsulamento, etc). Desta forma, a orientao a objetos tenta alcanar um nvel de
abstrao que aproxima a programao de computadores forma usual do homem
interagir com o mundo.
Da mesma forma, nos ltimos anos vem crescendo o interesse dos cientistas da
computao pelo paradigma orientado a agentes. O desenvolvimento orientado a agentes
possui uma forte relao com o desenvolvimento orientado a objetos. O conceito de
agentes introduz conscincia no universo inanimado dos objetos. Esta uma das
contribuies do paradigma orientado a agentes [BAR 98].
Tanto objetos como agentes so amplamente usados pela comunidade cientfica em
ambientes distribudos. Sendo assim, surgiram modelos para computao distribuda de
objetos e agentes. Um dos fatores principais nestes ambientes diz respeito mobilidade
destas entidades.
Os estudos sobre mobilidade intensificaram-se com o uso em grande escala da Internet.
Embora mobilidade no seja uma concepo nova, pois redes locais j usam uma
formas de mobilidade como migrao, a Internet trouxe a possibilidade de explorar
mobilidade atravs de redes heterogneas, conectadas por diferentes links de
comunicao e distantes uma das outras.
Atualmente, a maioria das aplicaes so desenvolvidas utilizando ou baseando-se na
orientao a objetos. Da mesma forma, vrias aplicaes, principalmente na rea de
Informtica na Educao e Inteligncia Artificial, so desenvolvidas usando como
entidade base o agente. O que pode-se observar que estas duas entidades, objetos e
agentes, esto cada vez mais presentes no desenvolvimento de aplicaes para serem
usadas na Internet. Talvez o que tenha auxiliado muito para que isto acontecesse o uso
cada vez maior da linguagem Java [SUN 96], como linguagem de programao destas
aplicaes.
importante observar que a explorao da mobilidade envolve muito a questo da
localizao. Uma premissa bsica que o usurio no necessita saber, se assim o
quiser, onde a sua computao est sendo desenvolvida, pois a aplicao deve abstrair
aspectos de localizao do usurio. Outra questo importante em mobilidade a
segurana. Como a computao distribuda atravs da rede, a integridade desta
computao deve ser preservada. No desenvolvimento de aplicaes que suportem
mobilidade, a tolerncia a falhas e segurana da computao deve sempre estar presente.
Alm destes aspectos, mobilidade traz novos desafios ao desenvolvimento de
aplicaes distribudas, como pensar mobilidade durante o projeto de software. Para
suportar mobilidade de forma transparente para o usurio, a noo de ambiente
computacional deve estar presente. Este ambiente ser elemento principal no suporte
mobilidade das entidades envolvidas.

Considerando os aspectos acima mencionados e o interesse crescente da comunidade


cientfica com relao mobilidade em ambientes distribudos, este trabalho procura
compreender o estado da arte e os problemas relacionados mobilidade em sistemas
distribudos.

1.3 Objetivos
O objetivo geral deste trabalho consiste em estudar os aspectos relacionados
mobilidade de objetos e agentes em ambientes distribudos.
Como objetivos especficos podem ser destacados:
Pesquisar conceitos relacionados mobilidade;
Pesquisar o estado da arte relacionado mobilidade em sistemas distribudos,
em especial envolvendo objetos e agentes;
Estudar tecnologias para o desenvolvimento de aplicaes que suportem
mobilidade;
Identificar caractersticas necessrias para que uma tecnologia de apoio ao
desenvolvimento de aplicaes que suportem mobilidade.

1.4 Estrutura do Texto


Este texto composto de seis captulos. O captulo 2 descreve os fundamentos que
envolvem os estudos em mobilidade. O captulo 3 apresenta o resultado dos estudos
envolvendo mobilidade em sistemas distribudos. Alm disso, ser apresentado,
brevemente, os fundamentos dos paradigmas orientado a agentes e orientado a objetos.
No captulo 4 so apresentadas algumas tecnologias e aplicaes para suporte
mobilidade. Merece destaque neste captulo Voyager [OBJ 97] [OBJ 98]. No captulo 5
feita uma comparao referente mobilidade em sistemas distribudos apresentadas
neste trabalho. Finalmente, o captulo 6 contm as concluses deste trabalho.

10

2 Mobilidade
Este captulo descreve os fundamentos que envolvem os estudos de mobilidade. As
sees contm os conceitos necessrios para compreender o universo que envolve as
aplicaes que utilizam mobilidade. A seo 2.1 analisa conceitos relacionados
mobilidade conforme vrios autores. A seo 2.2 descreve os mecanismos que permitem
explorar mobilidade. A seo 2.3 explora aspectos relacionados aos paradigmas que
exploram mobilidade. Finalmente, a Seo 2.4 faz uma sntese das demais sees
concluindo o captulo.

2.1 Conceitos
Por ser uma rea de pesquisa relativamente nova, as pesquisas que envolvem
mobilidade conceituam este termo de vrias formas. A maioria refere-se mobilidade
atravs do termos cdigo mvel (mobile code) [FUG 98] [CAR 97] [THO 97] [CUG
96] e agentes mveis (mobile agent) [DM 97] [CHE 96] [KNA 96] . Estes termos so
conceituados de diferentes formas por diferentes pesquisadores:
Mobilidade a habilidade de mover-se independentemente de um dispositivo para
outro atravs da rede [GLA 98];
Cdigo mvel pode ser definido como a capacidade de dinamicamente trocar as
ligaes entre os fragmentos de cdigo e a localizao onde o cdigo executado
[CUG 98] [FUG 98] [CAR 97];
Cdigo mvel um software que viaja atravs de redes heterogneas, atravessando
vrios domnios, sendo que automaticamente executado quando chega em seu
destino [THO 97];
Agentes mveis so programas que podem ser disparados de um computador cliente
e transportado para um computador remoto para ser executado [CHE 96];
Agentes mveis so programas que podem se mover atravs de uma rede de
computadores conforme queiram seus usurios [DM 96];
Agentes mveis so programas inteligentes que podem ser transmitidos entre os
diversos computadores de um sistema distribudo [KNA 96].
Observando os itens acima, pode-se notar um elemento presente em todos os conceitos:
o deslocamento das entidades envolvidas (objetos ou agentes). Sendo assim, pode-se
dizer que mobilidade a ca pacidade das entidades envolvidas na computao
deslocarem-se atravs de um sistema distribudo.
Mobilidade no uma concepo nova, embora sua aplicao na Internet seja. Um
exemplo a migrao, pois migrar processos ou objetos uma forma de mobilidade,
que j usada em pequena escala. As pesquisas em mobilidade vem crescendo muito
atualmente devido principalmente a possibilidade de explorar cdigo mvel em grande
escala atravs da Internet, onde as redes interligadas so heterogneas e gerenciadas por
organizaes diferentes.

11

2.2 Mecanismos
Tecnologias que exploram mobilidade devem prover mecanismos que suportem o
deslocamento de suas entidades. Estes mecanismos necessitam de uma estrutura
computacional que suporte mobilidade. Sendo assim, a concepo de um ambiente
computacional (Computational Environment) deve ser introduzida para suportar os
diversos mecanismos necessrios mobilidade. Um ambiente computacional retm a
identidade do nodo onde est localizado dando suporte para que as aplicaes tenham a
capacidade de recolocar dinamicamente seus componentes em diferentes ambientes
computacionais. Um exemplo de ambiente computacional a mquina virtual Java
(Java Virtual Machine).
O texto [FUG 98] trata mobilidade atravs do termo cdigo mvel. O texto tambm
destaca que um ambiente computacional uma espcie de container para as entidades
envolvidas na computao, chamadas componentes. Estes podem ser unidades de
execuo ou recursos. Unidade de execuo representa a entidade bsica da linguagem,
um objeto por exemplo, atravs de um fluxo seqencial da computao. Uma unidade
de execuo composta pelo segmento de cdigo, que contm a descrio esttica do
comportamento da computao, e um estado. Recursos representam entidades que
podem ser compartilhadas por mltiplas unidades de execuo, como uma varivel do
sistema operacional por exemplo.
A princpio, cada unidade de execuo pode mover-se independentemente. Em alguns
sistemas que exploram cdigo mvel, o cdigo e o estado da unidade de execuo
podem estar em diferentes ambientes computacionais. mobilidade determinada pela
caracterstica do sistema. Por exemplo, em Java possvel mover somente o cdigo de
um Applet [SUN 96]. J em Java Aglet [LAN 97], tanto o cdigo quanto o estado so
movidos.
Podem ser identificadas duas formas de mobilidade [FUG 98]: mobilidade forte e
mobilidade fraca.
Mobilidade forte permite que a unidade de execuo possa mover seu cdigo e o estado
da computao para diferentes ambientes computacionais. Neste caso, a execuo
suspensa, transmitida para o ambiente computacional destino, e sua execuo
retomada. Mobilidade fraca permite transferir cdigo de um ambiente computacional
para outro. O cdigo pode conter alguns dados inicializados, mas o estado da unidade de
execuo no movido. A figura 2.1 apresenta uma classificao dos mecanismos de
mobilidade [FUG 98].

12

Mobility
mechanisms

Code and
execution state
management

Strong
mobility

Weake
mobility

Migration

Proactive
Reactive

Remote
Cloning

Proactive

Code
shipping

Stand-alone
code

Reactive
Synchronous
Asynchronous
Imediate
Deferred
Code
fragment

Synchronous
Asynchronous
Imediate
Deferred

Code
fetching
Data space
management

Stand-alone
code

Re-binding

Asynchronous
Imediate

Binding removal
Network reference

Synchronous

Deferred
Code
fragment

Synchronous
Asynchronous

By copy

Imediate

By Move

Deferred

FIGURA 2.1 - Mecanismos de Mobilidade

Mobilidade forte pode ser explorada atravs de dois mecanismos: migrao (migration)
e clone remoto (remote cloning). O mecanismo de migrao suspende a execuo de
uma unidade de execuo, transmite para o ambiente computacional destino e retoma
sua execuo. A migrao pode ser proativa (proactive) ou reativa (reactive). Na
primeira, o tempo e o destino da migrao so determinadas pela unidade de execuo
migrante. Na segunda, a migrao acionada por diferentes unidades de execuo que
tenham alguma espcie de ligao com a unidade de execuo migrante. O mecanismo
de clone remoto cria uma cpia da unidade de execuo no ambiente computacional
remoto. A unidade de execuo no isolada do ambiente computacional origem. Como
na migrao, o clone remoto pode ser proativo ou reativo.
Mecanismos que suportam mobilidade fraca tm a capacidade de transferir cdigo
atravs de ambientes computacionais e ligar-se dinamicamente com uma unidade de
execuo ativa ou criar uma nova unidade de execuo no ambiente remoto para a
execuo. Estes mecanismos podem ser classificados de acordo com a direo da
transferncia do cdigo, a natureza do cdigo movido, a sincronizao envolvida e o
momento em que o cdigo executado no ambiente remoto.
Conforme a direo do cdigo a ser transferido, uma unidade de execuo pode trazer
(fetching) o cdigo para ser dinamicamente ligado e/ou executado, ou pode levar
(shipping) o cdigo para outro ambiente computacional. Nos dois casos, o cdigo a ser
transferido pode ser um cdigo autnomo (stand-alone code) ou fragmentado (code

13

fragment). No primeiro caso, no ambiente computacional destino criada uma unidade


de execuo para executar o cdigo que chega. No segundo caso, a unidade de execuo
deve ligar-se com um contexto que esteja executando o cdigo ou que eventualmente o
tenha executado. Alm disso, tanto no cdigo autnomo como no fragmentado, estes
mecanismos podem ser sncronos (synchronous) ou assncronos (asynchronous),
dependendo se a unidade de execuo que solicita a transferncia fica suspensa ou no
at que o cdigo seja executado. No modo assncrono, a execuo do cdigo transferido
pode ser imediata (imediate), isto , o cdigo executado logo que recebido ou
postergada (deferred), isto , espera alguma condio ser satisfeita para iniciar a
execuo.
Aps a migrao de uma unidade de execuo para um novo ambiente computacional,
sua ligao com os recursos que acessa deve ser reorganizada. Por exemplo, a unidade
de execuo pode necessitar acessar um arquivo, portanto, ela deve estar apta a acessar
este arquivo mesmo que este esteja em outro local. Isto pode envolver novas ligaes ou
sempre migrar alguns recursos necessrios a computao junto com a unidade de
execuo, dependendo da natureza do recurso e da aplicao. Por isto necessrio o
gerenciamento do espao de dados.
Os recursos podem ser transferveis ou no-transferveis atravs da rede. Por exemplo,
um recurso do tipo arquivo pode ser transfervel mas um recurso do tipo impressora no.
Recursos transferveis podem ser marcados como livres ou fixos. O primeiro pode
migrar para outro ambiente computacional, enquanto que o ltimo deve sempre
permanecer associado ao ambiente computacional.
Na reorganizao dos recursos, duas classes de problemas devem ser analisados quando
uma unidade de execuo desloca-se atravs da rede: realocao de recursos e
reconfigurao das ligaes. Para isto deve ter um gerenciamento do espao de dados
(data space management). A estratgia para gerenciar os recursos e os dados envolvidos
na transferncia de cdigo pode variar de sistema para sistema. Os mecanismos mais
usados so:
remoo das ligaes (binding removal) - quando a unidade de execuo migra, as
ligaes so simplesmente descartadas. Pode-se observar que esta estratgia
geralmente usada quando h migrao da entidade envolvida na computao,
portanto, num tipo de mobilidade forte;
referncia na rede (network reference)- quando um recurso no transfervel, a
ligao na unidade de execuo com o recurso modificada para referenciar o
recurso no ambiente computacional fonte, depois que a unidade de execuo tenha
alcanado o ambiente computacional destino. Referncia na rede geralmente usada
quando mobilidade forte explorada, atravs do clone remoto;
re-ligao (re-binding) - no ambiente computacional remoto h um recurso do
mesmo tipo que referenciado na unidade de execuo que chega. Sendo assim, a
ligao com o recurso no ambiente computacional fonte desfeita, e uma nova
ligao apontando para o recurso no ambiente computacional destino criada. Esta
estratgia usada quando mobilidade fraca explorada, na forma de levar ou trazer
cdigo fragmentado;

14

por cpia (by copy)- uma copia do recurso criada, e a ligao modificada para
referenciar a cpia e esta transferida junto com a unidade de execuo para o
ambiente computacional destino. Pode-se observar que o mecanismo por cpia
associado ao clone remoto, portanto explorando uma mobilidade forte;
por movimento (by move)- o recurso transferido junto com a unidade de execuo
para o ambiente computacional destino mas a ligao com o ambiente computacional
fonte no desfeita. Esta estratgia usada em aplicaes que exploram mobilidade
fraca.

2.3 Paradigmas para mobilidade


Abordagens tradicionais para projeto de software no so suficientes quando necessitase projetar aplicaes distribudas em larga escala que exploram cdigo mvel e
reconfigurao dinmica dos componentes do software. Neste caso, a distribuio dos
componentes para diferentes ambientes deve ser pensada durante o projeto de software.
Tambm deve-se considerar os aspectos que diferenciam a interao entre componentes
locais em ambientes remotos. Dentre esses aspectos cita-se uma maior latncia de
comunicao, maior tempo para acesso a memria no local, mais pontos de falha e
necessidade de utilizao de mecanismos para controle de concorrncia e sincronizao.
Portanto, importante identificar paradigmas para projeto de sistemas distribudos
explorando cdigo mvel. Alm disso, deve-se identificar a tecnologia mais adequada
para implementao do paradigma. Os paradigmas apresentados a seguir podem ser
vistos como um guia de referncia para o projeto de aplicaes distribudas que
comportam mobilidade. Antes de introduzir os paradigmas, necessrio apresentar
algumas concepes bsicas que abstraem as entidades envolvidas no sistema como
arquivos, variveis, cdigo executvel ou processos. As abstraes bsicas so as
seguintes [CAR 97]:
Componentes - so os elementos que compem a arquitetura. Podem estar dividos
em :
componente recurso: o componente embutido na arquitetura que representa
dados passivos ou dispositivos fsicos;
componente computacional: representa o fluxo de controle da computao.
caracterizado por um estado e ligaes com outros componentes;
Interaes - so eventos que envolvem dois ou mais componentes. Por exemplo, uma
mensagem trocada entre dois componentes computacionais pode ser considerada
como uma interao entre eles;
Sites - so os ambientes de execuo. Eles suportam a execuo dos componentes
computacionais. Sites tem ligados a si a noo de localizao [FUG 98]. Interaes
entre componentes no mesmo site so consideradas pouco expressivas se
relacionadas com interaes em sites diferentes, pois como os recursos esto locais,
as interaes acontecem de forma mais rpida e sem problemas de latncia da rede,
acesso aos recursos, tempo de acesso, etc.

15

O paradigma descrito em termos de padres de interaes que definem a re-colocao


e a coordenao entre componentes necessrios para realizar um servio.
Conforme [FUG 98], so trs os principais paradigmas que exploram cdigo mvel:
Avaliao Remota, Cdigo em Demanda e Agentes Mveis. Estes paradigmas so
caracterizados pela localizao dos componentes antes e depois da execuo dos
servios, pelo componente computacional que responsvel para execuo do cdigo e
onde a computao acontece.
Paradigmas para cdigo mvel tem explicitamente a noo de localizao. Assim,
possvel modelar, a nvel de projeto, custos para interaes entre componentes. Em
geral, conforme [FUG 98], interaes entre componentes que compartilham a mesma
localizao tem um custo considerado negligencivel quando comparado a interaes
entre sites atravs da rede. A escolha do paradigma a ser explorado deve ser pensado
caso a caso, de acordo com o tipo de aplicao.

2.3.1 Avaliao Remota


De acordo com o paradigma de Avaliao Remota, um componente de um sistema
que suporta mobilidade pode invocar servios providos por outros componentes, que
esto distribudos pelos nodos da rede, atravs do fornecimento dos dados necessrios
para desenvolver o servio bem como o cdigo que descreve como o servio feito.
Avaliao Remota pode ser explicada da seguinte forma: um componente A, no site A ,
sabe (conhecimento) como realizar uma determinada tarefa (servio) mas no tem os
recursos necessrios para que ela seja feita. Estes recursos esto localizados em outro
site (site B). Conseqentemente, A envia o conhecimento de como fazer o servio para o
componente computacional localizado no site remoto. O componente B realiza o servio
utilizando os recursos nele contidos. Aps a execuo, h novamente uma interao
entre os dois componentes para enviar o resultado da computao de volta para A.
Este paradigma semelhante a abordagem cliente-servidor, onde os servios so
executados em um servidor que contm os recursos e o conhecimento necessrio para
executar uma tarefa. A semelhana pode ser verdadeira se todos os recursos, e a forma
de manipulao destes, esto ligados a um servidor da rede. No paradigma de
Avaliao Remota, o cliente sabe como executar uma tarefa, mas o recurso pode
encontrar-se em outro computador da rede. Neste caso, o conhecimento transmitido
para onde est o recurso, sendo que no computador destino pode existir somente o
recurso em si, mas no o conhecimento necessrio para manipul-lo.

2.3.2 Cdigo em Demanda


Na abordagem de Cdigo em Demanda, o cdigo que descreve o comportamento de
um componente em um sistema que suporta mobilidade pode ser buscado em um site
remoto para ser executado localmente. Exemplificando este paradigma, um componente
A tem acesso aos recursos localizados no Site A mas no tem o conhecimento de como
manipular estes recursos. Portanto, A interage com o componente B no Site B,
requisitando o conhecimento para acessar o recurso. Uma segunda interao acontece

16

quando B envia o conhecimento para A e este realiza a computao (abordagem


contraria a Avaliao Remota).

2.3.3 Agentes Mveis


No paradigma Agentes Mveis, onde os agentes so considerados unidades de execuo
[CUG 96], todo o componente computacional movido para o site remoto, inclusive o
seu estado, o cdigo e alguns recursos necessrios para o desenvolvimento da tarefa.
Para exemplificar, um componente A dono do conhecimento, que esta no Site A, para
realizar alguns servios. S que em um determinado momento da execuo, ele
necessita de alguns recursos que esto no Site B. Ento A migra para o Site B
carregando o conhecimento necessrio para executar uma tarefa. Ao mover-se para o
site remoto, A completa o servio neste site. Este paradigma diferentes dos outros
paradigmas, pois nestes o foco a transferncia de cdigo entre componentes enquanto
que no paradigma de agentes mveis o cdigo e o estado da computao so movidos
para o site remoto (migrao).

2.4 Concluses
Este Captulo descreveu os fundamentos que envolvem os estudos em mobilidade,
necessrios para compreender o universo que envolve as aplicaes que utilizam
mobilidade. Pode-se observar que o conceito de mobilidade no consenso entre a
comunidade cientfica que se dedica a estudar o assunto. Vrios autores entendem
mobilidade de forma diferenciada, embora sejam unnime em um aspecto: o
deslocamento da entidade envolvida na computao mvel. Desta forma, pode-se dizer
que mobilidade, como o prprio nome diz, pressupe que a entidade base da
computao possa mover-se de um ambiente computacional para outro.
O texto [FUG 98] apresenta uma estrutura conceitual para compreender cdigo mvel.
O texto tem vrias contribuies. Entre elas, um conjunto de termos e conceitos para
compreender e comparar as abordagens baseadas na noo de cdigo mvel, atravs de
mecanismos e paradigmas que auxiliam o desenvolvimento de aplicaes para cdigo
mvel. Alm disso, apresenta algumas tecnologias que suportam mobilidade e algumas
aplicaes.
A captulo 3 aborda aspectos de mobilidade em sistemas distribudos.

17

3 Mobilidade em Objetos e Agentes


A maioria das tecnologias distribudas que suportam mobilidade so construdas a partir
do paradigma orientado a agente. Como em alguns ambientes um agente considerado
um objeto especial [OBJ 97] [OBJ 98], os conceitos da orientao a objetos so
amplamente utilizados por tecnologias que suportam mobilidade. Sendo assim, este
Captulo apresenta aspectos relacionados mobilidade em sistemas distribudos,
especialmente envolvendo objetos e agentes. Para isto, so abordados aspectos
referentes a orientao a objetos, orientao a agentes e agentes mveis. A seo 3.1
aborda o paradigma orientado a objetos. A seo 3.2 apresenta o paradigma orientado a
agentes. A Seo 3.3 apresenta aspectos referentes a agentes mveis. Finalmente, a
seo 3.4 apresenta as concluses do captulo.

3.1 Paradigma Orientado Objetos


O objetivo desta seo lembrar vrios aspectos relacionados objetos que so
importantes para entender porque mobilidade explorada usando objetos e agentes.
Alm disso, em tecnologias como Voyager [OBJ 97], um agente visto como um objeto
especial. Desta forma, os conceitos da orientao objetos so muito utilizados no que
se refere a agentes. Amandi no texto [AMA 97], diz que observando as definies de
objeto e de agente, v-se que existem caractersticas em comuns entre estas entidades e
entre sistemas multi-agentes e sistemas orientado objetos.
Segundo [AMA 97], objetos so representaes de entidades fsicas ou abstratas do
mundo real, que pertencem ao contexto do sistema a ser projetado. Este possui como
caractersticas fundamentais: os atributos, os mtodos e as mensagens. Conceitos
importantes relacionados com o paradigma orientado a objetos, tais como: mensagem,
encapsulamento, classe, instncia, herana, associao dinmica, polimorfismo e
reusabilidade devem ser observados em tecnologias que exploram mobilidade em
objetos. Estes conceitos podem ser encontrados, de forma descritiva, no livro de James
Rumbaugh ([RUM 96]), um clssico da orientao a objetos.
Outra caracterstica importante a concorrncia. Quanto a concorrncia em objetos,
existem dois tipos naturais:

Concorrncia intra-objetos - a concorrncia surge da existncia de vrios acessos


concorrentes a um mesmo objeto, que pode implicar a execuo concorrente de
mtodos de um mesmo objeto;

Concorrncia inter-objetos - a forma de concorrncia mais natural, que est


associada ao fato de vrios objetos poderem executar simultaneamente.

Havendo concorrncia, deve haver sincronizao. Em objetos, necessrio sincronizar


os vrios objetos, no caso de concorrncia inter-objetos e as vrias threads em um
objetos, no caso de concorrncia intra-objetos.
A comunicao entre objetos pode ser feita de duas formas: sncrona e assncrona. Na
sncrona, aps o envio de uma mensagem a um objeto, a execuo do emissor fica
suspensa enquanto no houver retorno por parte do receptor. Num contexto concorrente,

18

deve-se tomar precaues para evitar que o emissor de uma mensagem fique
indefinidamente bloqueado caso no receba resposta. Este tipo de problema levou a
utilizao de mecanismos de mensagens assncronas. Neste caso, o emissor ao enviar
uma mensagem ao um objeto no fica bloqueado, podendo seguir sua execuo.
A associao entre concorrncia e paralelismo bastante natural, pois a concorrncia
pode ser visto como paralelismo lgico entre tarefas. Embora sejam conceitos
independentes, na prtica a diferena entre os dois torna-se difuso, pois cada vez mais os
sistemas concorrentes apoiam-se em sistemas paralelos. Isto acontece porque grande
parte dos conceitos associados a concorrncia tem correspondncia nos sistemas
paralelos: mecanismos de troca de mensagens, mecanismos de sincronizao, etc.
Sendo assim, a passagem de um modelo de objetos concorrente para um modelo de
objetos paralelo relativamente natural, pois o objeto como unidade de execuo
concorrente assegura a localidade em termos de cdigo e dados (encapsulamento). Alm
disso, a troca de mensagens permite grande liberdade em termos de implementaes em
ambientes paralelos.
Com referncia a objetos distribudos, pode-se dizer que um objeto distribudo uma
espcie de cdigo que pode viver em qualquer lugar de uma rede. Eles so uma
espcie de pacotes com cdigo independente que podem ser acessados por clientes
remotos via invocao de mtodos. O cliente no precisa saber em que lugar, na rede, o
objeto distribudo reside. Os objetos podem ser executados em sistemas operacionais
diferentes e podem trocar mensagens com outros objetos em qualquer parte da rede
[ORF 96].
Existe recentemente uma tendncia de se construir sistemas computacionais abertos
utilizando objetos distribudos. Estes possuem as mesmas caractersticas principais dos
objetos das linguagens de programao: encapsulamento, polimorfismo e herana,
tendo, dessa forma, as mesmas principais vantagens: fcil reusabilidade, manuteno e
depurao, s para citar algumas.

3.2 Paradigma Orientado a Agentes


A comunidade cientfica tm proposto uma variedade de definies, cada qual tentando
explicar o seu uso da palavra agente. Essas definies vo de um nvel elementar at
um nvel mais elaborado. Pesquisadores inventaram tambm novos termos para
referenciar seus agentes, tais como: agentes inteligentes, interfaces inteligentes,
interfaces adaptativas, knowbots, softbots, userbots, taskbots, personal agentes e
network agentes.
Durante o estudo, observou-se que no h uma definio unificada e universal a respeito
do termo "agente". Vrios pesquisadores salientam a dificuldade para criao de uma
definio de agente. Amandi em [AMA 97] afirma que um agente representa uma
entidade computacional com um comportamento autnomo, que pode comunicar-se
com outros agentes com o fim de participar na realizao de uma tarefa. Os agentes
podem auxiliar outros agentes e usurios de diferentes formas: eles ocultam a
complexidade de tarefas difceis, podem treinar ou ensinar, ajudam em diferentes
colaboraes, monitoram eventos e procedimentos, etc. Um sistema multiagentes

19

definido por um conjunto de agentes que colaboram entre si para cumprir com as
responsabilidades do sistema.
Um agente deve apresentar algumas propriedades. Elas definem qual a classificao
do agente, ou seja, um agente inteligente, reativo, capaz de aprender, etc. Propriedades
de agentes correspondem a caractersticas de um sistema que so resultados diretos da
arquitetura do sistema ou so nveis de operao que existem sobre a arquitetura que
tem um efeito no comportamento global do sistema. Por arquitetura se entende a poro
do sistema que fornece e gerncia os recursos primitivos de um agente [FLE 98]. Para
que o sistema seja considerado agente, ele no necessita apresentar todas as
propriedades mas algumas delas so recomendveis. Algumas propriedades so:

Autonomia - a capacidade de perseguir uma agenda independentemente de seu


usurio. Isso requer aspectos de ao peridica, execuo espontnea e iniciativa, em
que o agente precisa ser capaz de tomar aes preemptivas (optativas) e
independentes que eventualmente beneficiaro o usurio [FLE 98]. Em outras
palavras, a autonomia permite ao agente ter algum tipo de controle sobre suas aes
e estado interno.

Mobilidade - conforme [FLE 98], a habilidade para mover-se de uma localizao


para outra, enquanto preservam seu estado interno.

Comunicabilidade - a capacidade de trocar informaes com outras entidades


(agentes, humanos, objetos, seu ambiente) [FLE 98]. Nas interfaces entre os agentes,
necessrio decidir que tipo de declarao os agentes sero capazes de gerar e
compreender. Obviamente, o projeto da interface cuidadosamente relatado para o
projeto da arquitetura de todo o sistema. H ainda um outro problema na
comunicao que a interpretao e significado das declaraes do agente. Um
termo pode ter diferentes significados para diferentes agentes, o que chamado de
conflito. Diferentes termos podem, entretanto, ter significado similar, o que significa
uma correspondncia.

Aprendizagem - agentes so capazes de examinar o ambiente externo (por


exemplo, a Web) e o "sucesso" de aes prvias levam condies similares, e
adaptam suas aes para melhorar a probabilidade de atingir prosperamente suas
metas.

Reatividade - um agente est inserido em um ambiente que pode ser o mundo


fsico, um usurio via uma interface grfica, uma coleo de agentes, a Internet, ou
talvez todos esse combinados. A reatividade a capacidade de um agente responder
de uma maneira oportuna mudanas que ocorre nele e no ambiente.

Iniciativa - Possuir iniciativa a habilidade de exibir comportamento direcionado


ao objetivo, oportunstico e que no reage simplesmente ao seu ambiente.

Sociabilidade - significa interagir com outros agentes (e possivelmente humanos)


atravs de algum tipo de linguagem para comunicao de agente.

Racionalidade - a suposio de que um agente atuar para atingir seus objetivos,


e no atuar de modo que impea que seu objetivo seja alcanado - pelo menos at
onde sua opinio permitir.

20

Percepo - os agentes sentem o mundo e geram conhecimentos acessveis para


processar o que a razo est dizendo para perceber no mundo.

Cooperao - agentes inteligentes precisam ter um "esprito" cooperativo para


existir e ter sucesso em "sistemas orientados a agentes". O que se quer que agentes
inteligentes trabalhem juntos para que possam executar tarefas mutuamente
benficas mais complexas .

Dentro das propriedades, tem-se observado que os agentes as possuem em nveis. Por
exemplo: a autonomia de um agente demonstrada diferentemente de agente para
agente, o que leva a considerar que os agentes apresentam nveis de propriedades. Da
mesma forma que as definies de agente ainda no esto estabelecidas pelo meio
cientfico de forma homognea, as propriedades tambm apresentam esta caracterstica.
As definies das propriedades parecem ser mais convergentes, porm oferecem
margem vrias interpretaes. Dependendo das caracterstica que um agente apresenta
ele pode ser classificado em categorias distintas de agentes.
Para poder dizer que um agente desta ou daquela forma, necessrio que o agente
atenda algumas caractersticas peculiares. Por exemplo, para um agente ser considerado
um agente mvel, ele precisa possuir a propriedade de mobilidade. Algumas
classificaes de agentes, como agentes inteligentes, agentes autnomos, agentes
reativos, etc, podem ser encontradas no texto [FLE 98].

3.3 Agentes Mveis


Agentes mveis so programas que podem ser disparados em um computador e
enviados para executar em um computador remoto. Chegando no computador remoto
ele apresenta suas credenciais e obtm acesso aos servios locais e aos dados [LAN
97]. uma tecnologia emergente que promete tornar sistemas distribudos mais fceis
de projetar, implementar e manter. Agentes mveis no esto restritos aos sistemas em
que iniciaram sua execuo, pois eles tm a habilidade de se transportar de um sistema
para outro atravs de uma rede. Este recurso permite a um agente mvel mover-se para o
sistema que possui um objeto com o qual o agente deseja interagir, obtendo a vantagem
de residir na mesma mquina ou rede do objeto.
Agentes mveis podem oferecer um paradigma uniforme para objetos distribudos,
englobando passagem de mensagens sncronas e assncronas, passagem de objetos e
objetos mveis e estacionrios. Alm de suportar os servios existentes em uma rede,
agentes mveis tambm tornam possveis novos servios e novas oportunidades de
negcios. Caractersticas como cooperao, autonomia e representatividade foram
herdadas da prpria origem de agentes, entretanto, foram acopladas outras a fim de
suprir as necessidades exigidas para o bom funcionamento de modelos que utiliza o
paradigma de agentes mveis, tais como objetos passantes, assincronismo, interao
local, operaes sem conexo e execuo paralela. Estas caractersticas so definidas
como [LAN 97]:

Objetos passantes - quando um agente mvel transferido, todo o objeto movido,


ou seja, o cdigo, os dados, o itinerrio para chegar ao servidor necessrio, o estado
de execuo, etc;

21

Assincronismo - o agente mvel possui sua prpria thread de execuo e esse no


precisa ser executado sincronamente;

Interao local - o agente mvel interage com outros agentes mveis ou objetos
estacionrios locais. Se necessrio, um agente mensageiro enviado para facilitar a
interao com agentes remotos;

Operaes sem conexo - o agente mvel pode executar tarefas mesmo com a
conexo fechada. Quando se faz necessrio transferncia de agentes, aguarda-se at
que a conexo seja restabelecida;

Execuo paralela - mltiplos agentes podem ser disparados para diferentes


servidores a fim de executar tarefas em paralelo.

Apesar de conter semelhanas entre esse novo paradigma e outros mtodos de despacho
remoto, os agentes mveis primam por segurana, uma caracterstica fracamente
explorada em sistemas antigos. Isso deve-se, principalmente, ao fato dos sistemas
anteriores no terem sido projetados para utilizao em redes geograficamente
distribudas, sem opes, que hoje fazem parte do cotidiano, como o uso de cartes de
crdito em algum tipo de comrcio eletrnico. A nvel de segurana os agentes mveis
realizam tarefas relacionadas autenticao de usurio/servidor e autorizao de
servios no servidor. Aplicaes que utilizam os conceitos de agentes seguem o
paradgma atual de funes/procedimentos ou Orientao a Objetos como paradgma de
implementao.
A aplicao cliente um ambiente de interao com o usurio que utiliza os conceitos
de agentes mveis. Alm disso, essa aplicao tem interface com o ambiente agente.
Logo, quando as tarefas so executadas, o ambiente agente de execuo envia o agente
mvel, atravs do subsistema de mensagens. No servidor, ocorre a ao contrria: o
agente recebido atravs do subsistema de mensagem e encaminhado ao ambiente
agente de execuo, que deve ser compatvel com o ambiente do cliente. Da, as tarefas
so realizadas a nvel de aplicao servidora e se necessrio, um agente mensageiro
disparado.
Segundo [LAN 97], agentes mveis apresentam uma srie de vantagens como:

Reduo do trfego da rede - Sistemas distribudos demandam um grande volume


de comunicao (interao) para realizar uma determinada tarefa, principalmente
quando h restries de segurana envolvidos. Agentes mveis permitem reduzir o
trfego da rede, pois permitem despachar tarefas que podem executar suas interaes
localmente. Agentes mveis podem ainda reduzir o trfego de dados da rede, pois
permitem mover o processamento para o local onde os dados esto armazenados ao
invs de transferir os dados para depois process-los. O princpio simples: "Mover
o processamento para os dados ao invs de mover os dados para o local de
processamento".

Oculta a latncia da rede - Sistemas crticos necessitam de respostas em tempo real


para mudanas no ambiente. O controle desses sistemas atravs de uma rede
substancialmente grande ocasiona uma latncia inaceitvel. Agentes mveis
oferece uma soluo, pois podem ser enviados pelo controlador central para
realizarem suas tarefas localmente.

22

Encapsulamento de protocolo - Cada mquina em um sistema distribudo possui


seu prprio cdigo necessrio para implementar a transferncia de dados. Porm,
novos requisitos de segurana e eficincia demandam mudanas no protocolo que
podem ocasionar problemas na manuteno do cdigo existente. Agentes mveis,
por outro lado, podem mover-se para mquinas remotas a fim de estabelecer canais
de comunicao baseados em protocolos proprietrios.

Execuo assncrona e autnoma - Tarefas podem ser embutidas em agentes


mveis que podem ser enviados pela rede. Aps serem enviados, os agentes so
autnomos e independentes da criao de processo, podendo executar
assincronamente. Este recurso til principalmente porque um dispositivo mvel
(ex. laptops) pode se reconectar na rede para coletar o agente mais tarde.

Adaptao dinmica - Agentes mveis possuem a habilidade de perceber


mudanas no ambiente de execuo e reagir autonomamente. Mltiplos agentes
podem interagir entre si e se distribuir pela rede, de modo a manter uma
configurao tima para resolver um problema em particular.

Independncia de plataforma - Redes de computadores, geralmente so


heterogneas, tanto na perspectiva de hardware como a de software. Agentes mveis
so independentes da mquina e tambm da rede, sendo dependentes somente do seu
ambiente de execuo, no dificultando a integrao de sistemas. Mas necessrio
que o ambiente de execuo do agente esteja disponvel para um determinado
hardware ou software.

Robustez e tolerncia a falhas - A habilidade dos agentes mveis de reagirem


dinamicamente a situaes e eventos desfavorveis torna fcil a construo de
sistemas distribudos robustos e tolerantes a falhas. Por exemplo, se uma mquina
est para ser desligada, todos os agentes em execuo na mquina podem ser
advertidos para que possam ser enviados e continuar suas tarefas em outra mquina
da rede.

Para comunicao entre os agentes, merece destaque o Protocolo de Transferncia de


Agentes (ATP - Agent Transfer Protocol). Este um protocolo a nvel de aplicao para
sistemas distribudos baseados em agentes. Enquanto agentes mveis podem ser
programados em diferentes linguagens e para diferentes plataformas, atravs de uma
mquina virtual e de bibliotecas, o ATP oferece a oportunidade de manejar agentes
mveis atravs de uma forma geral e uniforme.
Uma mquina que suporta agentes tem um servio de agente baseado em ATP, que um
componente capaz de enviar e receber agentes de um computador remoto via protocolo
ATP. O servio de agente identificado por um endereo nico, independente da
plataforma especfica de agente suportada pela mquina. Uma mquina pode rodar
mltiplos servios de agentes. Alm disso, uma mensagem ATP carrega informaes
suficientes para identificar a plataforma de agente especfica, na mquina receptora, e
um gerenciador ATP chamado para gerenciar a mensagem.
O protocolo ATP baseado no paradigma de requisio/resposta entre servios ATP.
Um servio ATP A estabelece uma conexo com um servio ATP B, e envia uma
requisio para B esperando uma resposta. ATP/0.1 pode ser obtido no endereo
http://www.trl.ibm.co.jp/aglets/ e faz parte do IBM Aglets Workbench.

23

Alm disso, para que os agentes possam se comunicar com outros agentes distribudos
atravs da rede, desejvel que eles se comuniquem atravs de um protocolo comum.
Desta forma, existe um esforo da comunidade cientfica no sentido de normalizar a
linguagem de comunicao entre os agentes. Uma proposta a linguagem KQML
(Knowledge Query Manipulation Language) [FIN 94] e um outro para a representao e
intercmbio do conhecimento adquirido pelos agentes atravs do formato KIF
(Knowledge Interchange Format). Estes padres so importantes para haver um
consenso no desenvolvimento de aplicaes com suporte a agentes mveis.
A linguagem Java viabilizou a concepo de diversos sistemas experimentais de agentes
mveis. Numerosos sistemas esto atualmente em desenvolvimento ou j
comercializados tais como: Voyager [OBJ 97] [OBJ 98], Aglets [LAN 97] e Concordia
[WONG 97] [CAS 98]. Estes so apresentados no captulo 4. Os sistemas citados acima
possuem muitas caractersticas em comum, como a utilizao da mquina virtual Java
padro, mecanismos de serializao de objetos e arquitetura baseada em servidor.
Contudo, os mecanismos de transporte de agentes e interao variam
consideravelmente. Estas diferenas so apresentadas no captulo 5.

3.4 Concluses
Este captulo apresentou aspectos de mobilidade em sistemas distribudos,
especialmente envolvendo objetos e agentes. Como a maioria das aplicaes
distribudas que suportam mobilidade so construdas a partir do paradigma orientado a
agente e algumas aplicaes consideram o agente um objeto especial, os conceitos da
orientao a objetos so amplamente utilizados por tecnologias que suportam
mobilidade.
Pode-se concluir que no h diferena entre objetos e agentes mveis que justifiquem
um estudo separado destas duas entidades. A filosofia da orientao a objetos
absorvida pela orientao a agentes, portanto, um agente pode ser considerado um
objeto, mas com autonomia, isto , pode-se dizer que um agente uma evoluo do
objeto. Um exemplo do uso deste conceito Voyager [OBJ 97] [OBJ 98]. Esta uma
tecnologia promissora para desenvolvimento de aplicaes com suporte mobilidade
que considera agente um objeto especial, isto , que tem autonomia.
O Captulo 4 apresenta as tecnologias usadas para implementar mobilidade e algumas
aplicaes que utilizam mobilidade.

24

4 Tecnologias para Suporte Mobilidade


Este captulo apresenta algumas ferramentas usadas para desenvolver sistemas que
suportem mobilidade e alguns ambientes que permitem explorar mobilidade. A seo
4.1 apresenta as ferramentas para suporte mobilidade, tais como Java [SUN 96], Obliq
[CAR 95] e Oz Distribudo [ROY 97], que so linguagens de programao que
permitem implementar mobilidade. Alm disso apresenta CORBA [OMG 95],
destacando sua contribuio para explorao da mobilidade. A seo 4.2 apresenta
alguns ambientes que suportam mobilidade, tais como Voyager[OBJ 97] [OBJ 98],
Aglets [OSH 98] e Concordia [WON 97]. A seo 4.3 apresenta alguns exemplos de
aplicaes onde mobilidade pode ser aplicada. Finalmente, a seo 4.4 apresenta as
concluses do captulo.

4.1 Ferramentas para suporte mobilidade


4.1.1 Java
Java [SUN 96] uma linguagem orienta a objetos, baseada em classes, criada pela Sun
Microsystems, com nfase em portabilidade e segurana. O compilador Java transforma
programas fontes em uma linguagem independente de plataforma chamada Java Byte
Code. Este interpretado pela Java Virtual Machine (JVM) - a implementao do
ambiente computacional Java. Atravs da rede, a carga das classes feita atravs do
ClassLoader. Este invocado pela JVM quando, na execuo de um cdigo corrente,
uma classe que ainda no foi carregada referenciada. O ClassLoader busca a classe
correspondente, possivelmente de uma mquina remota, e carrega na JVM. Neste
ponto, o cdigo correspondente executado.
Java foi criada com a concepo de segurana, essencial em um sistema distribudo,
garantindo que regras de acesso sejam sempre respeitadas. Muitos recursos que
requerem controle de acesso dinmico, como um sistema de arquivo ou um acesso a
rede, so controlados por um monitor chamado SecurityManager.
Um dos fatores de sucesso de Java o seu uso na Internet. Browsers suportam JVM e
carregam classes chamadas Applet. Estas podem ser carregadas em pginas HTML
permitindo acesso a pequenas aplicaes. Sendo assim, um Applet um tipo de
aplicao em menor escala para executar em um Web Browser. Toda Applet criada a
partir de uma subclasse da classe Applet. Esta hierarquia determina muito do que a
Applet no pode fazer. Uma Applet executada pela internet considerada, por default,
cdigo no confivel.
Sendo assim, pode-se concluir que Java possui uma estrutura computacional prpria,
que consiste em seu ambiente computacional, isto , a mquina virtual Java. Atravs
desta, Java prov suporte aos mecanismos da linguagem que permitem implementar
mobilidade. A sua entidade computacional o objeto. Alm disso, Java explora
mobilidade fraca, do tipo autnoma, pois permite que os programas sejam carregados
dinmicamente pela rede, atravs do ClassLoader. Com estas caractersticas, Java a

25

linguagem mais usada para implementar mobilidade. Ainda pode-se observar que
aplicaes mveis desenvolvidas atravs do paradigma de Cdigo em Demanda podem
ser desenvolvidas utilizando Java. Um exemplo do uso deste paradigma em Java o
Applet, pois este buscado em um site remoto para ser executado localmente.
Maiores informaes sobre a linguagem Java pode ser encontrado em [SUN 96].

4.1.2 Obliq
Obliq [CAR 95] da DEC System Research Center, uma linguagem com um escopo
lxico, dinamicamente tipada, baseada em prottipo, projetada para computao
distribuda orientada a objeto. A computao transparente da rede, isto , no tem
nenhuma dependncia de localizao quanto a computao, mas a distribuio
gerenciada explicitamente nvel de linguagem.
A linguagem tem trs principais caractersticas:
A migrao de um objetos pode ser programada com a combinao de transmisso
fechada (como se fosse uma caixa preta), apelidos (outro nome para um objeto) e
objeto clone (cpia do objeto). Depois da migrao, operaes no objeto original
so redirecionadas para o site remoto e executadas nele. A migrao pode ser
serializada atravs das primitivas serialized e protected para que o estado do objeto
no possa trocar durante a chamada migrate.
Obliq pertence a uma classe de linguagens orientada a objetos chamada baseada em
prottipo. Nestas linguagens no existem classes e objetos so criados por cpia
(clone) de objetos existentes (os prottipos);
Obliq tipada dinamicamente. Erros com relao aos tipos da linguagem so
descobertos claramente e propagados para o site origem.
So quatro as operaes bsicas em um objeto: seleo/invocao, atualizao, clone e
apelido.
Na seleo/invocao, quando o valor de um objeto selecionado, este valor
transmitido atravs da rede para o site que selecionou. Quando o mtodo de um objeto
remoto invocado, os argumentos so transmitidos atravs da rede para o site remoto, o
resultado realizado no computador remoto, e o valor final retornado para o site que
invocou.
Na atualizao, quando um objeto remoto atualizado, um valor transmitido atravs
da rede para o objeto remoto.
Pode-se notar neste ponto que Obliq suporta o paradigma de Avaliao Remota, pois o
conhecimento vai para onde est o recurso e depois retorna ao site requisitante.
No Clone, uma cpia do objeto criada, mas a estrutura dos valores compartilhada.
Por exemplo, os elementos de um vetor so compartilhados entre o clone e o objeto
original. No apelido, atributos podem ser redirecionados para atributos em outros
objetos. Apelidos so usados para criar procuradores.

26

Objetos podem ser protegidos atravs da palavra protected. Interfaces seguras podem ser
construdas atravs do uso do mecanismo de proteo e procuradores. Para tratar acessos
concorrentes, Obliq suporta objetos serializados. Um objeto serializado se mais de
uma thread pode acessar o objeto. Isto feito usando mecanismos de excluso mutua,
que adquirido quando um dos mtodos invocado e solto quando retorna do mtodo.
O escopo lxico oculta valores chamados externamente e o sistema de execuo
assegura que o escopo seja cumprido. Comunicaes entre servidores independentes so
mediadas atravs de uma varivel global compartilhada contendo o nome do servidor
(endereo IP da mquina por exemplo), permitindo servidores importar e exportar
valores. Para um procedimento ser executado em um servidor distante, o nome do
servidor solicitado para a mquina de execuo (execution engine) receber o
procedimento. Mquina de execuo implementa um tipo de ambiente de execuo,
permitindo execuo remota de procedimentos. Uma thread, que a unidade de
execuo Obliq, pode requisitar a execuo de um procedimento em uma mquina de
execuo remota. O cdigo para o procedimento enviado para a mquina destino e
executada nela em uma nova thread. As referncias do objeto local usadas pelo
procedimento so automaticamente transformados em referncias para rede.
Sendo assim, Obliq suporta mobilidade forte, tanto atravs de migrao quanto atravs
de clone remoto. No primeiro caso o gerenciamento do espao de dados se d atravs da
remoo das ligaes e no segundo atravs de referncias na rede e por cpia. Alm
disso, a mquina de execuo Obliq oferece um ambiente computacional propcio a
explorao da mobilidade e sua entidade base o objeto.
Maiores informaes sobre Obliq pode ser encontrado em [CAR 95].

4.1.3 Oz Distribudo
A linguagem Oz distribuda [ROY 97] uma linguagem projetada para processamento
simblico concorrente. O Oz integra vrios paradigmas de programao, incluindo
orientao a objetos, funcional e restries lgicas, em um nico modelo.
A semntica distribuda estende a semntica da linguagem atravs do controle da
mobilidade. Mobilidade em OZ a habilidade que uma entidade stateful, que pode
mudar seu estado, tem de migrar entre os sites ou de permanecer estacionria entre os
sites, dependendo das intenes do programamador [ROY 97].
A construo do Oz distribudo tem quatro caractersticas essenciais [ROY97]: (1)
uma linguagem concorrente; (2) tem um fluxo de dados sincronizado. Threads so
bloqueadas quando um dado requisitado por ela mas ainda no est disponvel. Este
bloqueio transparente do ponto de vista da thread; (3) tem procedimentos de primeiraclasse com escopo lxico; (4) tem informao de estados (state-aware), distinguindo
dados stateless (no mudam seus estados e so replicados entre os sites ) e stateful.
A linguagem satisfaz a semntica centralizada garantindo a transparncia na rede. Este
requisito requer mecanismo como um espao de computao compartilhado (shared
computation space) e concorrncia (concurrency). O primeiro prov a iluso de uma
grande memria comum (espao de endereamento para as entidades) para todos os
dados. Alm disto, um programa que executa em muitos sites deve se comportar da

27

mesma maneira quando executado em um site. Portanto, outro mecanismo necessrio


a concorrncia, isto , vrias computaes ativas devem coexistir independentemente.
So usados dois mecanismos para identificar a rede: informao de estado (stateawareness) e controle da mobilidade (mobility control). O sistema deve distinguir
entre estas duas formas de dados atravs de uma informao de estado. Para dados
stateful, necessrio um controle maior da localizao. Para isto surge o controle da
mobilidade. Entidades mveis migram para sites remotos invocando estes. Isto
implementado usando um protocolo para mobilidade [ROY 98].
Pode-se observar neste ponto que OZ Distribudo pode suportar mobilidade forte atravs
da migrao do tipo proativa, onde a unidade migrante determina quando migrar. Sua
entidade base o objeto. Seu ambiente computacional a Oz Virtual Machine que,
como em Java, portvel, podendo executar tanto em Unix como em Windows.
A meta do projeto de distribuio no impedir a implementao centralizada, para isto,
o espao de computao pode ser representado em termos de dois grafos: o grafo para
linguagem, onde no existe a noo de site e o grafo de distribuio, que faz
explicitamente a noo de site.
A execuo distribuda feita em dois passos: no primeiro passo o espao
computacional modelado em um grafo chamado grafo da linguagem. O segundo passo
estender o grafo da linguagem para o grafo de distribuio, com a noo de site,
introduzindo um conjunto finito de site e colocando em cada nodo o grafo da linguagem
com o site. Se um nodo referenciado por um nodo em outro site, ele mapeado para
um conjunto de nodos no grafo de distribuio. Este conjunto chamado de estrutura de
acesso do nodo o riginal. Uma estrutra de acesso consiste em um conjunto de nodos
globais, um chamado procurador (proxy) pelo site e outro de gerenciador por toda a
estrutura.
As clulas tem ponteiro para os dados (content-edge), que so conhecidos somente por
um procurador. Os procuradores geralmente no conhecem onde o ponteiro para os
dados est localizado. Se procurador quer fazer uma operao de troca e no tem o
ponteiro para os dados, este deve perguntar ao gerenciador. Isto diminui a latncia da
rede.
OZ tem um modelo simples para tolerncia a falhas. A deteco de falhas deve
realmente informar ao programador se e onde a falha ocorreu. O modelo suporta
somente falha no site, no suportando falha na rede. Cada espcie de falhas torna-se
visvel somente a um procurador, quando este tenta fazer uma operao na clula e
descobre que ocorreu uma falha. O procurador tem ento um nodo falho e algumas
mensagens para este so ignoradas. Excepcionalmente criada uma thread que
inicicializa as operaes na clula.
Maiores informaes sobre o modelo de programao do Oz distribudo podem ser
encontrados em [ROY 98] e [ROY 97].

4.1.4 CORBA
A organizao OMG (Object Management Group) estabeleceu a arquitetura CORBA
(Common Object Request Broker Architecture) [OMG 95] como uma forma de

28

especificar um middleware aberto composto de objetos distribudos. O objetivo primrio


alcanar sistemas baseados em objetos em ambientes distribudos heterogneos com
caractersticas de reusabilidade, portabilidade e interoperabilidade.
Em 1990, a OMG criou o OMA (Object Management Architecture) com o objetivo de
fomentar o crescimento de tecnologias baseadas em objetos e fornecer uma infraestrutura conceitual para todas especificaes OMG. O OMA composto por quatro
elementos principais: ORB (Object Request Broker), Servios de Objetos, Facilidades
Comuns e Objetos de Aplicao. Para este texto, o elemento que merece destaque o
ORB. Este habilita os objetos enviarem e receberem requisies e, da mesma maneira,
receberem respostas a suas requisies, de forma transparente em um sistema
distribudo. O ORB a base para a construo de aplicaes, utilizando objetos
distribudos, que possuam caractersticas de interoperabilidade entre aplicaes em
ambientes heterogneos ou homogneos.
A Figura 4.1 d uma idia geral da estrutura e dos elementos que compe o OMA.

FIGURA 4.1 - Arquitetura de Gerenciamento de Objetos (OMA)


O principal objetivo de se definir uma arquitetura comum para ORB's para se obter a
interoperabilidade entre diferentes implementaes. A grande diversidade dessas
implementaes mostra que faz-las interoperar no ser tarefa simples, bem como no
foi interconectar redes distintas com diferentes protocolos, por isso, este ltimo vem
sendo usado como modelo para se alcanar o objetivo, a interoperabilidade.
Objetos clientes requisitam servios s implementaes de objetos atravs de um ORB.
O ORB responsvel por todos os mecanismos requeridos para encontrar o objeto,
preparar a implementao de objeto para receber a requisio, e executar a requisio. O
cliente v a requisio de forma independente de onde o objeto est localizado, qual
linguagem de programao ele foi implementado, ou qualquer outro aspecto que no
est refletido na interface do objeto.
O primeiro requisito para se obter a interoperabilidade definir um modelo de alto nvel
para que suas diferenas sejam disfaradas. No caso do ORB esse modelo uma IDL
(Interface Definition Language). CORBA utiliza a OMG IDL como uma forma de
descrever interfaces, isto , de especificar um contrato entre os objetos. OMG IDL
uma linguagem puramente declarativa baseada em C++. E por ser definida
independentemente do ORB, permite que clientes e implementaes se comuniquem
transpassando vrios ORB's distintos preservando a semntica dos pedidos de forma
transparente para clientes e implementaes. Isso garante que os componentes em

29

CORBA sejam auto-documentveis, permitindo que diferentes objetos, escritos em


diferentes linguagens, possam interoperar atravs das redes e de sistemas operacionais
[ORF 96].
Para fazer uma requisio, um cliente pode usar a Interface de Invocao Dinmica (DII
- Dynamic Invocation Interface) ou um Stub de IDL. Para algumas poucas e
determinadas funes, um cliente pode interagir diretamente com a interface do ORB.
O fato de permitir tanto a invocao dinmica quanto a esttica, torna CORBA bastante
flexvel. A invocao esttica possui uma srie de vantagens sobre a invocao dinmica
[ORF 96]: mais fcil de programar, faz verificao de tipos mais robusta, executa mais
rpido e auto-documentvel. J a invocao dinmica permite a adio de novos
servios s implementaes de objetos sem alteraes nos clientes. Dessa forma, os
clientes podem descobrir em tempo de execuo quais so os servios oferecidos.
A invocao dinmica possvel atravs dos servios do Repositrio de Interfaces. Um
Repositrio de Interfaces uma base de dados que contm interfaces OMG IDL, e seus
servios basicamente permitem o acesso, armazenagem e atualizao dessas interfaces.
Ao receber uma requisio, o ORB localiza o cdigo da implementao transmite
parmetros e transfere o controle para a implementao do objeto. Quando a requisio
completada, o controle e os valores de sada so retornados ao cliente. De forma
parecida ao que ocorre na requisio de um cliente, o ORB pode invocar a
implementao de objeto atravs de um Esqueleto de IDL Esttico ou Dinmico. A
Interface de Esqueleto de IDL Dinmica (DSI - Dynamic Skeleton Interface) uma
forma de se enviar requisies de um ORB para uma implementao de objetos que no
possui informaes sobre a implementao do objeto em tempo de compilao.
Para executar a requisio, a implementao de objeto pode obter alguns servios do
ORB atravs do Adaptador de Objetos. O Adaptador de Objetos se situa no topo dos
servios de comunicao do Ncleo de ORB. Ele fornece o ambiente para instanciar
objetos, atribuir referncias de objetos, e passar requisies a eles. Com um adaptador
de objetos, possvel a uma implementao de objeto ter acesso a um servio
independentemente se ele est implementado no Ncleo de ORB se o Ncleo de
ORB oferecer o servio, o adaptador simplesmente fornece uma interface para ele, caso
contrrio, o adaptador deve implement-lo no topo do Ncleo de ORB.
Para localizar e ativar implementaes de objetos, um ORB se utiliza de Repositrios de
Implementaes. Esses repositrios servem adicionalmente para armazenar informaes
adicionais associadas com implementaes de ORBs, tais como, informaes de
depurao, controles administrativos, segurana, dentre outras.
A especificao de interfaces de objetos obrigatoriamente em OMG IDL, garante a
portabilidade dos objetos atravs de diferentes linguagens, ferramentas, sistemas
operacionais e redes. Entretanto, a caracterstica de interoperabilidade entre objetos s
foi coberta na verso 2.0 do CORBA, introduzida em dezembro de 1994.
O protocolo entre ORBs genrico (GIOP - Generic Inter-ORB Protocol) especifica uma
sintaxe de transferncia padro e um conjunto de formatos de mensagens para
comunicao entre ORBs. O protocolo entre ORBs para Internet (IIOP - Internet InterORB Protocol) especifica como mensagens GIOP so trocadas usando conexes
TCP/IP. Ele especifica um protocolo de interoperabilidade padro para Internet.

30

O ORB, por si s, no executa todas as tarefas necessrias para os objetos


interoperarem. Ele s fornece os mecanismos bsicos. Outros servios - como servio
de nomes, de controle de concorrncia, de tempo - necessrios so oferecidos por
objetos com interface IDL, que a OMG vem padronizando para os objetos de aplicao
poderem utilizar.
Analisando as caractersticas CORBA, pode-se observar que suporta o paradigma de
Avaliao Remota, pois atravs do ORB, objetos podem enviar requisies e receber
suas respostas. CORBA usado para o desenvolvimento de aplicaes que envolvem
objetos distribudos, isto , no suporta em sua essncia mobilidade. O papel de
CORBA na mobilidade, e tambm neste texto, advm do fato de que esta tecnologia
serviu de inspirao para vrias outras tecnologias que suportam mobilidade. Voyager
[OBJ 97] [OBJ 98], que ser visto a seguir, um exemplo de tecnologia que
implementa mobilidade e que usa uma plataforma ORB, alm de permitir integrao
com CORBA.
Maiores informaes a respeito da tecnologia CORBA pode se encontrada nas
referncias [OMG 95] e [ORF 96].

4.2 Ambientes que permitem explorar mobilidade


4.2.1 Voyager
Conforme [GLA 98], ObjectSpace VoyagerTM Core Technology - Voyager [OBJ 97]
[OBJ 98] - consiste de uma plataforma ORB implementado em Java e com suporte a
agentes. uma plataforma que integra computao distribuda com tecnologia de
agentes, suportando objetos mveis e agentes autnomos. Permite que objetos e agentes
possam enviar mensagens padro Java para um agente mesmo sem saber sua localizao
atual. Alm disso, tambm inclui um conjunto de servios que implementa, de forma
transparente, persistncia, comunicao em grupo e servio bsico de diretrio.
Uma das habilidades de Java carregar classes na mquina virtual em tempo de
execuo. Isto habilita uma infra-estrutura para usar objetos mveis e agentes
autnomos bem como ferramentas para construo de sistemas distribudos. Tem
sintaxe prpria para construir, enviar mensagens e mover objetos e agentes e permite
implementar persistncia distribuda. Desta forma, Voyager prov suporte para
mobilidade de objetos e agentes, utilizando o modelo de objetos Java.
Voyager permite integrao com CORBA desde 1997. Um pacote adicional Java
permite ao Voyager criar uma interface para ser usada em um cliente ou servidor
CORBA. Sem modificao do cdigo, por exemplo, pode-se exportar algumas classes
Java para servidores CORBA, gerando automaticamente IDL para ser usada pela
implementao CORBA.
Redes de computadores so, geralmente, compostas de hardware e sistema operacional
diferentes. Sistemas usando ORBs freqentemente necessitam cdigo binrio em
separado para cada plataforma. Isto aumenta o tempo de desenvolvimento e
complexidade para manuteno do sistema. Como Voyager implementado em Java,

31

portanto portvel, as aplicaes so escritas somente uma vez, podendo executar em


cima de qualquer arquitetura que suporte Java.
Resursos em sistemas distribudos necessitam ser usados sabiamente. Quando uma
mquina est sobrecarregada, parte da carga deve ser levada para uma mquina que no
esteja sobrecarregada. O desenvolvimento somente com ORBs no auxilia aos
programadores resolverem este problema [GLA 98]. Em Voyager, objetos e agentes
mveis podem ser usados para encapsular processamento e migrar atravs da rede,
levando a carga de trabalho com eles. Sendo assim, voyager permite balanceamento
dinmico de carga.
Um objeto Voyager um componente de software que tem um conjunto bem definido
de funes e dados encapsulados.
Quando um programa Voyager inicia, ele automaticamente cria threads que provem
algum servio, como garbage collection e verificao do trfego da rede. Cada
programa Voyager tem um endereo na rede consistindo no nome da mquina e o
nmero da porta de comunicao, que um inteiro nico para a mquina. Nmeros de
portas so alocados aleatoriamente para os programas. Isto suficiente para clientes
comunicarem-se com objetos remotos, criar e lanar agentes atravs da rede. Contudo,
se um programa pode ser endereado por outro programa, pode-se atribuir um nmero
de porta conhecido para o programa em inicializao.
Uma classe controla instncias remotas se sua instncia pode ser criada fora do espao
de endereamento local do programa e se esta instncia pode receber mensagens como
se ela estivesse localmente. Sendo assim, no Voyager, esta classe "esconde" o fato de
estar remota. importante salientar que fora do contexto Voyager, uma classe remota
no esconde o fato de estar remota. Para simplificar, este trabalho denomina classes
que controlam instncias remotas como classes remotas. Voyager permite um objeto
comunicar-se com uma instncia de uma classe remota atravs de referncias virtuais.
Mensagens enviadas para referncias virtuais so automaticamente repassadas para a
instncia da classe remota. Se uma mensagem retorna um valor, o objeto receptor envia
o valor de retorno para a referncia virtual, que retorna este valor para o emissor.
Aps a criao de uma classe remota, pode-se construir instncias remotamente,
mesmo se o cdigo da classe no exista na mquina remota; enviar mensagens para
instncias remotas usando uma sintaxe Java regular; conectar instncias remotas
existentes em outros programas; mover instncias remotas para outros programas,
mesmo se o cdigo da classe no esteja no programa destino e construir instncias
remotas persistentes.
Depois de criar uma classe remota, pode-se criar instncias remotas da classe original
(objetos remotos). As instncias remotas podem residir no programa corrente ou num
programa diferente, e uma referncia virtual para a instncia remota criada no
programa corrente. Para construir uma instncia remota de uma classe, d-se ao
construtor de classes virtuais o endereo do programa destino onde a instncia remota
deve residir. Se o cdigo original da classe para a instncia remota no existir no
programa destino, Voyager carrega automaticamente o cdigo da classe original no
programa destino.
Neste ponto nota-se que Voyager suporta o paradigma de Cdigo em Demanda.

32

Quando um objeto remoto criado, automaticamente atribudo a ele um identificador


global nico, que identifica o objeto em todos os programas da rede. Opcionalmente,
pode-se atribuir um alias para um objeto remoto durante a criao. O identificador ou o
alias podem ser usados para localizar ou conectar o objeto em qualquer ponto da rede.
Um objeto remoto pode ser referenciado por qualquer nmero de referncia virtual.
Para criar uma nova referncia virtual e associa-la com o objeto remoto existente, devese fornecer o endereo do programa onde o objeto remoto existente reside e o seu alias
para o mtodo VObject.forObjectAt( ).
Quanto mobilidade, pode-se mover qualquer objeto serializado de um programa para
outro enviando a mensagem moveTo( ) para o objeto via refrencia remota, fornecendo o
endereo do programa destino como parmetro. Mobilidade a habilidade de mover-se
independentemente de um dispositivo para outro atravs da rede [GLA 98].
Uma mensagem pode ser enviada para um objeto mesmo que o objeto tenha-se movido
de um programa para outro, simplesmente enviando a mensagem para o objeto no
ltimo endereo conhecido. Quando a mensagem no localiza o objeto destino, a
mensagem procura por um retransmissor representando o objeto. Se um retransmissor
localizado, este envia a mensagem para o objeto na nova localizao. O valor retornado
marcado como a nova localizao do objeto remoto, para que a referencia virtual possa
atualizar a localizao do objeto. Aps isto, mensagens so enviadas diretamente para a
nova localizao do objeto, sem necessitar do retransmissor.
Mobilidade til porque os objetos que trocam grande nmero de mensagens podem
ser movidos para junto um do outro, reduzindo assim o trfego na rede. Um programa
pode mover objetos dentro de um dispositivo mvel. Assim o programa pode
permanecer com o dispositivo depois de ele ser desconectado da rede.
Analisando o texto at o momento, observa-se que Voyager tambm pode dar suporte ao
desenvolvimento atravs do paradigma de Avaliao Remota. Sendo assim, os objetos
podem mover-se para onde est o recurso.
Voyager tambm suporta agentes mveis. A filosofia do Voyager que o agente
simplesmente uma espcie especial de objeto que pode mover-se independentemente,
podendo continuar sua execuo ao se mover, e no entanto comportar-se exatamente
como qualquer outro objeto. Um agente um tipo especial de objeto pois ele tem
autonomia, isto , ele um objeto que pode existir mesmo sem ter uma referncia para
ele. Um agente autnomo pode ser programado para satisfazer uma ou mais metas,
mesmo se, ao mover-se, perder contato com seu criador.
Neste ponto fica claro que no h diferena entre objetos e agentes mveis que
justifiquem um estudo separado destas duas entidades. A filosofia da orientao a
objetos absorvida pela orientao a agentes, portanto, um agente pode ser considerado
um objeto, mas com autonomia, isto , pode-se dizer que um agente uma evoluo do
objeto.
Um agente em Voyager suporta, alm da autonomia, mobilidade. Alm disso, um agente
tem todas as caractersticas de um objeto simples: pode ser atribudo um alias,
referncias virtuais, comunicao com objetos remotos, etc. Sendo assim, um agente
pode mover-se de um programa para outro. Mas, diferentemente de objetos simples, um
agente pode mover-se de forma autnoma.

33

Atravs dos agentes, nota-se que Voyager tambm suporta o desenvolvimento de


aplicaes atravs do paradigma de Agentes Mveis. Alm disso, pode implementar
uma mobilidade forte atravs da migrao destes agentes.
Existem vrias vantagens em usar agentes mveis em Voyager:

Se uma tarefa tem que ser desempenhada independentemente do computador que a


inicializou, um agente pode ser criado para desempenhar esta tarefa. Ele pode
mover-se dentro da rede e completar a tarefa num programa remoto;

Se um programa precisa enviar um grande nmero de mensagens a objeto em


programas remotos, um agente pode ser construdo para visitar cada programa e
enviar mensagens localmente;

Para particionar um programa e t-lo executando em paralelo, o processamento pode


ser distribudo por vrios agentes que migram para programas remotos e se
comunicam para atingir a meta final. Se um objeto remoto precisa ser monitorado
periodicamente, ter um agente que o encontra e o monitora localmente mais
eficiente que monitor-lo atravs da rede.

Voyager suporta persistncia. Um objeto persistente tem uma cpia backup na base de
dados, chamada VoyagerDb, e automaticamente recuperado se o seu programa
termina inesperadamente.
Maiores informaes a respeito da tecnologia Voyager pode ser encontrada em [OBJ 97]
e [OBJ 98].

4.2.2 Aglets
Aglets [IBM 97] so objetos Java com a capacidade de se mover de uma mquina para
outra em uma rede, levando consigo o cdigo de programa e o estado dos objetos que
compe o Aglet. Este um agente mvel porque suporta a idia de execuo autnoma
e rota dinmica de seu etinerrio. A biblioteca de classes de um Aglet tem os seguintes
objetivos:
fornecer um modelo simples de programao utilizando agentes mveis, sem no
entanto implicar em modificao na JVM ou em cdigo nativo;
disponibilizar mecanismos de comunicao poderosos e dinmicos que
permitam agentes se comunicarem com outros agentes;
projetar uma arquitetura de agentes mveis que permita extensibilidade e
reusabilidade;
obter uma arquitetura altamente coerente com o modelo tecnolgico Web/Java.
A biblioteca Aglets/API (J-AAPI - Java Aglet Application Programming Interface)
uma proposta padro para criar Aglets. Contm mtodos para inicializao, mensagens,
movimento, ativao/desativao, etc. Plataformas escritas com estas bibliotecas podem
ser escritas e executadas em qualquer computador que suporte a interface para Aglet. O
modelo define um conjunto de abstraes e de comportamento necessrios para que a
tecnologia de agentes mveis seja usada na Internet. As principais abstraes do modelo

34

so o Aglet, o contexto, o procurador, a mensagem, o itinerrio e o identificador, como


visto a seguir:
Aglet - o elemento bsico da biblioteca e consiste em um objeto Java mvel
autnomo (pois possui sua prpria thread de execuo) e reativo pois pode
responder a mensagem externas.
Contexto (context) - um objeto estacionrio que prov um ambiente para
manuteno e gerenciamento de aglets em execuo.
Procurador (proxy) - um objeto que representa um Aglet, e tem por objetivo
fornecer transparncia de localidade e proteo a mtodos pblicos.
Mensagem (message) - um objeto transmitido entre Aglets, permitindo passagem
de mensagens sncronas e assncronas, usados para colaborao e troca de
informaes.
Itinerrio (itinerary) - o plano de viagem do Aglet. Isto prov uma conveniente
abstrao de padres de viagens e rota.
Identificador (identifier) - cada aglet possui um nico e global identificador que
imutvel durante todo seu ciclo de vida.
O modelo Aglet prov comportamentos essenciais com relao a um agente tais como:
criao, clonagem, envio, retirada, desativao, ativao, liberao, mensagem e
nomeao [LAN 97].
A criao de um Aglet coloca ele no contexto. Ao novo Aglet atribudo um
identificador, inserido no contexto e inicializado. O Aglet comea a execuo assim que
ele seja inicializado com sucesso. A clonagem produz uma cpia quase idntica do
Aglet original no mesmo contexto. Somente h diferena na atribuio do identificador
e o fato da execuo reiniciar em um novo Aglet. Com isto, a thread em execuo no
clonada. O envio de um Aglet de um contexto para outro remove ele do contexto
corrente e insere dentro do contexto destino, onde a execuo da thread reinicializada.
Sendo assim, embora Java suporte mobilidade fraca, a biblioteca Aglet suporta
mobilidade forte atravs de migrao, pois como colocado no pargrafo acima, o envio
de um Aglet tira ele de um contexto e o coloca em outro. Alm disso, o contexto pode
ser considerado o ambiente computacional que d suporte mobilidade dos agentes em
Aglet. A entidade base do Aglet o agente.
A retirada de um Aglet remove ele do contexto corrente e o insere dentro do contexto ao
qual a retirada foi requisitada. A desativao de um Aglet remove temporariamente do
contexto corrente e o coloca em um armazenamento secundrio. A ativao restaura o
Aglet para o contexto corrente. A liberao de um Aglet pra a execuo corrente e o
remove do contexto corrente. Mensagens entre Aglet envolvem envio, recebimento e
parada de mensagens sncronas bem como assncronas. O mecanismo de nomeao
automtico atribui um identificador imutvel para um novo Aglet.
Voyager utiliza o protocolo ATP (Agente Transfer Protocol), abordado no Captulo 3,
para a comunicao e transferncia de agentes entre os contextos.

35

Quanto a segurana dos agentes, o Modelo de Segurana Aglet prov vrios framework
para segurana em Aglet. Como Aglets so objetos Java que podem migrar de uma
mquina para outra, eles tem um potencial de acesso para todos os recursos da mquina.
Eles tambm confiam na segurana do interpretador Java para sua prpria execuo.
Assim, segurana em Aglet e segurana em Java andam juntas.
Maiores informaes sobre Aglet podem ser encontradas em [IBM 97] , [OSH 98] e
[LAN 97].

4.2.3 Concordia
O Concordia [WONG 97] [CAS 98], concebido pela Mitsubishi constitui-se de um
framework para o desenvolvimento e gerenciamento de aplicaes de agentes mveis.
O Concordia compreende mltiplos componentes, todos escritos em Java, na qual so
combinados para prover um ambiente para aplicaes distribudas. Este sistema
simples, e requer somente uma implementao padro do servidor Concordia, feito em
cima da mquina virtual Java, e seu ambiente composto de um servidor e um conjunto
de agentes. O agente tambm um programa Java que gerenciado pelo servidor
Concordia. Cada agente est associado a um usurio particular e carrega uma
especificao que contm o caminho de migrao e o mtodo a ser executado em cada
mquina. Nota-se que a entidade base do Concordia o agente.
Quanto a arquitetura do sistema, cada nodo num sistema Concordia consiste em um
servidor Concordia e prov servios bsicos para criao, migrao, execuo,
comunicao e administrao de agentes mveis. O servidor pode ser executado em uma
ou mais mquinas virtuais Java. A figura 4.5 mostra como formada a arquitetura do
Concordia [WON 97].
Java Virtual Machine
Security
Manager

Administration
Manager

Agents

Persistent
Manager

Event
Manager

remote queue
managers

Conduit
Manager

Queue
Manager

remote conduit
servers

Corporate
DB server

FIGURA 4.5 - Arquitetura do Concordia

36

O Servidor Concordia um componente completo, instalado e executando em uma


rede Concordia. O servidor o ambiente computacional necessrio para a computao,
permitindo que mobilidade seja explorada atravs das estruturas contidas dentro do
ambiente.
O Gerenciador de Agentes prov a infra-estrutura de comunicao que permite aos
agentes serem transmitidos e recebidos pelos nodos da rede. Alm disso, gerencia o
ciclo de vida do agente, prov suporte mobilidade e interface para administrao
(inclusive remota) dos servios do servidor Concordia.
mobilidade do agente transparente para os usurios do sistema. A viagem do agente
descrita atravs de um itinerrio. Este composto de mltiplos destinos. Cada destino
descreve a localizao do agente na viagem e o trabalho que o agente realiza nesta
localizao. A localizao pode ser definida pela identificao da mquina na rede e o
trabalho atravs dos mtodos manipulados pelo agente.
O Concordia usa uma infra-estrutura similar a Java para mobilidade dos agentes.
Durante a viagem de um agente atravs da rede, seu byte code e o byte code de alguns
objetos so carregados via uma classe especial chamada ClassLoader. Neste pacote, o
byte code contm uma estrutura de dados que viaja com o agente. Durante a
deserializao do agente, o byte code para o agente e suas classes podem ser
recuperadas e usadas para inicializar uma nova copia do agente.
Pode-se notar que Concordia permite uma mobilidade fraca do tipo autnoma,
semelhante a Java, pois permite que os programas sejam carregados dinmicamente pela
rede, atravs do ClassLoader.
Concordia d suporte a duas formas de comunicao inter-agente: eventos assncronos
distribudos e colaborao entre agentes. Eventos assncronos distribudos so
escalonados e gerenciados pelo Gerenciador de Eventos, enquanto a colaborao entre
agentes requer que o programador da aplicao agente especifique um objeto
AgentGroup atravs da utilizao da biblioteca de classes Concordia. A colaborao
entre agentes permite a interao entre agentes, colaborao num grupo (agentes podem
enviar eventos para outros agentes ou para aplicao pai).
Persistncia em agentes um requisito que assegura recuperao do agente em caso de
falha. A persistncia oferecida atravs do Gerenciador de Armazenamento
Persistente, permitindo a reinicializao do agente quando ocorrer uma falha ou at
mesmo a reinicializao do servidor Concordia. A implementao do Gerenciador de
Armazenamento Persistente baseada na serializao de objetos Java.
Agentes em Concordia so mveis e sua mobilidade pode extender-se tanto em redes
locais como na Internet. O Gerenciador de Filas responsvel pelo controle de
prioridades na execuo de agentes, e tambm pela migrao de agentes, garantindo um
nvel de tolerncia a falhas atravs do armazenamento do agente antes de transmit-lo
(store-and-forward).
O modelo de segurana Concrdia prov suporte para dois tipos de proteo: (1)
proteo contra agentes com origem falsificada e (2) proteo dos recursos do servidor
contra acessos no autorizados. Agentes so protegidos contra falsidade quando so
armazenados no sistema cliente e quando so armazenados na base de dados persistente.
Esta proteo feita atravs de criptografia. Sendo assim, garante a proteo do agente

37

no armazenamento e na migrao, alm de autenticar a origem do agente. O


Gerenciador de Segurana gerencia os recursos de proteo. A cada agente atribudo
uma identificao, permitindo ao agente acessar os recursos.
A administrao do sistema Concordia feita pelo Gerenciador de Administrao.
Este inicializa e termina os servidores do sistema de agentes. Ele tambm gerencia a
troca de poltica de segurana entre os agentes e os servidores fazendo uma requisio
do comportamento do agente ou do servidor para o Gerenciador de Seguraa. Alm
disso, monitora o comportamento dos agentes atravs da rede, provndo estatsticas
sobre isto.
O Gerenciador de Diretrio permite aos agentes mveis localizar os servidores de
aplicao para interao. O sistema pode ser configurado para incluir um ou mais
gerenciador de diretrios. Alm disso, registra os servios de aplicaes disponveis na
rede e disponibiliza uma operao de lookup para os agentes que esto a procura de
servios para interagir.
As Pontes de Servio possibilitam que os agentes e/ou aplicaes acrescentem servios
ao servidor Concordia, aumentando a funcionalidade e a interao do servidor com os
agentes.
Em Concordia fica muito claro a concepo de um ambiente computacional, assim
como em Java. Este ambiente, alm de permitir mobilidade, oferece segurana, acessos
autorizados, confiana etc.
Maiores Informaes sobre Concordia podem ser encontradas nos textos [WONG 97] e
[CAS 98].

4.3 Aplicaes
So vrias as aplicaes que podem ser desenvolvidas
mobilidade. Entre elas:

utilizando tecnologia de

Recuperao de informaes distribudas - estas informaes so recuperadas de


acordo com algum critrio especfico. O informao a ser recuperada pode ser
definida estaticamente ou dinmicamente durante o processo de recuperao. Sendo
assim, um agente, por exemplo, pode ser encarregado de viajar pela rede, obtendo as
informaes a serem recuperadas;
Servios avanados de telecomunicaes - o suporte e o gerenciamento de servios
como vdeo conferncia, telemarketing, etc, requerem mecanismos de reconfigurao
dinmica e customizao do uso. O uso de mobilidade permite o desenvolvimento
destes servios. Por exemplo, uma aplicao que gerencia a sinalizao, o sinal e
apresentao de um servio de vdeo conferncia pode ser despachado pelos usurios
atravs de um agente;
Controle e configurao de dispositivos remotos - a tecnologia de cdigo mvel
pode ser usada para projetar e implementar componentes de monitoramento que esto
localizados nos dispositivos a serem monitorados e transmitir eventos que
representem a evoluo do estado do dispositivo. O estudo de caso do gerenciamento
de uma rede apresentado em [FUG 98];

38

Gerenciamento de Workflow - o workflow define que atividades devem ser


carregadas para serem cumpridas em uma determinada tarefa bem como de que
maneira, onde e quando estas atividades envolvem cada parte. Cdigo mvel pode
ser usado para prover suporte mobilidade de atividades que encapsulem suas
definies e seu estado. Por exemplo, um componente mvel pode encapsular um
documento texto que suporta vrias verses. O componente gerncia a informao
sobre o estado do documento, que operaes foram feitas, e qual o prximo passo
para reviso;
Comrcio Eletrnico - aplicaes de comrcio eletrnico permitem usurios
desenvolver aplicaes comerciais atravs da rede. Uma transao pode envolver
negociao com entidades remotas e requisio de informaes. Portanto, desejvel
que o componente mvel da aplicao s fornea informaes relevantes para o
negcio. Aplicaes deste tipo podem ser implementadas com a tecnologia de
agentes mveis.

4.4 Concluses
Este captulo apresentou as tecnologias usadas para desenvolver sistemas que suportem
mobilidade, bem como as aplicaes que podem ser desenvolvidas. Foram apresentadas
as linguagens Java, Obliq e Oz Distribudo. Estas foram apresentadas com o objetivo de
mostrar alternativas, a nvel de linguagem, para o desenvolvimento de aplicaes que
exploram mobilidade. O texto [THO 97] apresenta uma comparao de vrias
linguagens que implementam cdigo mvel.
Alm disso, foi apresentado CORBA, Voyager, Aglets e Concordia. Estes podem ser
considerados middleware para o desenvolvimento de aplicaes que permitem
mobilidade. importante destacar o aspecto de contribuio de CORBA, j que ele por
si s no permite mobilidade. Como ele usado para implementar objetos distribudos,
vrios conceitos de CORBA so usados em outros middleware para o desenvolvimento
de aplicaes. Tambm foi apresentado alguns exemplos de aplicaes onde
mobilidade pode ser aplicada.
Este captulo procurou tambm destacar, nas tecnologias, aspectos que permitissem
classifica-las conforme a proposta de [FUG 98], apresentada no captulo 2.
Relembrando, esta proposta aborda uma estrutura conceitual para compreender cdigo
mvel, apresentando um conjunto de termos e conceitos para compreender e comparar
as abordagens baseadas na noo de cdigo mvel, atravs de mecanismos e paradigmas
que auxiliam o desenvolvimento de aplicaes para cdigo mvel. Tanto os
mecanismos quanto os paradigmas foram destacados nas tecnologias apresentadas neste
captulo.
Pode-se concluir tambm as vrias vantagens no desenvolvimento de sistemas que
permitem mobilidade. Destacam-se:

possibilidade de operaes desconectadas, permitindo que a computao seja


realizada mesmo quando no se est conectado na rede;

diminuio do trfego da rede, aproximando a entidade computacional do recurso;

39

possibilidade de coleta de estatsticas e dados sobre a rede e/ou funcionamento de


aplicaes distribudas;

personificao de uma transao ou cliente, permitindo que informaes especficas


sejam coletadas.

Observando as vrias vantagens e possibilidades de desenvolvimento de aplicaes,


nota-se que elas esto mais de acordo com o desenvolvimento utilizando agentes
mveis, devido a suas caractersticas, j destacadas no captulo 3. Por isto, a grande
maioria das tecnologias que permitem mobilidade suportam o desenvolvimento de
aplicaes atravs de agentes mveis ou so especificamente para este tipo de aplicao.
O captulo 5 apresenta uma comparao das diversas tecnologias apresentadas
relacionando-as aos conceitos e paradigmas apresentados no captulo 2.

40

5 Anlise Comparativa das Tecnologias que Suportam


Mobilidade
Este captulo apresenta uma anlise comparativa das tecnologias apresentadas no
Captulo 4, tendo como base a proposta de organizao da rea de mobilidade
apresentada no texto [FUG 98], descrita no captulo 2.
A anlise ser dividida em duas tabelas que comparam aspectos de mobilidade. A
primeira (Tabela 1), compara algumas ferramentas que permitem implementar
ambientes para explorar mobilidade. A segunda, Tabela 2, faz comparaes ambientes
que permitem desenvolver aplicaes com mobilidade.

5.1 Anlise comparativa das ferramentas


TABELA 1 - Ferramentas para suporte mobilidade

Ferramentas
Caractersticas
Entidade computacional base objeto

Java

Obliq OZ dist. CORBA

Permite Objetos Distribudos

Permite implementar mobilidade

Mobilidade atravs de objetos mveis

Entidade computacional base agente

Mobilidade atravs de agentes mveis


Explora mobilidade forte
Explora mobilidade fraca

Paradigma de Avaliao Remota


Paradigma de Cdigo em Demanda

Paradigma de Agentes Mveis


Possui ambiente computacional

Mecanismos de serializao de objetos

Mecanismos de segurana

41

Com relao a Tabela 1, observa-se que todas as ferramentas tem como entidade
computacional base o objeto. Mesmo que permitam implementar agentes, a concepo
base o objeto.
Todas as ferramentas permitem o desenvolvimento de aplicaes usando objetos
distribudos, mas somente Java, Obliq e Oz Distribudo permitem implementar algum
tipo de mobilidade, atravs de objetos mveis. CORBA no suporta em sua essncia
mobilidade, embora tenha servido de inspirao para vrias outras tecnologias que
suportam mobilidade. Um exemplo disto o fato de Voyager suportar integrao com
CORBA, alm de ter em sua implementao uma base ORB.
Quanto ao tipo de mobilidade, Java explora mobilidade fraca, do tipo autnoma, pois
permite que os programas sejam carregados dinmicamente pela rede, atravs do
ClassLoader. J Obliq e OZ Distribudo permitem mobilidade forte. Obliq suporta
mobilidade forte, tanto atravs de migrao quanto atravs de clone remoto. No
primeiro caso o gerenciamento do espao de dados se d atravs da remoo das
ligaes e no segundo atravs de referncias na rede e por cpia. Por outro lado, OZ
suporta mobilidade forte atravs da migrao do tipo proativa, onde a unidade migrante
determina quando migrar. CORBA, como "no permite" mobilidade, no pode ser
classificada.
Quanto aos paradigmas suportados, Java suporta Cdigo em Demanda, sendo que
Obliq, OZ Distribudo e CORBA suportam o paradigma de Avaliao Remota. Um
exemplo de Cdigo em Demanda na linguagem Java o Applet, pois este buscado em
um site remoto para ser executado localmente. Em Obliq, o conhecimento vai para onde
est o recurso e depois retorna ao site requisitante. J em OZ, a construo do grafo da
linguagem e do grafo de distribuio permitem ligaes dinmicas com o proxy, o
gerenciador e o content-edge.
Para explorar mobilidade, uma ferramenta deve possuir um ambiente computacional que
de suporte para que as entidades possam executar, alm de permitir segurana. Java
possui uma estrutura computacional prpria, que consiste em seu ambiente
computacional, isto , a mquina virtual Java. Atravs desta, Java prov suporte aos
mecanismos da linguagem que permitem implementar mobilidade. O ambiente
computacional de Obliq representado na sua mquina de execuo. J em OZ, seu
ambiente computacional a Oz Virtual Machine que, como em Java, portvel,
podendo executar tanto em Unix como em Windows.
Todas as ferramentas oferecem algum tipo de segurana. Em Java, a segurana foi
preocupao desde a sua criao, garantindo que regras de acesso sejam sempre
respeitadas. Muitos recursos que requerem controle de acesso dinmico so controlados
por um monitor chamado SecurityManager. Em Obliq, a segurana garantida pelo
escopo lxico da linguagem que oculta valores chamados externamente. Alm disso, o
sistema de execuo assegura que o escopo seja cumprido. OZ tem um modelo simples
para tolerncia a falhas, suportando somente falha no site, no suportando falha na rede.

42

TABELA 2 - Ambientes para explorar mobilidade

Ambientes
Caractersticas

Voyager Aglet Concordia

Entidade computacional base objeto

Entidade computacional base agente

Possui ambiente computacional

Suporta desenvolvimento em Java

Permite implementar mobilidade

Mobilidade atravs de objetos mveis

Mobilidade atravs de agentes mveis

Explora mobilidade forte

Explora mobilidade fraca

Paradigma de Avaliao Remota

Paradigma de Cdigo em Demanda

Paradigma de Agentes Mveis

Mecanismos de serializao de objetos

Mecanismos de transporte e interao de agentes

Mecanismos para controle de prioridade

Permite implementar persistncia

Mecanismos de segurana

X
X

A Tabela 2 compara ambientes que permitem o desenvolvimento de aplicaes que


suportam mobilidade. Observando a Tabela, nota-se que Voyager tem um ambiente bem
mais completo que Aglet e Concordia.
Quanto a entidade computacional base, somente Voyager suporta objetos e agentes
mveis, pois neste ambiente, um agente considerado um objeto, mas com autonomia.
Aglet e Concordia suportam somente agentes mveis.
Todos os ambientes possuem um ambiente computacional. Este fato natural, pois para
dar suporte a execuo das entidades computacionais distribudas, mesmo que no
suporte mobilidade, cada mquina envolvida na distribuio deve suportar o ambiente
computacional necessrio para que as entidades possam ser executadas. Um exemplo a
mquina virtual Java. Para que um programa Java execute, necessrio que a mquina
virtual esteja presente. A questo do ambiente computacional essencial para permitir

43

mobilidade. O que pode ser uma limitao, pois a entidade computacional s pode
mover-se para uma mquina onde o ambiente esteja presente ou que possa ser
inicializado.
Uma questo interessante, que todos os ambientes suportam desenvolvimento em Java
(at porque so desenvolvidos em Java). Isto vem destacar o papel de Java como
linguagem principal para implementar mobilidade. O artigo [THO 97] destaca que Java
a linguagem mais importante para desenvolvimento de aplicaes que suportem
mobilidade, por ser portvel e segura. Neste artigo encontra-se a descrio de algumas
linguagens para comparaes quanto mobilidade. Java a linguagem que mereceu
maior ateno quanto a descrio e comparao.
Todos os ambientes permitem implementar mobilidade. Voyager suporta mobilidade
fraca e forte. A primeira caracterizada, assim como Java, pela capacidade de carregar
classes para dentro de uma mquina virtual em tempo de execuo. Sendo assim, o
cdigo para uma determinada tarefa pode ser carregado a medida que for necessrio para
a computao. mobilidade forte caracterizada pelo suporte a agentes mveis, pois
eles devem levar consigo sua conscincia, isto , ocorre uma espcie de migrao,
embora eles possam construir esta conscincia durante seu tempo de vida carregando
classes em tempo de execuo. Aglet suporta mobilidade forte atravs de migrao, pois
o envio de um Aglet tira ele de um contexto e o coloca em outro. J Concordia permite
uma mobilidade fraca do tipo autnoma, semelhante a Java, pois permite que os
programas sejam carregados dinmicamente pela rede, isto , durante a viagem de um
agente atravs da rede, seu byte code e byte code de alguns objetos so carregados
atravs da classe ClassLoader.
Quanto aos paradigmas, Voyager suporta todos os tipos de paradigmas estudados, isto
, Cdigo em Demanda, Avaliao Remota e Agentes Mveis. O primeiro paradigma
caracterizado pelo fato de Voyager permitir criar instncias remotas de uma classe,
sendo que se o cdigo original da classe para a instncia remota no existir no programa
destino, Voyager carrega automaticamente o cdigo da classe original para este. A
Avaliao Remota caracterizada em Voyager porque este permite que os objetos
movam-se para onde est o recurso. O paradigma de Agentes Mveis caracterizado
pelo fato de Voyager suportar agentes mveis. Como Aglet e Concordia suportam
somente agentes mveis, permitem desenvolver aplicaes atravs do paradigma de
Agentes Mveis.
Voyager, Aglet e Concordia contm mecanismos de segurana. Como todos so
baseados em Java, herdam as caractersticas de segurana e portabilidade de Java, alm
de mecanismos especficos de cada ambiente. Em Voyager a segurana mantida
atravs do Voyager Security Manager, que restringe as operaes de objetos estranhos
dentro do ambiente. Em Aglet, a segurana mantida atravs do modelo de segurana
Java, isto , atravs do interpretador e da mquina virtual Java. Em Concordia, existe o
Gerenciador de Segurana que gerencia os recursos de proteo.

44

5.2 Concluses
Este captulo apresentou uma anlise comparativa das tecnologias apresentadas neste
texto (Captulo 4). Esta anlise foi feita tendo como base a taxonomia apresentada no
texto [FUG 98], descrita no captulo 2. A anlise foi dividida em duas tabelas. A Tabela
1 procurou comparar aspectos de mobilidade em ferramentas que serviram como base
para implementao de ambientes que permitem explorar mobilidade. A Tabela 2
comparou aspectos de mobilidade nestes ambientes.
Na Tabela 1, foram comparadas as ferramentas Java, Obliq e Oz distribudo, que so
linguagens de programao, e CORBA. Procurou-se nestas estudar aspectos referentes a
entidade computacional base da ferramenta, suporte a objetos distribudos, suporte a
implementao de mobilidade atravs de objetos e/ou agentes mveis, tipo de
mobilidade explorada (forte ou fraca), paradigma suportado (Avaliao Remota, Cdigo
em Demanda e Agentes Mveis), ambiente computacional para suporte computao e
mecanismos de segurana.
Na Tabela 2 foram comparados os ambientas Voyager, Aglet e Concordia. Comparou-se
aspectos considerados importantes (alguns semelhantes aos analisados quanto as
ferramentas) com relao a ambientes que suportam mobilidade, tais como entidade
computacional base, presena de ambiente computacional, suporte a desenvolvimento
em Java, mobilidade atravs de objetos e/ou agentes mveis, tipo de mobilidade,
paradigma suportado e mecanismos de segurana.
importante observar que a explorao da mobilidade envolve muito a questo da
localizao. Uma premissa bsica que o usurio no necessita saber onde a sua
computao est sendo desenvolvida, pois a aplicao deve abstrair aspectos de
localizao do usurio. Como a computao distribuda atravs da rede, a integridade
desta computao deve ser preservada, portanto a segurana um fator muito
importante.
Todos os aspectos, em cada Tabela, foram comentados e observados como ocorre nas
ferramentas/ambientes analisados. Pode-se concluir que entidade computacional base,
ambiente computacional, tipo de mobilidade e paradigma suportado so aspectos
importantes a serem levados em considerao na necessidade de escolha da
ferramenta/ambiente para desenvolvimento de aplicaes que suportam mobilidade.
O captulo 6 apresenta as concluses do trabalho.

45

6 Concluso
Este trabalho apresentou um estudo sobre mobilidade em sistemas distribudos. Foi
apresentado que os estudos sobre mobilidade intensificaram-se com o uso cada vez
maior de aplicaes que utilizam a Internet, podendo-se assim explorar mobilidade
atravs de redes heterogneas, conectadas por diferentes links de comunicao e
distantes uma das outras. Estas aplicaes, geralmente so construdas utilizando-se
objetos e/ou agentes. Sendo assim, no mbito deste trabalho, um dos fatores principais
no desenvolvimento destas aplicaes diz respeito mobilidade destas entidades.
O Captulo 2 apresentou os fundamentos que envolvem os estudos em mobilidade,
necessrios para compreender o universo que envolve as aplicaes que utilizam
mobilidade. O conceito de mobilidade ainda no consenso entre a comunidade
cientfica, embora sejam unnimes em que a entidade envolvida na computao deve ter
o potencial de deslocar-se entre o sistema distribudo, podendo mover-se de um
ambiente computacional para outro. Alm disso, o Captulo apresentou uma taxionomia
proposta em [FUG 98], envolvendo conceitos e paradigmas, buscando a compreenso
das abordagens baseadas em cdigo mvel.
O Captulo 3 apresentou aspectos de mobilidade em sistemas distribudos, orientao a
objetos, orientao a gentes e agentes mveis. Como a maioria das aplicaes
distribudas que suportam mobilidade so construdas a partir do paradigma orientado a
agente e algumas aplicaes consideram o agente um objeto especial, os conceitos da
orientao a objetos so amplamente utilizados por tecnologias que suportam
mobilidade. Sendo assim, a concluso mais importante deste Captulo que no h
diferena entre objetos e agentes mveis que justifiquem um estudo separado destas
duas entidades. A filosofia da orientao a objetos absorvida pela orientao a agentes,
portanto, um agente pode ser considerado um objeto, mas com autonomia.
No Captulo 4 foi apresentada algumas tecnologias usadas para desenvolver sistemas
que suportem mobilidade, procurando sempre destacar aspectos que permitissem
classific-las bem como as aplicaes que podem ser desenvolvidas. Foram
apresentadas as linguagens Java, Obliq e Oz Distribudo como ferramentas que
permitem implementar mobilidade. Alm disso, foi apresentado CORBA destacando
seu aspecto de contribuio para rea de mobilidade, onde vrios de seus conceitos so
usados em outros middleware para o desenvolvimento de aplicaes. Tambm foram
apresentados alguns exemplos de aplicaes onde mobilidade pode ser aplicada.
A maior contribuio do Captulo 4 foi a identificao das vrias vantagens no
desenvolvimento de sistemas que permitem mobilidade, tais como: possibilidade de
operaes desconectadas; diminuio do trfego da rede, aproximando a entidade
computacional do recurso; possibilidade de coleta de estatsticas e dados sobre a rede
e/ou funcionamento de aplicaes distribudas; personificao de uma transao ou
cliente, permitindo que informaes especficas sejam coletadas. Atravs destas
vantagens, observou-se que elas podem ser alcanadas usando agentes mveis,
podendo-se concluir ento a grande importncia da mobilidade dos agentes, pois muitas
tecnologias que permitem mobilidade suportam o desenvolvimento de aplicaes
atravs de agentes mveis ou so especificamente para este tipo de aplicao.

46

Finalmente, o Captulo 5 apresentou uma anlise comparativa das tecnologias


apresentadas no Captulo 4. Esta anlise foi feita tendo como base a taxonomia
apresentada no texto [FUG 98], descrita no captulo 2. A anlise foi dividida em duas
tabelas. A Tabela 1 procurou comparar aspectos de mobilidade em ferramentas que
serviram como base para implementao de ambientes que permitem explorar
mobilidade. Foram comparadas as ferramentas Java, Obliq e Oz Distribudo, que so
linguagens de programao, e CORBA. Na Tabela 2, foram comparados os ambientas
Voyager, Aglet e Concordia. Comparou-se aspectos considerados importantes (alguns
semelhantes aos analisados quanto as ferramentas) com relao a ambientes que
suportam mobilidade, tais como entidade computacional base, presena de ambiente
computacional, suporte a desenvolvimento em Java, mobilidade atravs de objetos e/ou
agentes mveis, tipo de mobilidade, paradigma suportado e mecanismos de segurana.
A principal contribuio deste captulo foi a observao de caractersticas semelhantes
em ferramentas/ambientes que exploram mobilidade.
Pode-se concluir com este trabalho:
os estudos em mobilidade so promissores e necessrios, uma vez que as aplicaes
distribudas utilizam cada vez mais a Internet;
o texto [FUG 98] procurou organizar a rea de mobilidade, sendo que a taxonomia
apresentada no dita como completamente correta, necessitando ainda muitos
estudos e revises;
a linguagem Java pode ser considerada como a principal linguagem para suporte
mobilidade, uma vez que vrios ambientes computacionais so baseados em Java,
como foi visto neste texto;
para ser considerada uma ferramenta ou ambiente que permite implementar
mobilidade, a entidade computacional base deve ter o potencial de deslocar-se
atravs dos sistemas distribudos;
entre os ambientes Voyager, Aglet e Concordia, o primeiro o mais completo de
todos, pois suporta todas as caractersticas analisados no Captulo5, Tabela 2;
caractersticas como suporte mobilidade atravs de objetos e agentes mveis,
presena de ambiente computacional e mecanismos de segurana parecem ser
caractersticas desejadas em ambientes que permitem explorar mobilidade.
para explorar mobilidade, desejvel que a tecnologia apresente caractersticas como
ambiente computacional, suporte a objetos e agentes, suporte a Java, suporte a
mobilidade forte e fraca, mecanismos de serializao de objetos, mecanismos de
segurana, mecanismos de transporte e interao das entidades base, mecanismos
para controle de prioridade e persistncia.
Trabalhos futuros podero aperfeioar os estudos referentes a ambientes que permitam
mobilidade, como a identificao de caractersticas que devem estar presentes nestes
ambientes para que mobilidade possa ser aplicada de forma genrica, isto , que o
ambiente suporte mobilidade independentemente do paradigma computacional
utilizado. Na verdade, o Oz Distribudo seria um precursor desta forma de explorao
de mobilidade.

47

Bibliografia

[AMA 97]

AMANDI, Anlia. Programao de Agentes orientada a Objetos.


Porto Alegre: CPGCC da UFRGS, 1997. 208p. Tese de
Doutorado.

[BAR 98]

BARBOSA, Jorge L. V. Paradigmas de desenvolvimento de


Sistemas Computacionais. Porto Alegre: CPGCC - II - UFRGS,
1998. 49p. Trabalho Individual II.

[BAU 97]

BAUMANN, J.; HOHL, F.; et al. Communication concepts for


mobile agent systems. First International Workshop on Mobile
Agents. Proceedings... Berlin, Germany, April, 1997.

[CAS 98]

CASTILLO, A.; KAWAGUCHI, M. et al. Concordia as Enabling


technology for cooperative Information Gathering.
Mitsubishi Eletric ITA, USA, 1998.

[CAR 97]

CARZANIGA, A.; PICCO, G.; VIGNA, G. Designing distributed


applications with a mobile code paradigm. 19th International
Conference on Software Engineering. Proceedings... Boston,
may 1997.

[CAR 95]

CARDELLI, L. A Language with Distributed Scope. Proceedings...


pg. 286-297. ACM Press, 1997. Disponvel em
http://www.research.digital.com/SRC/personal/luca_cardelli/obliq/

[CUG 96]

CUGOLA, G.; GHEZZI, C.; PICCO, G. P.;VIGNA, G. Analyzing


Mobile Code Languagens. Mobile Object Systems. Second
Internationa Workshop, MOS96. Proceedings... Linz, Austria,
july 1996. Lecture Notes.

[CHE 96]

CHESS, D.; HARRISON, C.; KERSHENBAUM, A. Mobile agents:


are they a good idea? Mobile Object Systems. Second
Internationa Workshop, MOS96. Proceedings... Linz, Austria,
july 1996. Lecture Notes.

[DM 97]

DMEL, P.; LINGNAU, A.; DROBNIK, O. Mobile Agent


Interaction in Heterogeneous Environments. Mobile Object
Systems.
Second
Internationa
Workshop,
MOS96.
Proceedings... Linz, Austria, july 1996. Lecture Notes.

[FIN 94]

FININ, T.; FRITZON, R.; et al. KQML as na Agente


Communication Language. Third International Conference on
Information and Knowledge Managemente (CIKM94).
Proceedings... ACM Press, November, 1994.

[FLE 98]

FLEISCHHAUER, L. Agentes. agosto, 1998. Disponvel em


http://www.eps.ufsc.br/disserta97/amaral/cap3.htm

48

[FUG 98]

FUGGETTA, A.; PICCO, G. P.; VIGNA, G. Understanding Code


Mobily. IEEE Transactions on Software Engineering. Vol.24,
num. 5, May 1998.

[GLA 98]

GLASS, Graham. ObjectSpace Voyager - The Agente ORB for Java.


Worldwide Computing and its Applications (WWCA98).
Second International Conference. Proceedings... Tsukuba,
Japan, march, 1998.

[IBM 98]

Industrial and Business Machine corp. The Aglet Homepage.


Disponvel em http://www.trl.ibm.co.jp/aglets/

[KNA 96]

KNABE, F.; Na Overview of mobile agente programming. Fifth


LOMAPS workshop on Analysis and Verification of Multiple
Agent Languages. Proceedings... Stockholm, Sweden, june
1996. Lecture Notes

[LAN 97]

LANGE, Danny; OSHIMA, Mitsuru; et al. Aglets: programming


Mobile Agents in Java. Worldwide Computing and its
Applications
(WWCA97).
International
Conference.
Proceedings... Tsukuba, Japan, march, 1997.

[OBJ 98]

ObjectSpace Voyager Core Tecnology


http://www.objectspace.com

2.0

Disponvel

em

[OBJ 97]

ObjectSpace Voyager Core Tecnology 1.0.


http://www.objectspace.com

Disponvel

em

[OMG 95]

Object
Management
http://www.omg.org/corba/

[ORF 96]

R. Orfali, D. Hankey, J. Edwards, The Essential Distributeds


Objects Survival Guide, John Wiley & Sons, Inc.1996.

[OSH 98]

OSHIMA, M. ; LANGE, D. Mobile Agentes with Java: The Aglet


API. Disponvel em

[ROY 97]

ROY, Peter et al. Mobile Objects in Distributed Oz. ACM


Transactions on Programming Languages and Systems.
Proceedings... New York, v.19, n.5, p.804-851, september
1997.

[ROY 98]

ROY, Peter. et al. Three moves are not as bad as fire. January,
1998. Tecnical Report.

[RUM 96]

RUMBAUGH, James; et al.; Modelagem e Projetos baseados em


Objetos. Editora Campus, Rio de Janeiro, 1996.

[SUN 96]

Sun Microsystems. The Source for Java tecnology. Disponvel em


http://java.sun.com/

[THO 97]

THORN, T. Programming Languages for Mobile Code. INRIA


Tecnical Report 3134, France, Mar 1997

Group.

Disponvel

em

49

[WON 97]

WONG, D.; PACIOREK, N.; WALSH, T.; et al. Concordia: na


Infrastructure for Collaborating Mobile Agents. First
International Workshop on Mobile Agents. Proceedings...
Berlin, Germany, April, 1997.

Você também pode gostar