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

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

44 CAPÍTULO 3. APRESENTAÇÃO DO SISTEMA DOORS<br />

<strong>de</strong>ve <strong>de</strong>finir-se a solução apropriada à aplicação que se está a criar no âmbito da impl<strong>em</strong>entação dos<br />

subobjectos. A criação <strong>de</strong> um gestor <strong>de</strong> subobjectos que execute uma política pré-<strong>de</strong>finida nesta situação<br />

é igualmente possível. No entanto, este gestor <strong>de</strong> subobjectos obrigaria a que a informação mantida<br />

sobre a possibilida<strong>de</strong> <strong>de</strong> alcançar um subobjecto fosse exacta <strong>em</strong> todos os momentos, o que não acontece<br />

na impl<strong>em</strong>entação simples existente actualmente (<strong>em</strong> que esta <strong>de</strong>tecção é efectuada periodicamente <strong>de</strong><br />

forma ingénua).<br />

3.3.9 Subobjectos<br />

Os subobjectos mantêm o estado <strong>de</strong> um coobjecto e <strong>de</strong>fin<strong>em</strong> as operações para ler e modificar esse<br />

estado. Assim, os subobjectos que compõ<strong>em</strong> cada coobjecto e a forma como se interligam internamente<br />

ten<strong>de</strong>m a ser diferentes para cada coobjecto.<br />

No entanto, o tratamento das modificações concorrentes po<strong>de</strong> ser efectuado através da cooperação<br />

entre o componente <strong>de</strong> reconciliação e o código das operações <strong>de</strong>finidas nos subobjectos. Por ex<strong>em</strong>plo,<br />

é possível <strong>de</strong>finir um subobjecto que mantenha múltiplas versões <strong>de</strong> um el<strong>em</strong>ento (opaco para o subob-<br />

jecto). Neste caso, vários coobjectos po<strong>de</strong>m usar versões especializadas do mesmo subobjecto base.<br />

Componentes pré-<strong>de</strong>finidos No protótipo do sist<strong>em</strong>a DOORS foram criados alguns subobjectos base<br />

que po<strong>de</strong>m ser especializados para utilização <strong>em</strong> diferentes coobjectos.<br />

Um dos subobjectos base criados permite manter informação sobre o estado <strong>de</strong> r<strong>em</strong>oção do su-<br />

bobjecto. Para tal, o subobjecto mantém uma variável que <strong>de</strong>fine o seu estado: r<strong>em</strong>ovido ou activo.<br />

Adicionalmente, <strong>de</strong>fin<strong>em</strong>-se duas operações <strong>de</strong> modificação: r<strong>em</strong>oção e restauro que colocam o estado<br />

do subobjecto <strong>em</strong> r<strong>em</strong>ovido e activo respectivamente. O método <strong>de</strong> r<strong>em</strong>oção grava, adicionalmente, a<br />

informação <strong>de</strong> or<strong>de</strong>nação (o i<strong>de</strong>ntificador da operação e o sumário do estado do coobjecto aquando da<br />

submissão da operação) associada à operação que causa a sua execução. O código <strong>de</strong>stas operações<br />

impl<strong>em</strong>entam conjuntamente a s<strong>em</strong>ântica “o último escritor ganha”, garantindo que as várias réplicas do<br />

subobjecto converg<strong>em</strong> para o mesmo estado in<strong>de</strong>pen<strong>de</strong>nt<strong>em</strong>ente do componente <strong>de</strong> reconciliação.<br />

Esta informação é in<strong>de</strong>pen<strong>de</strong>nte da informação mantida pelo gestor <strong>de</strong> subobjectos para controlar a<br />

persistência dos subobjectos e po<strong>de</strong> ser usada para impl<strong>em</strong>entar estratégias <strong>de</strong> r<strong>em</strong>oção específicas para<br />

uma dada aplicação.<br />

Um segundo subobjecto base esten<strong>de</strong> o subobjecto base anterior impl<strong>em</strong>entando a seguinte política<br />

<strong>de</strong> resolução <strong>de</strong> conflitos modificação/r<strong>em</strong>oção: s<strong>em</strong>pre que um subobjecto r<strong>em</strong>ovido é modificado, ele<br />

é restaurado e adicionado ao conjunto <strong>de</strong> subobjectos raiz com um nome especial. Para tal, o subobjecto<br />

base <strong>de</strong>fine uma operação que verifica se o subobjecto se encontra r<strong>em</strong>ovido, e, caso isso aconteça, exe-<br />

cuta a operação <strong>de</strong> restauro (localmente). Todas as operações <strong>de</strong> modificação <strong>de</strong>finidas nos subobjectos

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

Saved successfully!

Ooh no, something went wrong!