Escolar Documentos
Profissional Documentos
Cultura Documentos
INSTITUTO DE INFORMTICA
CURSO DE PS-GRADUAO EM CINCIA DA COMPUTAO
por
DBORA NICE FERRARI
Trabalho Individual II
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
29
32
32
35
Lista de Tabelas
42
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
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.
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
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
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.
15
16
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
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.
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:
20
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].
21
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;
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:
22
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
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
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
29
30
31
32
33
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
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
36
37
4.3 Aplicaes
So vrias as aplicaes que podem ser desenvolvidas
mobilidade. Entre elas:
utilizando tecnologia de
38
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:
39
40
Ferramentas
Caractersticas
Entidade computacional base objeto
Java
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
Ambientes
Caractersticas
Mecanismos de segurana
X
X
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
47
Bibliografia
[AMA 97]
[BAR 98]
[BAU 97]
[CAS 98]
[CAR 97]
[CAR 95]
[CUG 96]
[CHE 96]
[DM 97]
[FIN 94]
[FLE 98]
48
[FUG 98]
[GLA 98]
[IBM 98]
[KNA 96]
[LAN 97]
[OBJ 98]
2.0
Disponvel
em
[OBJ 97]
Disponvel
em
[OMG 95]
Object
Management
http://www.omg.org/corba/
[ORF 96]
[OSH 98]
[ROY 97]
[ROY 98]
ROY, Peter. et al. Three moves are not as bad as fire. January,
1998. Tecnical Report.
[RUM 96]
[SUN 96]
[THO 97]
Group.
Disponvel
em
49
[WON 97]