• Nenhum resultado encontrado

Escopo é usado para restringir a comunicação entre as entidades do sistema, per- mitindo a separação das informações que não são de interesse de todas as entidades. Dados de contexto tem uma limitação natural de visibilidade que depende da localização física e lógica. Por exemplo, um escopo de um contexto pode ser limitado por dispositivos localizados em uma mesma sub-rede (localização física), da mesma forma, os dados contextuais relacionados a um congresso científico podem ser restritos apenas aos participantes do evento (localização lógica) (BELLAVISTA et al., 2012).

O mecanismo de escopo é baseado no modelo Linda, nesse mecanismo, a descrição de um escopo é realizada através dos campos de uma tupla e a visibilidade de um dado contex- tual é verificada pelo mecanismo de matching do SysSU (seção 3.1), o qual confronta o escopo associado a uma tupla contextual ao escopo definido na consulta desta tupla. Dessa forma o me- canismo de escopo pode ser empregado de forma abrangente para representar qualquer critério de limitação lógica dos dados contextuais.

No SysSU-DTS o escopo de um dado de contexto é descrito através de pares cha- ve/valor da mesma forma que uma tupla contextual. Por exemplo, o escopo do contexto de lo- calização de um usuário pode ser descrito por atributos como, <“família”,“Almeida da Costa”>, que restringe a informação de sua localização apenas para seus familiares; ou ainda pelo pró- prio dado contextual, <“localização”,“Campus do Pici”>, que restringe sua localização apenas para quem estiver no mesmo local, o que pode ser útil para encontrar pessoas próximas, para o desenvolvimento de jogos ubíquos, etc.

Um parâmetro de escopo é definido para cada operação de leitura realizada em um espaço de tupla e cada tupla pode estar associada a um escopo específico. Assim, para cada tupla consultada em um espaço de tuplas, será verificada se a mesma está associada ao escopo passado como parâmetro. O mecanismo de escopo restringe o acesso da tuplas à integrantes de um mesmo escopo, evitando gerenciamento desnecessário de dados contextuais distribuídos, essa estratégia atende ao requisito de diferentes escopos de visibilidade para dados de contexto listado na seção 2.3.

Definição de Escopo: Um escopo s é uma relação que associa uma tupla a um con- junto de tuplas, o qual é verificado através da operação♠❛t❝❤(s,t) que recebe como argumento

o identificador do escopo e a tupla consultada.

No SysSU-DTS uma tupla contextual possui um atributo chamado scope, no qual o valor será uma outra tupla contendo campos com a descrição das características do escopo. Quando o atributo scope não for definido ele será interpretado como escopo global, permitindo que a tupla contextual seja visível a qualquer consulta. O papel do escopo é restringir a visibili- dade de uma tupla contextual. Sendo assim, em cada operação de consulta (read, take) deve ser informado os parâmetros de visibilidade, ou seja, os campos que descrevam o escopo que pode ser acessado, caso nenhum parâmetro seja informado a consulta terá acesso somente àquelas tuplas contextuais sem nenhuma restrição de escopo associada.

O SysSU-DTS adiciona uma etapa a mais ao mecanismo de matching do SysSU. No SysSU, para que uma tupla seja associada como resposta a uma consulta o mecanismo de matchingverifica se a tupla atende a um padrão de tupla e a um filtro informados na consulta, como foi descrito na seção 3.1. Com a adição do mecanismo de escopo desenvolvido no SysSU- DTS, o matching de uma tupla ocorre quando são atendidos o padrão de tupla, filtro e o escopo. A verificação do escopo funciona de forma idêntica a verificação do padrão de uma tupla.

