11.04.2013 Views

gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel

gestão de dados partilhados em ambientes de computação móvel

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

3.4. FRAMEWORK DE COMPONENTES: IMPLEMENTAÇÃO 47<br />

cada momento, apresent<strong>em</strong> um resultado provisório que reflicta todas as operações conhecidas. Assim,<br />

usa-se um componente <strong>de</strong> reconciliação que impl<strong>em</strong>enta uma or<strong>de</strong>m total optimista usando a técnica <strong>de</strong><br />

<strong>de</strong>sfazer-refazer. Como apenas quer<strong>em</strong>os manter uma cópia dos <strong>dados</strong>, usamos uma cápsula simples.<br />

Como não se preten<strong>de</strong> processar a informação <strong>de</strong> awareness, usa-se o componente <strong>de</strong> awareness que<br />

<strong>de</strong>scarta todas as mensagens produzidas. Para os outros componentes usou-se a impl<strong>em</strong>entação simples<br />

do servidor. O gestor <strong>de</strong> subobjectos mantém referência para um subobjecto directório, tratado como a<br />

raiz do espaço <strong>de</strong> nomes.<br />

Assumindo que não é possível gerar dois subobjectos referência com o mesmo i<strong>de</strong>ntificador único,<br />

po<strong>de</strong>m surgir os seguintes conflitos na manipulação concorrente <strong>de</strong>ste coobjecto.<br />

Primeiro, é possível associar dois subobjectos diferentes ao mesmo nome. Este conflito é solucionado<br />

gerando um nome alternativo para um dos subobjectos. A execução das operações por or<strong>de</strong>m total<br />

garante a convergência final <strong>de</strong> todas as réplicas (apesar <strong>de</strong>, momentaneamente, o mesmo nome po<strong>de</strong>r<br />

estar associado a diferentes subobjectos <strong>em</strong> diferentes réplicas e <strong>de</strong>, numa réplica, o nome associado a<br />

um dado subobjecto po<strong>de</strong>r mudar).<br />

Segundo, a r<strong>em</strong>oção concorrente do mesmo subobjecto por dois utilizadores leva, como esperado, à<br />

r<strong>em</strong>oção <strong>de</strong> qualquer associação entre um nome e o referido subobjecto.<br />

Terceiro, a r<strong>em</strong>oção <strong>de</strong> um directório (i.e., da associação entre um nome e um subobjecto directório)<br />

e a inserção concorrente <strong>de</strong> uma nova associação nesse directório é tratada da seguinte forma. Se a opera-<br />

ção <strong>de</strong> inserção é or<strong>de</strong>nada antes da operação <strong>de</strong> r<strong>em</strong>oção (na or<strong>de</strong>m total <strong>de</strong> execução das operações), a<br />

operação <strong>de</strong> r<strong>em</strong>oção não terá sucesso porque o directório não está vazio quando a operação é executada.<br />

Neste caso a inserção <strong>de</strong> um novo nome é preservada e o directório manterá o nome anterior. Se a opera-<br />

ção <strong>de</strong> r<strong>em</strong>oção é or<strong>de</strong>nada antes da operação <strong>de</strong> inserção, quando se executa a inserção, o subobjecto já<br />

não po<strong>de</strong> ser alcançado a partir <strong>de</strong> um subobjecto raiz. Assim, apesar <strong>de</strong> a inserção po<strong>de</strong>r ser executada,<br />

o seu efeito não seria visível porque o nome seria inserido num directório que já não existia. Para lidar<br />

com este probl<strong>em</strong>a usa-se a solução executada pelo segundo subobjecto base <strong>de</strong>scrito na secção 3.3.9:<br />

o directório é recriado e adicionado ao conjunto <strong>de</strong> subobjectos raiz. Para tal, o subobjecto directório é<br />

uma especialização <strong>de</strong>sse subobjecto base. Quando o nome associado a um directório é r<strong>em</strong>ovido com<br />

sucesso, executa-se igualmente a operação <strong>de</strong> r<strong>em</strong>oção <strong>de</strong>finida no subobjecto base <strong>de</strong>sse directório.<br />

3.4 Framework <strong>de</strong> componentes: impl<strong>em</strong>entação<br />

No protótipo do sist<strong>em</strong>a DOORS, o framework <strong>de</strong> componentes foi impl<strong>em</strong>entado na linguag<strong>em</strong> Java<br />

como um conjunto <strong>de</strong> interfaces e classes.<br />

Para cada tipo <strong>de</strong> componente, existe uma interface que <strong>de</strong>fine o conjunto mínimo <strong>de</strong> métodos a<br />

impl<strong>em</strong>entar. Cada componente <strong>de</strong>ve funcionar como uma caixa preta e apenas ser acedido através da

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!