No mecanismo de tratamento de exceções contextuais proposto nesta dissertação, após a detecção de uma exceção contextual, é iniciado o tratamento em si. Todo o tratamento contextual, nesse caso, tem como ponto de partida comum a interação das tarefas com o com- ponente ❉❡❢❛✉❧t❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r❙❡r✈✐❝❡. Inicialmente, todas as exceções contextuais a serem tratadas são analisadas por esse serviço, com o propósito de verificar o tipo, a severidade e a disponibilidade de tratamento. Nas figuras 4.4 e 4.5, explicadas nas subseções seguintes, são apresentados os dois possíveis fluxos do tratamento de exceções contextuais. O primeiro fluxo ilustrado está relacionado ao tratamento de exceções contextuais locais, lançadas a partir da invalidação de contexto em tarefas em execução, enquanto o segundo está relacionado ao tratamento de exceções contextuais globais.
4.3.3.1 Tratamento de Exceções Contextuais Locais
No primeiro fluxo do tratamento, ilustrado na figura 4.4, ao ocorrer a invalidação no contexto de uma tarefa e o lançamento de uma exceção contextual, ocorre a propagação dessa exceção até o ❉❡❢❛✉❧t❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r❙❡r✈✐❝❡. O serviço, por sua vez, inicia o tratamento da exceção verificando se esta é uma exceção global. Pelo fato da exceção ter sido detectada a partir da invalidação no contexto de uma tarefa em execução, ela não será do tipo global. Em consequência disso, o serviço ❉❡❢❛✉❧t❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r❙❡r✈✐❝❡, que deve tratar somente exceções globais, mais severas, deve encaminhar essa exceção para um outro tratador local mais apropriado. Logo, ao se especificar e implementar uma determinada tarefa, devem-se atentar, também, para especificação e implementação de tratadores específicos para as exceções contextuais que podem ser lançadas com a detecção de condições indesejadas.
Figura 4.4: Diagrama de sequência ilustrando o fluxo de tratamento de uma exceção contextual lançada a partir da detecção de um contexto indesejado.
Os tratadores específicos são diretamente ligados às tarefas. No serviço❉❡❢❛✉❧t✲ ❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r❙❡r✈✐❝❡, ao ser requisitado o tratamento de uma exceção contextual, são informados como parâmetros a exceção contextual e a instância da tarefa. Com essas informações, esse serviço consegue localizar, a partir da referência à instância de tarefa, tratadores específicos para a exceção contextual detectada, supondo que estes tratadores tenham sido devidamente criados. No diagrama de sequência ilustrado na figura 4.4, a interface ■P❡rs♦♥❛❧✐③❡❞❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r representa o ponto de acesso a um tratador específico de uma tarefa. Todo tratador específico, no mecanismo proposto, deve ser criado a partir do■P❡rs♦♥❛❧✐③❡❞❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r.
4.3.3.2 Tratamento de Exceções Contextuais Globais
Já o segundo fluxo do tratamento, ilustrado na figura 4.5, é iniciado a partir da detecção de uma exceção contextual global e sua propagação até o serviço ❉❡❢❛✉❧t❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥✲ ❍❛♥❞❧❡r❙❡r✈✐❝❡. A análise da exceção detectada, assim como no primeiro fluxo, também será realizada no serviço. No entanto, nesse cenário, a exceção contextual detectada deve ser
tratada no próprio❉❡❢❛✉❧t❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r❙❡r✈✐❝❡, dado o tipo de exceção que ocorreu.
Figura 4.5: Diagrama de sequência ilustrando o fluxo de tratamento de uma exceção contextual global.
O mecanismo de tratamento de exceções contextuais proposto adota uma estratégia de recuperação por avanço. Considerando que uma exceção contextual tenha sido detectada durante a execução de uma tarefa, dois fluxos podem ser seguidos dependendo apenas do tipo e severidade desta exceção. Nesses fluxos, a exceção poderá ser tratada tanto pelo ❉❡❢❛✉❧t❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r❙❡r✈✐❝❡ quanto por algum componente que tenha como interface ■P❡rs♦♥❛❧✐③❡❞❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r. Entretanto, independente de qual seja o componente tratador, a tarefa em execução será interrompida e poderá ter seu fluxo de execução alterado com a adição de novos passos em seu plano de execução. Além dessa estratégia de tratamento, outras tarefas podem ser invocadas pelos tratadores a fim de prover o tratamento necessário para uma exceção contextual. Para que o mecanismo proposto consiga manter certo nível de robustez na tarefas desenvolvidas com o framework FRonTES, as ações necessárias para garantir o funcionamento adequado do sistema perante a ocorrência de exceções contextuais, globais ou não, devem estar devidamente especificadas e implementadas nos componentes tratadores.
Apesar do mecanismo proposto oferecer dois fluxos para o tratamento de exceções contextuais, sejam elas detectadas no escopo de uma tarefa ou recebidas através do SysSU (no caso das exceções globais), é possível que, mesmo com a utilização desse mecanismo em um sistema ubíquo, alguma exceção contextual não seja devidamente tratada. Essa afirmativa justifica-se com o fato de a atividade de especificar quais as possíveis exceções contextuais po- dem ser lançadas em um sistema, e a definição de quais os tratadores devem ser implementados, é atribuída aos engenheiros de software responsáveis pela especificação de robustez do sistema. De uma maneira geral, assim como apresentado na Seção 2.2.3, técnicas de preven- ção de faltas podem ser utilizadas em tempo de projeto para evitar a ausência de tratamento para comportamentos excepcionais de um sistema. A verificação formal sobre a especificação das exceções contextuais e seus tratadores representa uma dessas técnicas. Esse aspecto do
tratamento de exceções sensível ao contexto para sistemas ubíquos não está no escopo desta dissertação, mas é abordado em (ROCHA; ANDRADE, 2012).
No mecanismo proposto, para lidar com o possível cenário onde uma exceção contextual é lançada e o seu tratamento não é fornecido, é utilizada a funcionalidade de propagação de exceções contextuais no SysSU. Nesse caso, as tarefas são interrompidas e a exceção causadora é sinalizada no ambiente. Essa capacidade de propagar exceções con- textuais não tratadas pode ser utilizada como forma de sinalizar a necessidade de tratamento no ambiente. Com esse cenário de propagação de exceções contextuais no ambiente, torna- se possível a adição de novos agentes capazes de tratar exceções contextuais cujo tratamento estivesse insuficiente, mesmo após a implantação de um sistema ubíquo. Esses agentes podem ser chamados de tratadores de exceções globais, pois não são relacionados exclusivamente a alguma tarefa específica.
Os tratadores de exceções globais, apesar de receberem nomenclatura diferenciada, são agentes que adotam a mesma organização arquitetônica, já apresentada na seção 4.2, e adotam o mesmo mecanismo proposto para o tratamento de exceções contextuais. Entretanto, as exceções contextuais cujo tratamento fosse inexistente ou ineficaz em um determinado sistema devem estar previstas nos componentes ❉❡❢❛✉❧t❈♦♥t❡①t✉❛❧❊①❝❡♣t✐♦♥❍❛♥❞❧❡r❙❡r✈✐❝❡ e ❊①❝❡♣t✐♦♥▼❛♥❛❣❡r❙❡r✈✐❝❡ desses agentes. Todos os fluxos de detecção, propagação e tratamento já apresentados nesta seção possuem funcionamento semelhante nestes agentes. 4.4 Conclusão
Neste capítulo foi apresentada a arquitetura adotada para implementação do mecanismo pro- posto. Essa arquitetura, materializada através do framework FRonTES, garante a flexibilidade necessária para a criação de sistemas ubíquos orientado a tarefas com suporte ao tratamento de exceções sensível ao contexto. Além disso, essa estratégia de disponibilização do mecanismo proposto permite a reutilização de componentes prontos, facilitando o desenvolvimento e a utilização do princípio de inversão de controle, evitando que o usuário do mecanismo tenha que se preocupar com o controle do fluxo de execução dos sistemas ubíquos desenvolvidos.
Para implementação do framework, um sistema de suporte para computação ubíqua, o SysSU, foi reusado como infraestrutura de software para comunicação dos agentes que compõem os sistema ubíquos desenvolvidos e para propagação de informações de contexto e de exceções contextuais.
Além disso foi apresentado o mecanismo de tratamento de exceções sensível ao contexto, que é a principal contribuição deste trabalho. O mecanismo proposto fornece a capacidade de tratar exceções de forma sensível ao contexto através de três funcionalidades: detecção, propagação e tratamento de exceções contextuais.
Com a utilização da funcionalidade de detecção de exceções contextuais torna- se possível o tratamento de situações indesejadas, caracterizadas por expressões compostas por informações de contexto que são verificadas a cada alteração relevante no estado do contexto. O tratamento dessas exceções contextuais, utilizando o mecanismo, é especificado
programaticamente, podendo adaptar-se levando em consideração o tipo de exceção e o contexto que a ativou. O tratamento de uma exceção contextual pode requerer desde a adaptação de uma tarefa, com a mudança no fluxo dos passos que devem ser executados, até o lançamento de outras tarefas. Já a propagação de exceções contextuais possibilita a busca de tratadores para exceções contextuais que não tiveram o seu tratamento especificado em um determinado escopo, ou que o tratamento especificado não foi capaz de lidar de maneira adequada.
Por essa dissertação apresentar uma natureza exploratória a respeito do tratamento de exceções sensível ao contexto em sistemas ubíquos orientados a tarefas, não explorados em conjunto anteriormente na literatura revisada, não foi realizada uma análise quantitativa dos benefícios da utilização do mecanismo proposto. Todavia, o objetivo principal desta dissertação é ratificado ao apresentar um mecanismo capaz de suportar o tratamento de exceções sensível ao contexto em sistemas ubíquos, facilitando o desenvolvimento desse tipo de sistema através das abstrações e funcionalidades providas.
O próximo capítulo apresenta, como prova de conceito para demonstração do mecanismo proposto, o desenvolvimento de um sistema ubíquo orientado a tarefas o qual apresenta-se propício para avaliação do mecanismo de tratamento de exceções contextuais proposto.
5 PROVA DE CONCEITO
Neste capítulo é apresentado uma prova de conceito (PoC1) sobre a implementação do Ubi- Parking, um sistema de estacionamento ubíquo, cuja tarefa P❛r❦✐♥❣❚❛s❦ é diversas vezes referenciada em exemplos apresentados nesta dissertação.
Na Seção 5.1 é apresentada uma breve comparação entre os conceitos “estudo de caso” e “prova de conceito”. Na Seção 5.2 é descrito o cenário de aplicação do UbiParking e são delineadas algumas funcionalidades desse sistema. Além disso são apresentadas possíveis situações excepcionais que podem afetar o cumprimento dos objetivos dos usuários desse sistema. Na Seção 5.3 é descrito como o UbiParking é instanciado a partir do FRonTES e como ele faz uso do mecanismo de tratamento de exceções proposto nesta dissertação. Finalmente, a Seção 5.4 apresenta as considerações finais deste capítulo.