• No results found

Tilbakeføring til innbyggarane: Bruk av den gamle eksersisplassen til festival og rekreasjon

In document Kulturarv der du bor (sider 51-55)

Active Space é um conceito que foi apresentado em (ROMáN et al., 2002) para se referir a ambientes físicos, coordenados por uma infraestrutura de software sensível ao contexto, capazes de permitir a interação de aplicações em dispositivos móveis de forma transparente. Kulkarni e Tripathi (2010), considerando a utilização de um sistema de middleware baseado em Active Space, propuseram um framework para o desenvolvimento de aplicações colaborativas sensíveis ao contexto a partir de suas especificações em alto nível.

No framework proposto pelos autores foi adotado um paradigma de programação generativo5, onde as especificações das aplicações sensíveis ao contexto são definidas utilizando um modelo de programação específico do domínio (expresso em XML). A partir dessas especi- ficações os ambientes de execução das aplicações são gerados e executados pelo middleware.

As aplicações, nesse caso, são especificadas a partir da abstração de “Atividade” (Activity, do inglês). Um atividade, segundo os autores, define um espaço compartilhado de objetos e um conjunto de papéis. Uma atividade define um agrupamento, ou namespace, de objetos, papéis e reações.

Um objeto, segundo a definição dos autores, é a abstração provida em uma atividade para permitir o acesso a recursos e serviços, em active spaces, necessários para as aplicações. Um papel provê um conjunto de operações e limita os privilégios dos usuários em relação a execução dessas operações em tarefas de aplicações. As operações de um papel podem envolver

uma ou várias ações e são realizadas através de chamadas aos serviços. Essas operações podem ser relacionadas com o conceito de tarefa, já apresentado na subseção 2.1.3. Já as reações possuem definição e funcionamento semelhantes às operações de papéis, diferente apenas porque estas são iniciadas com a detecção de eventos e não pela interação com algum usuário (como são nas operações de um papel).

Na figura 3.6(a) é apresentado, de forma geral, como são organizadas as formas de interação entre esses conceitos para execução de operações. Duas formas de interação são definidas, que são:

• Method Invocation Model, onde uma ação envolve apenas a invocação de métodos de um objeto (por exemplo, como ocorre em uma reação);

• Session Interaction Model, onde a invocação de uma ação resulta no inicio de um seção entre o usuário e os objetos.

Além disso, na figura 3.6(b) é ilustrado a organização desses conceitos em um estudo de caso de uma aplicação de reprodução de música móvel sensível ao contexto, descrita em (KULKARNI; TRIPATHI, 2010).

(a)Modelos de interação. (b) Visão esquemática de um o estudo de caso destacando a organização das abstrações do framework.

Figura 3.6: Visão geral da organização da proposta de (KULKARNI; TRIPATHI, 2010). Tais conceitos e estratégias de interação estabelecidos por Kulkarni e Tripathi possibilitaram a definição de um modelo de recuperação de erro para aplicações colaborativas sensíveis ao contexto. Esse modelo é considerado a principal contribuição apresentada em (KULKARNI; TRIPATHI, 2010). Ele adota uma estratégia de recuperação por avanço (foward error recovery, do inglês), que é empregada em mecanismos divididos em duas categorias: (i) tratamento síncrono de exceções e (ii) tratamento assíncrono de eventos.

Esses mecanismos permitem que as aplicações desenvolvidas tratem falhas de diferentes tipos, tais como: falhas em adaptações disparadas por condições de contexto6, falhas de ligação7de serviços, exceções levantadas pelos próprios serviços e invalidação do contexto. Em sistemas sensíveis ao contexto, é possível que adaptações no próprio sistema sejam requiridas com mudanças do contexto. Essas adaptações, no caso das aplicações colabo- rativas sensíveis ao contexto, podem implicar na busca por serviços no active space. Para os autores, falhas durante essas adaptações podem ser causadas durante a descoberta de serviços requeridos, caso não sejam encontrados serviços disponíveis no ambiente que satisfaçam as condições de busca. Já as falhas de ligação de serviços estão relacionadas a condições onde os serviços aos quais um objeto deve se “conectar” estão inacessíveis. Essa condição de inacessibilidade, por sua vez, pode ser causada, por exemplo, por problemas de conectividade na rede. As exceções levantadas pelos próprios serviços são exceções clássicas que podem ser disparadas internamente dos serviços de domínio. Por fim, a invalidação do contexto possui relação a manutenção de uma condição de contexto específica durante toda a execução de uma operação, atividade ou aplicação. Caso essa condição não seja satisfeita, a aplicação pode vir a falhar.

O modelo de recuperação de falhas por avanço de Kulkarni e Tripathi é uma solução complexa, no sentido de que envolve uma série de abstrações e níveis de escopo de tratamento de falhas. Entretanto essa solução oferece uma forma poderosa para criação de aplicações sensíveis ao contexto robustas. Algumas abstrações do modelo definido pelos autores, como as reações e os eventos de invalidação de contextos, serviram como base para criação do mecanismo de tratamento de exceções apresentado como contribuição desta dissertação.

Um aspecto a ser destacado é o trade-off8da utilização de uma abordagem genera- tivano framework desenvolvido pelos autores. Essa abordagem facilita o desenvolvimento das aplicações, uma vez que elas são geradas a partir de uma especificação de mais alto nível. Porém, essa facilidade implica na perda de flexibilidade para modificação ou extensão das aplicações geradas.

Apesar do modelo de recuperação proposto ser bastante rico e permitir lidar com vários tipos de situações excepcionais, um outro ponto importante deve ser apontado, os autores não tinham como alvo a implementação de um mecanismo capaz de atender aos requisitos de seleção de tratadores, propagação de exceções e tratamento de exceções, todas de forma sensível ao contexto de forma mais explícita. Ainda assim, o contexto é utilizado no modelo e no mecanismo dos autores como precondição para execução das operações e das ações de recuperação.

6context-driven reconfiguration, do inglês. 7Binding, do inglês.

In document Kulturarv der du bor (sider 51-55)