Para facilitar o entendimento do funcionamento do mecanismo de escopo a Figura 4.4 apresenta uma representação, utilizando diagrama de Venn3, de tuplas inseridas com as restrições de escopo a elas associadas. Neste cenário de foram definidas 3 características de escopo relacionadas ao domínio de aplicação ubíqua para aprendizado de Geologia, no qual alunos portando tablets realizam tarefas em campo. Trata-se de perfil de usuário igual a aluno, perfil de usuário igual a professor, e disciplina igual a Geologia. Essas características podem criar escopos para restringir o acesso a tuplas contextuais de acordo com o perfil do usuário, e com a disciplina de Geologia. No exemplo, o espaço de tupla contém 20 tuplas, sendo 3 restritas apenas aos professores de Geologia, 10 restritas aos alunos de Geologia e 7 tuplas de acesso comum a todos os envolvidos com a disciplina de Geologia. A Listagem 4.1 apresenta um trecho de código que realiza a definição e inserção de uma das 7 tuplas restritas ao escopo da disciplina Geologia. ❙❝♦♣❡ ❡s❝♦♣♦●❡♦❧♦❣✐❛ ❂ ♥❡✇ ❙❝♦♣❡ ✭✮✳ ❛❞❞❋✐❡❧❞ ✭✧ ❞✐s❝✐♣❧✐♥❛ ✧✱ ✧ ❣❡♦❧♦❣✐❛ ✧✮❀ ❚✉♣❧❡ t✉♣❧❡ ❂ ♥❡✇ ❚✉♣❧❡ ✭✮✳ ❛❞❞❋✐❡❧❞ ✭✧❧♦❝❛❧ ✲ ❛✉❧❛ ✧✱✧ ❆❘❆❈❖■❆❇❆ ✧✮✳ ❛❞❞❋✐❡❧❞ ✭✧ ❛❧t✐t✉❞❡ ✧✱ ✧ ✸✷✵ ✧✮❀ 3http://pt.wikipedia.org/wiki/Diagrama_de_Venn

Figura 4.4: Tuplas restritas a diferentes escopos. t✉♣❧❡ ✳ s❡t❙❝♦♣❡ ✭ ❡s❝♦♣♦●❡♦❧♦❣✐❛ ✮❀

❣❡♥❡r✐❝❯❜✐❇r♦❦❡r ✳ ♣✉t ✭ t✉♣❧❡ ✮❀

Listagem 4.1: Exemplo de escrita de tupla utilizando escopo.

Todas as características definidas no escopo associado a uma tupla devem ser infor- madas no parâmetro de escopo passado nas operações de consulta a um espaço de tupla. Assim, uma consulta ao espaço de tupla que contenha as tuplas descritas na Figura 4.4, com o parâmetro de escopo igual a escopoPro f essorGeologia = (′′per f il′′,′′pro f essor′′), (′′disciplina′′,′′geologia′′), retornará 10 tuplas. Uma vez que o escopoPro f essorGeologia atende às restrições de escopo das três tuplas presentes no subconjunto (EscopoPro f essor ∩ EscopoGeologia) \ EscopoAluno da Figura 4.4 e também a restrição das sete tuplas presente no subconjunto EscopoGeologia \ (EscopoGeologia ∪ EscopoAluno) que exigem apenas que o escopo da consulta contenha o campo disciplina igual a Geologia. A Listagem 4.2 apresenta um trecho de código que realiza uma consulta ao espaço de tuplas a partir dos parâmetros de scope igual a escopoPro f essorGeologia, pattern igual a um padrão de tupla que contenha informação de altitude com valores inteiros e filter como um filtro para valores de altitude maiores que 200 metros. Da mesma forma, se uma consulta informar o escopo: scope = (′′per f il′′,′′aluno′′), ela terá acesso apenas as quatro tuplas do subconjuntos EscopoAluno \ (EscopoPro f essor ∪ EscopoGeologia). nericUbiBro-

ker.read(pattern, filter, escopoGeologia); ❙❝♦♣❡ ❡s❝♦♣♦Pr♦❢❡ss♦r●❡♦❧♦❣✐❛ ❂ ♥❡✇ ❙❝♦♣❡ ✭✮✳ ❛❞❞❋✐❡❧❞ ✭✧ ❞✐s❝✐♣❧✐♥❛ ✧✱ ✧ ❣❡♦❧♦❣✐❛ ✧✮✳ ❛❞❞❋✐❡❧❞ ✭✧ ♣❡r❢✐❧ ✧✱ ✧ ♣r♦❢❡ss♦r ✧✮❀ P❛tt❡r♥ ♣❛tt❡r♥ ❂ ✭ P❛tt❡r♥ ✮ ♥❡✇ P❛tt❡r♥ ✭✮✳ ❛❞❞❋✐❡❧❞ ✭✧ ❛❧t✐t✉❞❡ ✧✱ ✧❄ ✐♥t❡❣❡r ✧✮❀ ❙tr✐♥❣ ❢✐❧t❡r ❂ ✧ ❢✉♥❝t✐♦♥ ❢✐❧t❡r ✭ t✉♣❧❡ ✮ ④ r❡t✉r♥ ✭ t✉♣❧❡ ✳ ❛❧t✐t✉❞❡ ❃ ✷✵✵✮ ⑥✧❀ ▲✐st ❁❚✉♣❧❡ ❃ t✉♣❧❡s ❂ ❣❡♥❡r✐❝❯❜✐❇r♦❦❡r ✳ r❡❛❞ ✭ ♣❛tt❡r♥ ✱ ❢✐❧t❡r ✱ ❡s❝♦♣♦Pr♦❢❡ss♦r●❡♦❧♦❣✐❛ ✮❀

