• Nenhum resultado encontrado

O conceito de Tuples foi introduzido por Linda [GELERNTER, 2005]. O Tuple define uma linguagem de coordena¸c˜ao para a programa¸c˜ao concorrente. Um espa¸co de Tuples ´e um espa¸co de mem´oria associativo e compartilhado que permite a v´arios processos se

3.4 Middlewares Baseados em Tuples 62

comunicarem entre si. Este espa¸co ´e apresentado na forma de um dep´osito de dados es- truturados. Em middleware, o Tuple, ´e um elemento que forma a base da comunica¸c˜ao. ´E criado e mantido por um processo de tal forma, que seja usado de maneira concorrente aos outros processos. Os Tuples s˜ao anˆonimos, suas sele¸c˜oes s˜ao feitas por correspondˆencia de atributos, n˜ao pela identidade de seus autores, assim a correspondˆencia entre as enti- dades comunicantes ´e feita por anonimato. A comunica¸c˜ao ´e desacoplada no tempo e no espa¸co, pois as entidades comunicantes n˜ao precisam estar simultaneamente conectadas. A dura¸c˜ao de vida dos Tuples ´e independente do processo que os criou. Na troca de dados n˜ao ´e necess´ario o conhecimento m´utuo do endere¸co de cada entidade comunicante, pois a troca ´e feita atrav´es do espa¸co global compartilhado. Estas caracter´ısticas fazem dos middlewares baseados em Tuples um importante pretendente para a gest˜ao dos problemas de ambientes m´oveis.

As propriedades destes ambientes tais como o estilo de comunica¸c˜ao desacoplado, fa- vorecem a continua¸c˜ao dos tratamentos em caso de desconex˜ao da rede, permite tamb´em `

as entidades comunicarem entre si de maneira oportuna (as entidades s˜ao dinˆamicas e de- sconhecidas previamente). Os ambientes difusos nem sempre tˆem acesso a uma infraestru- tura centralizada. Alguns trabalhos de pesquisa abordam a representa¸c˜ao e a integra¸c˜ao dos Tuples fisicamente distribu´ıdos: as solu¸c˜oes diferem dependentemente da abordagem do problema. Entre as plataformas desenvolvidas podemos citar Tspace [WYCKOFF et al, 1998], JavaSpace [WALDO, 1998] e Lime [MURFPHY et al, 2007 ].

3.4.1

Lime

Lime (Linda in a Mobile Environment ) ´e um middleware baseado em tuple que fornece mecanismos de alto n´ıvel para desenvolvimento de aplica¸c˜oes caracterizadas pela mobili- dade f´ısica (terminais) ou pela mobilidade l´ogica (agente1). Na sua arquitetura o espa¸co de tuples persistente, originalmente definido no modelo Linda ´e substitu´ıdo por um espa¸co vol´atil: uma esp´ecie de mem´oria tempor´aria compartilhada (Transiently shared space tu- ple), situada em cada terminal ou agente m´ovel. Este ´e tamb´em conhecido como ITS (In- terface Tuples Space - Interface do Espa¸co Tuples). Figura 3.10. A associa¸c˜ao coordenada de diferentes ITS constitui um espa¸co global (FTS - Federal Tuple Space) compartilh´avel por diversos terminais ou agentes.

1Na terminologia LIME por causa da mobilidade l´ogica processos s˜ao tamb´em chamados de agentes. Cada processo ´e associado a um host ou terminal m´ovel.

Figura 3.10: Espa¸cos de Tuple Temporariamente compartilhados onde cada esfera repre- senta um agente associado a um espa¸co de tuple local (ITS).

O acesso ao contexto global por um agente ´e feito atrav´es do seu ITS associado de maneira permanente e exclusiva. ITS ´e transferido juntamente com o agente quando ocorre um movimento de migra¸c˜ao. O conceito fundamental do modelo Lime ´e a no¸c˜ao de espa¸co de tuple compartilhado transitoriamente. A figura 3.10 apresenta um host com trˆes agentes e seus respectivos ITS. Cada ITS cont´em informa¸c˜oes relacionadas a um agente; por exemplo, a localiza¸c˜ao geogr´afica ou a identifica¸c˜ao do PDA de um m´edico em movimento. Ele tem duas principais fun¸c˜oes: disponibilizar um agente a outros agentes, acessar dados de outros agentes presentes na comunidade FTS. Assim, o conte´udo do espa¸co global evolui dinamicamente em fun¸c˜ao das unidades de agentes presentes. Na entrada de um novo agente na comunidade, o conte´udo do ITS de cada agente ´e reavaliado em fun¸c˜ao dos dados do novo agente. Os tuples ITS do novo agente, por sua vez, se juntam com o conte´udo do espa¸co anterior compartilhado. O resultado ´e a forma¸c˜ao de um espa¸co de tuple global (FTS - Federated Tuple Space) acess´ıvel pelo ITS de todos os agentes presentes. Esta sequˆencia de opera¸c˜oes ´e chamada de engajamento. Quando acontece a sa´ıda de um agente do FTS, o conte´udo de seu ITS ´e retirado, de forma atˆomica, do espa¸co global (desengajamento). A Figura 3.11 mostra as duas principais caracter´ısticas do modelo Lime: mobilidade l´ogica e f´ısica e associa¸c˜ao de espa¸cos de tuple. Diversos dispositivos distintos e remotos podem compartilhar um mesmo espa¸co formado por seus ITS. O objetivo da migra¸c˜ao de um agente para outros dispositivos ´e poder ter acesso a

3.4 Middlewares Baseados em Tuples 64

servi¸cos remotos ou efetuar determinadas tarefas nos dispositivos receptores.

Figura 3.11: FTS: Espa¸cos de Tuple Global – Federated Tuple Space onde cada host ou dispositivo ´e associado a um conjunto de ITSs chamado de Host – Level Tuple Space .

O espa¸co de dados definido pelo Lime oculta os detalhes da mobilidade e da reparti¸c˜ao, gerenciando automaticamente a localiza¸c˜ao dos tuples. Entretanto, a aplica¸c˜ao `as vezes precisa ter um controle expl´ıcito sobre a por¸c˜ao de espa¸co que ela deseja acessar. Este controle pode ser feito atrav´es da introdu¸c˜ao de parˆametros de identifica¸c˜ao de terminais m´oveis. O modelo Lime ´e uma interessante solu¸c˜ao para o problema de comunica¸c˜ao e coordena¸c˜ao em ambiente difuso, ele permite uma gest˜ao transparente de troca de informa¸c˜ao em per´ımetro local e uma sensibilidade ao contexto atrav´es da supervis˜ao das entidades presentes na vizinhan¸ca. Por´em, faltam no est´agio atual de seu desenvolvimento mecanismos de tolerˆancia a falhas e de seguran¸ca.

Considera¸c˜oes

Os middlewares baseados em tuples adotam o modo de intera¸c˜ao ass´ıncrona e explo- ram a natureza desacoplada do espa¸co de tuples, isto ´e: as opera¸c˜oes podem funcionar em modo desconectado. O ponto forte desses middlewares ´e a possibilidade de fus˜ao dos espa¸cos de dados que permite reunir objetos pertencendo a entidades diferentes em um ´

unico espa¸co l´ogico. Os dados que residem em diferentes n´os podem ser compartilhados e acessados de forma transparente. Os espa¸cos de tuples permitem introduzir mecanismos de persistˆencia avan¸cado e oferecem ferramentas evolu´ıdas de busca e indexa¸c˜ao de dados.

Estes middlewares formam uma s´olida base para a concep¸c˜ao de aplica¸c˜oes em ambientes m´oveis.