Listagem 4.2: Exemplo de leitura de tupla utilizando escopo.

A princípio, o processo de consulta no espaço de tupla ocorre normalmente como definido no SysSU 3.1, informando-se um padrão de tupla e um filtro. A definição do parâmetro escopo em uma tupla consultada adiciona uma nova etapa a essa consulta, restringindo ainda mais as tuplas retornadas pela consulta. Após a seleção do subconjunto de tuplas que satisfação o um padrão de tupla e um filtro especificados, apenas as tuplas cuja descrição do escopo esteja contida nos parâmetros de escopo passado pela consulta serão retornadas.

4.6 Contexto Global

Através do SysSU-DTS as aplicações embarcadas em um dispositivo podem ter acesso direto à tuplas criadas e armazenadas em outros dispositivos. Como ilustrado na Fi- gura 4.5, uma aplicação que tem acesso local apenas às tuplas T1 e T2, mas requer informação contextual presente nas tuplas T1, T2, T3 e T4, pode ter acesso direto à tuplas disponíveis em outro dispositivo através da formação de uma rede Ad hoc.

Com a adoção do modelo de espaço de tuplas distribuído, aplicações ubíquas pas- sam a ter acesso a informações de contexto disponíveis em múltiplos dispositivos. Isso permite a formação de um contexto global, como mostrado na Figura 4.5, composto de informações de contexto independentemente capturadas por cada dispositivo e propagadas pela rede de acordo com o interesse da aplicação, considerando o tempo de vida e o escopo (por exemplo, número de saltos, localização) de cada tupla (MAMEI; ZAMBONELLI, 2009).

Uma vez que diferentes aplicações em dispositivos móveis são capazes de compar- tilhar informações de usuários e de interagir entre elas, uma atenção especial deve ser dada de

Figura 4.5: Contexto distribuído.

maneira a assegurar a consistência dos dados de contexto compartilhados. Informações de múl- tiplas fontes podem causar inconsistências e erros na interpretação do contexto dos usuários. Por outro lado, manter a consistência de um dado contextual distribuído pode ter um alto custo. De acordo com (BELLAVISTA et al., 2012), é aconselhável evitar um tratamento muito rígido da consistência do contexto distribuído e priorizar estratégia baseadas em parâmetros de QoC.

Neste trabalho, contexto global é definido como uma informação contextual dispo- nível no espaço de tuplas de um ou mais dispositivos, e que pode ser acessada através de um dispositivo remoto. Há duas maneiras de acessar informação contextual distribuída. A primeira é consultando espaços de tuplas, onde a procura por tuplas que atendam a um padrão de tupla, um filtro e escopo de leitura associados é realizada através de um broadcast na rede. Nesse caso, o solicitante está apenas interessado em um dado de contexto. Sempre que múltiplos nós da rede responderem à consulta, a tupla escolhida será a que chegou primeiro, sendo descar- tadas as outras que chegaram depois. Esta abordagem pode ser melhorada, em um trabalho futuro, passando-se a considerar propriedades de QoC para escolher o dado de contexto mais apropriado e para se encaixar nos requisitos listados na seção 2.3.

A outra maneira de acessar informação contextual distribuída acontece quando a aplicação decide analisar todos os dados contextuais que satisfazem os parâmetros da consulta.

Nesse caso, também é realizado um broadcast na rede, porém todas as tuplas que são retor- nadas são armazenadas e ficam disponíveis, de maneira que uma aplicação interessada nessas tuplas pode realizar agregações e/ou inferências sobre o comportamento de contexto coletivo dos usuários. Na seção 3.1 é detalhado o funcionamento dos mecanismos de consulta, filtro, subscrição e matching do SysSU.

Documentos relacionados