Uso e Representação de Contexto em Sistemas...

40
Capítulo 1 Uso e Representação de Contexto em Sistemas Computacionais Vaninha Vieira, Damires Souza, Ana Carolina Salgado e Patricia Tedesco Abstract The massive amount of available information, together with the users’ needs to accomplish increasingly complex tasks in short periods of time, present computer systems with a new challenge: how to lessen the users’ need to explicitly interact with the systems in order to obtain what s/he wants. Context is what underlies the ability to identify what is or is not relevant in a given moment, and it enables systems to filter and disseminate more relevant information and to adapt their services to users’ needs, providing better, flexible, and easier to use interfaces. However, managing context entails the development of several additional tasks, such as context acquisition, representation, storage, processing, and usage. This text presents an overview of the concept of context applied to computer systems and discusses the following issues: how context is defined and how it influences different domains of Computing; what are the requirements to develop a context-sensitive system and which techniques could be used to model context. Lastly, but by no means least, the text shows examples of context usage in existing applications and discusses the challenges and open research avenues regarding using context in computing systems. Resumo A enorme quantidade de informação disponível, e a necessidade dos usuários de realizar tarefas complexas em pouco tempo apresentam aos sistemas computacionais um novo desafio: como diminuir a necessidade do usuário interagir explicitamente com o sistema para obter o que deseja. Contexto é o que está por trás da habilidade de definir o que é ou não relevante em um dado momento, e permite que os sistemas filtrem e disseminem informações mais úteis e adaptem seus serviços às necessidades do usuário, provendo interfaces melhores, mais flexíveis e fáceis de usar. Entretanto, gerenciar o contexto implica na implementação de diversas tarefas, tais como aquisição, representação, armazenamento, processamento e uso do contexto. Este texto apresenta uma visão geral do conceito de contexto aplicado a sistemas computacionais

Transcript of Uso e Representação de Contexto em Sistemas...

Capítulo

1

Uso e Representação de Contexto em Sistemas Computacionais

Vaninha Vieira, Damires Souza, Ana Carolina Salgado e Patricia Tedesco

Abstract

The massive amount of available information, together with the users’ needs to accomplish increasingly complex tasks in short periods of time, present computer systems with a new challenge: how to lessen the users’ need to explicitly interact with the systems in order to obtain what s/he wants. Context is what underlies the ability to identify what is or is not relevant in a given moment, and it enables systems to filter and disseminate more relevant information and to adapt their services to users’ needs, providing better, flexible, and easier to use interfaces. However, managing context entails the development of several additional tasks, such as context acquisition, representation, storage, processing, and usage. This text presents an overview of the concept of context applied to computer systems and discusses the following issues: how context is defined and how it influences different domains of Computing; what are the requirements to develop a context-sensitive system and which techniques could be used to model context. Lastly, but by no means least, the text shows examples of context usage in existing applications and discusses the challenges and open research avenues regarding using context in computing systems.

Resumo

A enorme quantidade de informação disponível, e a necessidade dos usuários de realizar tarefas complexas em pouco tempo apresentam aos sistemas computacionais um novo desafio: como diminuir a necessidade do usuário interagir explicitamente com o sistema para obter o que deseja. Contexto é o que está por trás da habilidade de definir o que é ou não relevante em um dado momento, e permite que os sistemas filtrem e disseminem informações mais úteis e adaptem seus serviços às necessidades do usuário, provendo interfaces melhores, mais flexíveis e fáceis de usar. Entretanto, gerenciar o contexto implica na implementação de diversas tarefas, tais como aquisição, representação, armazenamento, processamento e uso do contexto. Este texto apresenta uma visão geral do conceito de contexto aplicado a sistemas computacionais

e discute: como o contexto é definido e como ele influencia diferentes domínios da computação; quais os requisitos para construir um sistema sensível ao contexto e as técnicas que podem ser utilizadas para modelar o contexto. Por fim, o texto exibe exemplos de uso do contexto em aplicações existentes e discute desafios e direções de pesquisa relativos ao uso do contexto em sistemas computacionais.

1 Introdução O desenvolvimento de aplicações computacionais cada vez mais complexas e, ao mesmo tempo, adaptáveis e flexíveis, demanda a criação de mecanismos que aprimorem seus serviços, enriqueçam sua semântica e provejam funcionalidades que aproximem mais o “homem” da “máquina”, de maneira transparente. Atualmente, os usuários ainda precisam se esforçar muito informando suas preferências de uso, indicando o que precisam, configurando parâmetros sobre como um serviço deve ser apresentado, respondendo perguntas, enfim transmitindo idéias acerca da atividade que está realizando ou que pretende realizar. O ideal seria que os sistemas computacionais percebessem a intenção do usuário e, com isso, minimizassem suas tarefas e a necessidade de especificar tudo o que deseja que o sistema faça por ele.

As pessoas utilizam, diariamente, informações contextuais para tomar decisões, fazer julgamentos ou interagir com outras pessoas. Entender o contexto em que ocorre uma determinada interação é fundamental para que os indivíduos possam responder de maneira apropriada à situação. Por exemplo, quando uma pessoa está em um estádio de futebol ou em um cinema ele sabe que o seu comportamento deve ser bem diferente em cada um desses locais. Enquanto no cinema ele deve desligar o celular, não fazer barulho e permanecer sentado, no estádio ele pode gritar, pular e vibrar com o seu time e o celular pode ser utilizado sem ressalvas. O contexto ajuda, também, a diminuir ambigüidades e conflitos em uma conversa, pois mensagens trocadas para comunicação trazem embutido um contexto associado que apóia sua compreensão. Por exemplo, em uma sala de aula se um colega diz a um outro: “você me empresta o material da aula que eu faltei”, essa mensagem por si só, sem contexto, traz pouca semântica. Que material? De que aula? Quando ele falou? No entanto, considerando que eles estejam assistindo a uma aula pode-se inferir que o material se refere àquela disciplina.

Dessa maneira, contexto é o que está por trás da habilidade de discriminar o que é ou não importante em um dado momento e, com isso, permite ajudar indivíduos a melhorar a qualidade da conversação e a compreender certas situações, ações ou eventos. Contexto pode ser visto como um conjunto de condições relevantes e influências que tornam uma situação única e compreensível [Brézillon 1999]. Essa situação pode referir-se a um ator (que pode ser uma pessoa ou um grupo de pessoas, em aplicações colaborativas), um objeto físico, uma entidade computacional, entre outros. De maneira geral, as informações contextuais podem ser identificadas a partir de seis dimensões básicas, bastante referenciadas na literatura e conhecidas como 5W+1H (ex. [Morse et al. 2000; Truong et al. 2001]): tempo (when), localização (where), identificação (who), atividade (what), motivação por trás das ações (why) e o meio (how), que identifica como os elementos de contexto são coletados.

Em sistemas computacionais, o contexto é uma importante ferramenta de apoio à comunicação entre os sistemas e seus usuários. Compreendendo o contexto, o sistema pode se adaptar e mudar sua seqüência de ações, o estilo das interações e o tipo da

informação fornecida aos usuários, em circunstâncias diversas. Além disso, o contexto auxilia os sistemas a, dinamicamente, habilitar ou desabilitar serviços e funcionalidades. Sistemas que utilizam o contexto para direcionar suas ações e comportamento recebem o nome de sistemas sensíveis ao contexto.

Weiser (1991) visualizou ambientes físicos com dispositivos computacionais integrados que ajudariam as pessoas em suas tarefas diárias, fornecendo-lhes informações e serviços de forma contínua e onipresente, o mais transparente possível. Aliado a essa visão, a rápida disseminação de tecnologias de redes sem fio, dispositivos que embutem sensores ou outros mecanismos de percepção, e a convergência entre multimídia, interação e Web têm fomentado o desenvolvimento de aplicações que fornecem assistência, serviços personalizados e capacidade de reagir às variações dinâmicas do ambiente, com a mínima participação do usuário.

Diante disso, tem sido grande o interesse no desenvolvimento de aplicações sensíveis ao contexto. Um exemplo é o Dynamic Tour Guide (DTG) [Kramer et al. 2005], que é um sistema composto por agentes que provêem um roteiro personalizado, um guia navegacional e um conjunto de informações ambientais ao usuário-turista. A indicação personalizada de roteiros e pontos turísticos é realizada através da análise da informação contextual disponível para uma dada localização, em um determinado momento. Assim, informações como o período de tempo disponível para o passeio, a localização corrente (ex. pontos turísticos próximos), a data (ex. dia ou estação do ano), os interesses pessoais do usuário e a velocidade possível para a caminhada, são levadas em consideração para que o sistema reaja de forma compatível com o contexto.

As áreas da Computação Ubíqua e Inteligência Artificial foram as pioneiras nos estudos e utilização do conceito de contexto (e.g. [Chen e Kotz 2000; McCarthy 1993]), e com isso foram as que demonstraram o potencial da aplicação desse conceito nos sistemas computacionais. Pesquisas recentes vêm utilizando o conceito de contexto para beneficiar sistemas ligados a outras áreas como, por exemplo: sistemas colaborativos, melhorando os serviços de percepção e provendo assistência aos grupos; hipermídia adaptativa, possibilitando a personalização e adaptação do conteúdo de sites web; integração de dados, facilitando a resolução de conflitos semânticos; entre outras. A interação dos usuários com sistemas que incorporam contexto tende a ser melhor e mais intuitiva, uma vez que esses sistemas podem adaptar suas interfaces aos usuários com os quais está interagindo, o que beneficia projetos de interação humano-computador.

Entretanto, conhecer o contexto de um usuário, um dispositivo ou uma interação, identificar o que é relevante ou não e o que pode ser utilizado para gerar novas interpretações representa uma tarefa não trivial em sistemas computacionais. É preciso definir o que exatamente considerar como contexto, onde este se aplica e que informações são necessárias para descrevê-lo. Faz-se necessário viabilizar formas de adquirir o contexto do usuário o mais automaticamente possível, sem que o mesmo tenha que ser questionado insistentemente, possivelmente por meio de técnicas de monitoramento. Mecanismos de raciocínio e inferência devem ser implementados, pois nem todo tipo de contexto pode ser obtido diretamente das variáveis passíveis de monitoramento disponíveis em um ambiente. Com essa inferência, questões como tratamento da incerteza e qualidade do contexto devem ser consideradas, bem como um modelo formal para representação do mesmo. O monitoramento traz, ainda, questões como a necessidade de manter a segurança e privacidade dos usuários. Dessa forma, um

desafio chave nos sistemas computacionais atuais é como capturar, processar e utilizar o contexto de modo a criar aplicações mais flexíveis e adaptativas.

O presente texto tem por objetivos: apresentar uma visão geral do conceito de contexto e como algumas áreas da computação interpretam e utilizam esse conceito (Seção 2); descrever o que são sistemas sensíveis ao contexto e discutir os requisitos necessários para o seu desenvolvimento (Seção 3); abordar técnicas existentes para representar as informações contextuais (Seção 4); apresentar as funcionalidades e serviços sensíveis ao contexto de algumas aplicações (Seção 5); e, apresentar as considerações finais e discutir desafios e oportunidades de pesquisa na área (Seção 6).

2 O Conceito de Contexto As atividades cotidianas dos seres humanos demandam algum tipo de comunicação. Quando duas pessoas se comunicam, naturalmente, observam o contexto sobre o qual a comunicação ocorre. Para isso, levam em consideração a riqueza da linguagem que compartilham, o entendimento comum de como o mundo funciona e o entendimento implícito das situações do dia a dia [Dey e Abowd 2000].

Embora seja um conceito presente e conhecido nas interações entre pessoas, contexto ainda é um tópico pouco explorado nas interações entre pessoas e computadores. Os sistemas computacionais, em geral, não levam em consideração o contexto do usuário com quem estão interagindo e atuam de uma mesma maneira, pré-programada, sem discriminar necessidades e restrições correntes do mesmo. Por exemplo, se dois alunos buscam um material para estudo sobre agentes inteligentes, caso os dois informem as mesmas palavras-chave o engenho de busca retornará exatamente os mesmos resultados para ambos, independente do nível de conhecimento dos alunos no assunto, do idioma que eles estão aptos a falar, ou do nível do material retornado. O conhecimento do contexto permite que os sistemas ofereçam serviços e informações que sejam mais relevantes aos seus usuários. Se o engenho de busca do exemplo conhecesse o contexto de cada usuário, poderia personalizar a busca e priorizar materiais mais adequados aos interesses de cada aluno.

O conceito de contexto tem sido objeto de estudo em diversas áreas, como a Psicologia Cognitiva, a Lingüística e também a Computação. O reconhecimento da importância do contexto motivou pesquisadores de diversas áreas da computação, como Inteligência Artificial, Computação Ubíqua, Interação Humano-Computador, Sistemas Colaborativos, Hipermídia Adaptativa, entre outras, a estudar esse conceito e pesquisar como ele pode ser formalizado e utilizado pelos sistemas computacionais.

A definição do que é contexto e o que ele engloba, pensando em sistemas computacionais, ainda não é um consenso entre os pesquisadores. Uma definição clássica e bastante referenciada é a proposta por Dey e Abowd (2000), para os quais “Contexto é qualquer informação que caracteriza a situação de uma entidade, onde uma entidade é uma pessoa, lugar ou objeto considerados relevantes para a interação entre um usuário e uma aplicação, incluindo o próprio usuário e a aplicação. O contexto é tipicamente a localização, a identidade, e o estado das pessoas, grupos e objetos físicos e computacionais”.

Na área da Inteligência Artificial, Brézillon (1999) define contexto como “o que restringe a solução de um problema sem, entretanto, interferir nele explicitamente” ou

como “uma coleção de condições relevantes e influências que tornam uma situação única e compreensível”. Gross e Prinz (2003), na área de Sistemas Colaborativos, definem contexto como “as condições (i.e., circunstâncias como tempo e localização) inter-relacionadas (i.e., algum tipo de continuidade no sentido mais amplo) na qual alguma coisa (e.g., um usuário, um grupo ou um artefato) existe (e.g., presença) ou ocorre (e.g., uma ação executada por um ator)”. Alarcón et al. (2005) argumentam que a pesquisa sobre contexto concorda em dois aspectos: primeiro, o contexto é relativo a tudo que cerca alguma coisa, onde essa “coisa” é uma situação, uma atividade, uma idéia, porém não a “coisa” em si; segundo, o contexto compreende um conjunto de elementos inter-relacionados que mantém um relacionamento coerente, onde tal relacionamento traz um significado específico para a “coisa”.

Como é possível perceber, existem várias definições propostas para o conceito de contexto, algumas complementares, outras limitadas à área da Computação que buscam apoiar. Bazire e Brézillon (2005) coletaram um conjunto de aproximadamente 150 definições de contexto, vindas de diferentes domínios e chegaram a duas conclusões principais: (1) o contexto atua como um conjunto de restrições que influenciam o comportamento de um sistema embutido em uma dada tarefa; e (2) a definição de contexto depende da área de conhecimento à qual pertence.

2.1 Diferentes Visões

Diversos domínios da Computação vêm aprimorando suas pesquisas no sentido de utilizar a informação contextual como meio de otimizar a resolução dos seus problemas e prover a suas aplicações adaptabilidade, percepção e mais semântica. Cada domínio demanda diferentes utilizações para o contexto. Essa seção discute um pouco como o contexto vem sendo utilizado em algumas dessas áreas.

2.1.1 Inteligência Artificial

A Inteligência Artificial (IA) realiza pesquisa sobre contexto desde os anos 80, sendo considerada a primeira grande área do conhecimento, dentro da computação, a estudar esse conceito. McCarthy (1993) acreditava que sistemas desenvolvidos na IA sofriam por excesso de generalidade. Um exemplo de como contexto poderia auxiliar a IA é o sistema MYCIN que inicialmente indicava tratamento para doenças infecciosas e meningite a partir do resultado do exame de sangue [Akman e Surav 1997]. Neste exemplo, caso o resultado do exame comprovasse a presença de Cholerae Vibrio em seu intestino, o sistema recomendaria duas semanas de tetraciclina. Contudo, enquanto o remédio combatia o mal, o paciente sofria com diarréia e desidratação, mas o sistema não era sensível a esses fatores. Uma versão sensível ao contexto do MYCIN iria, além de verificar o resultado do exame, capturar o estado do paciente, o risco de desidratação e sugerir um tratamento e acompanhamento de acordo com o “contexto” do paciente.

Um estudo realizado por McCarthy (1993) buscou formalizar a teoria de contexto e tem sido instrumento de inspiração para novas pesquisas. Sua idéia é que ao definir um axioma, ele somente é verdade dentro de um contexto, podendo ser falso em outro. Assim, ele denota uma “verdade relativizada dentro de um contexto” como um predicado especial ist(c,p) que significa que a proposição p é verdadeira (is true) dentro do contexto c. Um exemplo de um axioma associado a um contexto é:

C’: ist(contexto-de(“Histórias de Sherlock Holmes”),(“Holmes é detetive”))

Esse exemplo indica que o predicado “Holmes é detetive” é verdadeiro se o contexto for “Histórias de Sherlock Holmes”.

Segundo pesquisadores da área [Akman e Surav 1997; Brézillon 1999], a IA pode ser beneficiada com o uso de contexto em diversos subdomínios, como representação do conhecimento, processamento de linguagem natural, reconhecimento de padrões, entre outras. Um exemplo diz respeito à área de processamento de linguagem natural, onde o contexto deve ser utilizado como forma de prover informações que o usuário necessite, facilitando seu entendimento e aprendizado. Além disso, pode auxiliar na redução de ambigüidades lingüísticas.

2.1.2 Computação Ubíqua

Juntamente com a IA, a Computação Ubíqua é uma das principais áreas que fizeram com que a pesquisa sobre contexto se expandisse. O objetivo principal da Computação Ubíqua é permitir a disponibilidade dos sistemas “a qualquer hora e em qualquer lugar”. Dessa maneira, sistemas ubíquos devem estar preparados para intermediar não apenas a comunicação entre o usuário e o computador, mas também entre dispositivos e devem levar em consideração a mobilidade constante desses usuários e dispositivos. Compreender o contexto atual dos indivíduos e dispositivos se torna, pois, um fator de extrema necessidade para que esses sistemas possam atender seus objetivos.

Um exemplo, cada vez mais comum, de sistemas sensíveis ao contexto são aqueles que usam dispositivos móveis acoplados a sensores GPS1. Esses sensores obtêm a localização geográfica do usuário, o que permite ao sistema oferecer-lhe informações direcionadas ao local em que ele se encontra, como informações turísticas, mapas com melhores rotas para um destino, entre outras. Outro uso típico do contexto na computação ubíqua é na construção de ambientes, como as casas inteligentes. Nessas casas, o contexto permite que aparelhos domésticos, como telefone, interruptor de luz ou cortinas, funcionem de forma pró-ativa de acordo com o contexto da casa e dos seus moradores. Por exemplo, o telefone pode direcionar chamadas para a secretária eletrônica quando o morador estiver dormindo, ou pode aumentar o volume da campainha quando ele estiver na cozinha fazendo o jantar.

Um dos primeiros trabalhos a conceituar contexto em computação ubíqua foi realizado pelo grupo de Schilit (1994) que definia contexto como a localização, identificação dos grupos de pessoas envolvidas e objetos próximos e as mudanças que aconteciam nessas entidades. Para eles, três aspectos de contexto são considerados essenciais: onde se está, com quem se está e quais recursos estão disponíveis (próximos). Além da localização, devem ser consideradas questões como conectividade, custos de comunicação, pessoas próximas ao usuário, por exemplo, se o usuário se encontra junto a seu chefe ou a um colega de trabalho.

2.1.3 Interação Humano-Computador

A interface de um sistema computacional pode ser tratada como um meio de comunicação, tal como o jornal, a televisão ou o rádio [de Souza 2005]. O projetista da

1 Global Positioning System, sistema de navegação por satélite que permite obter as coordenadas geográficas de qualquer ponto do globo terrestre.

interface (emissor) utiliza uma série de signos convencionados (códigos) para compor uma mensagem de como o usuário (receptor) pode utilizar o produto através da interface (canal). Com exceção do designer, tudo está inserido em um determinado contexto circunstancial, que abrange desde o próprio estado do sistema até a cultura local do usuário. Assim, na visão da área de Interação Humano-Computador (IHC), contexto é uma informação implícita que pode ser utilizada para interpretar ações explícitas e melhorar a comunicação entre usuários e aplicações [Moran e Dourish 2001].

A interação com o usuário deve ser mantida o mais flexível possível, através de modalidades múltiplas como Web, voz e tato, de modo que preferências e capacidades dos usuários possam ser identificadas. Dessa maneira, consideram-se como elementos do contexto nesses ambientes, informações relativas ao indivíduo, como preferências, se o mesmo possui algum problema físico que exija uma interface especial com o sistema e o seu histórico de utilização da aplicação, que permita identificar funcionalidades mais ou menos relevantes para ele. A idéia é que a interface se adapte às necessidades do usuário, de forma não intrusiva, provendo feedback das suas ações e solicitando deferimento em casos de conflito. Utilizar informações contextuais relativas ao usuário e ao ambiente que o cerca resulta em um maior grau de usabilidade, de maneira intuitiva, menos intrusiva, onde o usuário é poupado de responder, continuamente, a um conjunto de perguntas ou preencher parâmetros de especificação de uso.

2.1.4 Sistemas Colaborativos

A área de pesquisa sobre Sistemas Colaborativos também pode ser enriquecida com a utilização do contexto. Criar um ambiente de trabalho colaborativo efetivo é uma questão de facilitar o contato e a comunicação entre os atores, a compreensão mútua e o compartilhamento do conhecimento [Brézillon e Araújo 2005]. O uso do contexto pode ser bastante útil para viabilizar todas essas tarefas e, com isso, aumentar a produtividade do grupo, a qualidade do trabalho, e tornar os usuários mais motivados a interagir.

Conhecer o contexto que cerca uma interação é muito útil para os usuários participantes dela, uma vez que facilita o entendimento dos eventos ocorridos, a comunicação entre os participantes e, consequentemente, a execução do trabalho da equipe, ampliando a compreensão da interação. Usuários que compartilham um contexto possuem mais facilidades para interpretar dados do que aqueles em contextos divergentes [Brézillon e Araújo 2005]. O contexto ajuda, também, a identificar relações sociais, uma vez que o conhecimento do contexto é uma forma de estabelecer e reforçar relações de confiança e de reputação entre os membros do grupo.

Em sistemas colaborativos, o contexto pode ser relativo ao grupo (ex. porque o grupo foi constituído), aos membros individuais do grupo (ex. seu perfil técnico) e ao projeto em si (ex. seu objetivo) [Borges et al. 2004], entre outros. Podemos classificar informações contextuais em sistemas colaborativos como relativas: ao ambiente físico onde cada indivíduo do grupo se encontra (ex. localização, tempo, dispositivos existentes); à constituição organizacional do grupo (ex. quem é o grupo, quais são os participantes, que papéis desempenham em quais tarefas planejadas); e às interações ocorridas e em andamento pelo grupo (ex. tarefas realizadas, artefatos compartilhados e ferramentas de groupware utilizadas) [Vieira et al. 2005].

2.1.5 Hipermídia Adaptativa

A pesquisa em Hipermídia Adaptativa (HA) situa-se na fronteira dos estudos em hipermídia e modelagem do usuário, sendo estes os dois pilares básicos que sustentam o desenvolvimento de aplicações nesta área [Palazzo 2006]. Assim, os sistemas de HA estão relacionados às tecnologias de modelagem de usuários e grupos, bancos de dados, programação distribuída na web, métodos colaborativos e interfaces dinâmicas adaptativas e são especialmente úteis quando há a necessidade de disponibilizar informação seletiva e contextual a usuários com diferentes objetivos e níveis de conhecimento. Dessa maneira, também neste domínio, o conceito de contexto pode exercer um papel fundamental, pois ajuda a determinar o que é ou não relevante de acordo com o modelo do usuário.

Sistemas baseados na web que fazem uso de HA podem se beneficiar do uso de contexto como forma de otimizar tanto a apresentação quanto a navegação adaptativa. O contexto do usuário permite que tais sistemas adaptem seus conteúdos ao usuário, habilitando, incluindo ou removendo hyperlinks das páginas de acordo com o que é mais relevante para ele. Um exemplo ocorre na otimização e melhoria de consultas através de engenhos de busca. Na maioria das vezes, para realizar suas buscas, os usuários devem informar palavras-chave, que afetam diretamente a precisão e qualidade dos resultados retornados [Srivastava et al. 2000]. Informações sobre o contexto do usuário (atual e/ou histórico) podem ser usadas como um conhecimento adicional para tornar os resultados dos engenhos de busca mais próximos do que o usuário deseja, sem que o usuário necessite informar diretamente esses critérios para auxiliar na sua busca.

2.1.6 Discussão

Apesar das diferentes visões sobre contexto, existe consenso em relação a algumas idéias [Zacarias et al. 2004]: (i) a natureza relacional do contexto, ou seja, o contexto não é uma entidade autônoma mas existe, apenas, quando relacionado a uma entidade; (ii) o contexto é abordado como uma coleção de itens (ex. conceitos, regras, recursos, proposições e suposições) associados a uma situação específica (ex. ambiente, domínio, tarefa, agente e interação). Dessa maneira, o contexto pode ser visto como um conjunto de características situacionais, parâmetros ou dimensões. Isso significa que se uma determinada informação pode ser usada para caracterizar uma situação, então essa pode vir a ser uma informação contextual. Por exemplo, o fato de estar chovendo ou não. Em um sistema acoplado a um automóvel, essa informação é relevante visto que a chuva implica na visibilidade, na velocidade ou na escolha de local para estacionar; por outro lado, em um sistema voltado para um museu, essa informação deixa de ser relevante, pois o museu é um prédio coberto e, portanto, ela não deve ser considerada no contexto.

Dessa maneira, o conceito de contexto pode ter diferentes visões e aplicações, mas a sua base teórica é comum a todas as áreas. Muitas das definições originadas em cada área de conhecimento se tornam comuns a outras, de forma a se complementarem. Assim, por exemplo, o conceito de verdade relativizada oriunda da IA indica a mesma semântica obtida na definição de Dey e Abowd (2000) (qualquer informação que pode ser usada para caracterizar a situação de uma entidade), de modo que a partir dessas definições, classificações de contexto surgiram e mostram o amadurecimento das mesmas independentemente da área que as originaram. Essas diferentes classificações são apresentadas na próxima seção.

2.2 Classificação das informações contextuais

Um grande desafio ao desenvolver um sistema sensível ao contexto é delimitar as ações dependentes de contexto nesses sistemas e identificar os elementos contextuais que caracterizam a situação em que essas ações são executadas. Por sua natureza inerentemente dinâmica, na maioria dos casos é muito difícil, ou mesmo impossível, para o projetista de uma aplicação sensível ao contexto, enumerar o conjunto de estados contextuais que podem existir na aplicação, identificar que informação pode determinar com precisão um estado contextual desse conjunto e definir que ações devem ser executadas em um estado particular [Greenberg 2001].

Korpipää et al. (2003) definiram alguns critérios para identificar o que escolher como elemento contextual ao construir uma aplicação sensível ao contexto: (i) habilidade para descrever propriedades úteis do mundo real; (ii) habilidade para inferência de contextos complexos; e (iii) facilidade ou viabilidade de ser medido ou reconhecido, automaticamente, da forma o mais precisa e não ambígua possível.

Visando facilitar a identificação do que considerar como contexto foram propostas diversas classificações para as informações contextuais. Essas classificações separam as informações contextuais segundo critérios diversos, como: as dimensões dos elementos de contexto referentes às questões que cada elemento visa responder; o nível de granularidade da informação; sua periodicidade de atualização e sua relevância em relação ao foco de atenção do usuário. Essas classificações são detalhadas a seguir.

2.2.1 Dimensões dos Elementos de Contexto

Um elemento de contexto pode ser analisado segundo 6 dimensões denominadas 5W+1H [Morse et al. 2000; Truong et al. 2001] que visam responder às questões quem (who), está fazendo o que (what), em que local (where), em que momento (when), quais são suas intenções (why) e como as informações serão capturadas (how). Essas questões são consideradas básicas para contextualizar uma situação e abrigam, de forma geral, todos os possíveis atributos contextuais. Seus significados são descritos a seguir:

• Who (identificação): indica informações contextuais sobre entidades (ex. usuários, objetos físicos ou computacionais) envolvidas numa determinada tarefa. Exemplos de informações de identificação de usuários incluem nome, email, voz e impressão digital;

• Where (localização): determina o contexto de localização, um dos mais usados na área da computação ubíqua. Contém dados como longitude, latitude e cidade;

• What (atividade): identifica o que está sendo realizado pelo usuário. Pode se tornar uma tarefa complexa adquirir esta informação, principalmente em sistemas com atividades muito variadas. Exemplos de atividades são: uma palestra sendo proferida, o projeto de uma aplicação realizado em grupo e a pesquisa em um engenho de busca;

• When (tempo): indica o contexto temporal como, por exemplo, a data corrente, a estação do ano, ou por quanto tempo um usuário desempenhou uma tarefa;

• Why (motivação): indica a motivação do usuário ao executar uma atividade, ou seja, porque ela é necessária. Obter informações contextuais que possam caracterizar o raciocínio de uma pessoa é talvez o maior desafio da computação

sensível ao contexto. É geralmente realizada a partir da combinação de diversas outras informações contextuais, como, por exemplo, se o usuário sempre busca CDs de MPB, o sistema pode inferir que ele tem esta preferência, podendo sugerir outros CDs referentes ao mesmo estilo musical;

• How (meio): define a forma como os elementos de contexto serão coletados. Por exemplo, na computação ubíqua, dispositivos como GPS são utilizados para realizar a aquisição do contexto de localização.

2.2.2 Granularidade

Quanto à sua granularidade, cada elemento de contexto pode ser classificado como: contexto básico (ou de baixo nível) e contexto complexo (ou de alto nível) [Wang et al. 2004]. Contextos básicos referem-se a elementos de granularidade mais baixa e que podem ser identificados de forma automática, por exemplo, por meio de sensores, e incluem elementos como: a identidade de atores ou de dispositivos, sua localização (geográfica ou virtual), o tempo (ex. dia, hora, estação do ano), entre outros.

Contextos complexos são formados a partir da composição e/ou inferência sobre vários elementos de baixo nível, e podem ser a atividade do indivíduo (ex. falando, lendo, caminhando), situações sociais (ex. com quem o usuário está), atividades sociais (ex. em reunião, ministrando aula), e outras. Por exemplo, a partir de contextos básicos como a sala onde um usuário está e a indicação de outras pessoas presentes na sala pode-se inferir que o usuário está em reunião.

2.2.3 Periodicidade de Atualização

Cada elemento de contexto, básico ou complexo, pode ser identificado quanto à sua periodicidade de atualização e classificados como estáticos e dinâmicos [Hong e Landay 2004]. Contexto estático indica as informações contextuais que, em geral, são fixas e não mudam muito frequentemente, como dados pessoais do usuário (ex. data de nascimento, cidade natal, país de origem, idiomas que fala), localização de monumentos em uma cidade, entre outras. Contexto dinâmico refere-se a elementos de contexto que mudam quase que instantaneamente e que necessitam ser constantemente monitorados e atualizados, como a localização física de um indivíduo e sua atividade atual.

2.2.4 Relevância em Relação ao Foco de Atenção

Uma outra classificação do contexto, proposta por Brézillon e Pomerol (1999) trata do problema da relevância do contexto em relação ao foco de atenção atual do usuário. Eles argumentam que o contexto não pode ser considerado de forma isolada, mas deve sempre ser visto como relativo a um foco. Esse foco pode ser, por exemplo, uma tarefa, a solução de um problema ou uma tomada de decisão. O foco determina, em relação ao contexto, o que pode ser considerado como relevante. Assim, a partir do foco, o contexto é classificado em três partes distintas, como mostra a Figura 1: conhecimento contextual (CK – Contextual Knowledge), conhecimento externo (EK – External Knowledge) e contexto procedimental (PC - Proceduralized Context).

Conhecimento Externo

Foco

Contexto Procedimental

Conhecimento Contextual

Figura 1. Tipos de Contexto e suas Dinâmicas [Brézillon e Pomerol 1999]

O EK representa a parte do contexto que não tem qualquer relevância com o foco. Por exemplo, supondo que o foco do usuário seja encontrar especialistas para apoiá-lo em sua tarefa de desenvolvimento de um software, o EK inclui elementos como peso, idade e estado civil do usuário, que são informações contextuais, porém não relevantes para apoiá-lo em sua tarefa.

CK representa o contexto que é relevante para o foco de atenção, que tem uma forte relação com o foco, mas que, no entanto, não é considerado diretamente nele. No exemplo anterior, o conjunto de CK incluiria informações como a localização do usuário, sua presença, disponibilidade, habilidades, reputação e experiência. Essas informações podem auxiliar a tarefa de identificação de especialistas disponíveis para apoiar o usuário em sua tarefa. O CK em um foco pode se tornar um EK em outro foco.

Por fim, PC é o subconjunto do CK que é invocado, organizado, estruturado e situado de acordo com o foco e que, portanto, é a parte do contexto realmente utilizada para apoiar a tarefa em execução naquele foco. Dessa maneira, no exemplo, o PC pode incluir informações como a identificação de que: o usuário Carlos está presente e disponível e é especialista na linguagem Java; o usuário José está presente, porém ocupado, e tem habilidade em UML. O PC é construído a partir dos CK existentes e é o que de fato será utilizado para prover os serviços sensíveis ao contexto.

2.3 Considerações sobre o Conceito de Contexto

Considera-se, portanto, contexto como o conjunto de informações relevantes sobre uma entidade (humana ou computacional) que caracteriza a situação em que ela se encontra. O contexto pode ser utilizado para ampliar o conhecimento que se tem sobre uma determinada situação, desempenhando um papel importante em qualquer domínio que envolva requisitos como compreensão, raciocínio, resolução de problemas ou aprendizado [Santoro et al. 2005]. A utilização de informações contextuais facilita a comunicação entre usuários e aplicações, ajuda a diminuir ambigüidades e conflitos, permite que serviços específicos sejam providos de acordo com a necessidade da situação e dos objetivos dos usuários, e apóia processos automatizados em sistemas computacionais. Com isso, a tendência é que as aplicações se tornem mais amigáveis, flexíveis, adaptáveis e fáceis de usar.

Em Computação, diversos são os domínios que já fazem uso de contexto, como os discutidos nesta seção. Além desses, outros também começam a se beneficiar de seu uso. A área de Banco de Dados, por exemplo, já emprega contexto como forma de capturar a semântica relevante de uma entidade e seus relacionamentos. Isso auxilia em processos como integração de esquemas, de dados e processamento de consultas [Kashyap e Sheth 1996]. Da mesma forma, sistemas de mineração de dados usam o contexto para reduzir o espaço de busca, e com isso otimizar e tornar mais eficaz a identificação de padrões dos dados [Vajirkar et al. 2003]. O contexto exerce, ainda, um papel fundamental em sistemas de gestão do conhecimento, onde pode ser utilizado para filtrar e identificar o conhecimento relevante que deve ser disponibilizado ao usuário, dada uma situação, levando também em consideração situações similares onde esse conhecimento foi útil [Degler e Battle 2000].

3 Sistemas Sensíveis ao Contexto Os estudos sobre contexto motivaram o surgimento de uma nova comunidade preocupada com o projeto e desenvolvimento de aplicações e sistemas sensíveis ao contexto (context-aware systems). O termo computação ciente de contexto (context-aware computing) foi proposto por Schilit et al. (1994). Dey e Abowd (2000) definiram esses sistemas como aqueles que “utilizam o contexto para fornecer informações e/ou serviços relevantes para o usuário, onde relevância depende da tarefa do usuário”. Um ponto crítico nessa definição é que tipo de informação considerar como contexto e como identificar sua relevância.

Neste enfoque, é importante ressaltar a diferença essencial entre as aplicações tradicionais e aquelas sensíveis ao contexto. As primeiras executam suas solicitações levando em consideração apenas as informações fornecidas pelos usuários explicitamente, como ilustrado na Figura 2.

Figura 2. Aplicação Tradicional

As aplicações sensíveis ao contexto consideram as informações explícitas fornecidas pelos usuários, aquelas armazenadas em uma base de conhecimento contextual, aquelas inferidas por meio de raciocínio e/ou ainda aquelas percebidas a partir do ambiente, conforme mostra a Figura 3. Com base nessas informações contextuais, a aplicação tem condições de identificar e otimizar fluxos de interação, recuperar históricos, determinar ações e adaptações. Como resultado, serviços mais relevantes e direcionados ao que o usuário necessita naquele momento são providos.

AplicaçãoSensível

ao Contexto

Informações Explícitas

Base de conhecimentocontextual

Inferidas

Percebidas

Percepção

Assistência

AdaptabilidadeOutrosserviços

AplicaçãoSensível

ao Contexto

Informações Explícitas

Base de conhecimentocontextual

Inferidas

Percebidas

Percepção

Assistência

AdaptabilidadeOutrosserviços

Figura 3. Aplicação Sensível ao Contexto

Um dos serviços refere-se à assistência às tarefas que estão sendo realizadas, visando facilitar o uso do sistema dentro do ambiente onde o usuário está inserido. Inclui tutoria inteligente como aconselhar e/ou avisar sobre tarefas que ele pode realizar para obter seus objetivos, assim como recomendações que realizam filtragens de itens (ex. materiais, objetos e pessoas) com base no perfil e interesses dos usuários.

Outro serviço provido é a percepção do contexto, que se refere a notificar o usuário sobre o contexto associado a pessoas e interações do seu interesse. Esse serviço é muito relevante em sistemas colaborativos, em que membros de um grupo devem conhecer e compreender as ações realizadas pelos demais, como forma de coordenar suas próprias ações.

Um terceiro serviço resultante da utilização de contexto é a adaptação, ou seja, a capacidade do sistema modificar seu comportamento, respondendo de forma oportuna às mudanças ocorridas no ambiente e às ações e definições dos usuários. Um exemplo de adaptação é a personalização de sites Web, realizada a partir da análise do perfil do usuário e de seus padrões de navegação.

Existem também outros serviços, dependendo do tipo do sistema, onde o contexto pode ser empregado para enriquecer o conhecimento que já se tem sobre alguma coisa, antes mesmo de se produzir um resultado relevante para um usuário. Em outras palavras, o sistema sensível ao contexto pode realizar ações que, a princípio, não são direcionadas à interação com o usuário. Por exemplo, definições (metadados) sobre entidades armazenadas em diferentes bancos de dados podem ser enriquecidas semanticamente através do uso de contexto com o objetivo de integrar esquemas de dados [Souza et al. 2006].

Além do termo “sistemas sensíveis ao contexto”, outros como sistemas cientes de contexto, sistemas baseados em contexto, aplicações adaptativas e aplicações dirigidas a resposta são considerados como sinônimos na literatura. Apesar das diversas opções, consideramos o primeiro termo mais fiel ao aspecto “perceber+adaptar-se+reagir”, próprio dos sistemas que buscam tirar proveito da informação contextual. Porém, nem sempre o sistema deve, necessariamente, reagir ao contexto, mas pode apenas disponibilizá-lo como conhecimento adicional a seus usuários.

Sistemas sensíveis ao contexto vêm sendo alvo de pesquisa e desenvolvimento nos diversos domínios da computação. O motivo dessa demanda é, na verdade, a percepção de que o raciocínio obtido a partir do contexto enriquece qualquer aplicação, trazendo adaptabilidade, percepção e assistência, com o objetivo maior de facilitar a interação com o usuário e prover serviços mais relevantes. Diante dos desafios oriundos da computação sensível ao contexto, ainda existem muitas dificuldades quando se pensa em projetar, desenvolver e possibilitar a evolução dessa categoria de aplicações. Assim, com o objetivo de facilitar a análise, planejamento e projeto dessas aplicações, discutiremos abaixo alguns requisitos comumente considerados para tal.

3.1 Requisitos para Desenvolvimento de Sistemas Sensíveis ao Contexto

Muitos são os desafios quando se projeta aplicações sensíveis ao contexto. Dentre eles, podemos destacar: (i) a caracterização dos elementos de contexto para uso na aplicação; (ii) a aquisição do contexto a partir de fontes heterogêneas, tais como sensores físicos, bases de dados, agentes e aplicações; (iii) a representação de um modelo semântico formal do contexto; (iv) o processamento e interpretação das informações de contexto adquiridas; (v) a disseminação do contexto a quem e quando for relevante; (vi) o tratamento da qualidade da informação contextual; (vii) o tratamento de questões como segurança e privacidade; e (viii) o tratamento do desempenho do sistema, uma vez que a inclusão do contexto demanda um custo computacional extra para a aplicação.

Pesquisas vêm ocorrendo com o propósito de gerar ferramentas e métodos específicos para o gerenciamento do contexto [Vieira 2006; Zimmermann et al. 2005], mas questões relacionadas à distribuição, mobilidade e reutilização ainda não estão totalmente maduras. Sendo assim, o ideal é utilizar um processo iterativo e incremental para o desenvolvimento, de forma que as funcionalidades possam ser acrescentadas continuamente de maneira mais otimizada e planejada possível.

Além de utilizar um processo incremental, é importante considerar a reutilização de soluções baseadas em componentes. Essas soluções vêm sendo implementadas nos formatos de toolkits [Dey et al. 2001], frameworks [Henricksen e Indulska 2005; Klemke 2000], middlewares [Gu et al. 2005; Ranganathan e Campbell 2003] e engines de contexto [Belotti 2004; Vieira 2006], e objetivam suprir funcionalidades básicas relativas ao gerenciamento da informação contextual, como aquisição, representação, raciocínio e disseminação, de forma que aplicações possam fazer uso desses serviços.

Como o conceito de contexto pode ser usado diferentemente nos diversos domínios de aplicação, os requisitos para o desenvolvimento de serviços que provejam sua utilização e gerenciamento podem ter graus de importância diferentes de acordo com a necessidade do domínio. Entretanto, seja utilizando mecanismos de gerenciamento de contexto ou não, o que considerar como requisito essencial no desenvolvimento de uma aplicação sensível ao contexto? O que se deve priorizar na hora em que iterações forem planejadas? A seguir, apresentamos alguns desses requisitos, considerados essenciais em qualquer domínio de aplicação.

3.1.1 Aquisição

A aquisição do contexto refere-se ao processo de monitorar, capturar e/ou obter informações contextuais de fontes diversas de contexto. Essas fontes podem estar associadas ao ambiente físico, ao ambiente virtual de trabalho, a bases de dados

existentes, a perfis do usuário, ou ainda ao próprio usuário, que pode informar diretamente ao sistema seu contexto atual. A qualidade dos serviços sensíveis ao contexto está diretamente relacionada com a qualidade da informação coletada. As fontes de contexto se encontram, em geral, distribuídas (podendo ser móveis), o que implica em maiores cuidados com aspectos espaciais e de conexão.

Assim, a informação contextual pode ser adquirida a partir de diversas fontes, tais como: Sensores físicos ou de hardware, que podem captar informações sobre o ambiente físico como localização, orientação e situação (por exemplo, GPS, microfones, câmeras); Sensores lógicos, como agentes inteligentes ou serviços, que são capazes de monitorar e coletar informação contextual sobre o ambiente virtual de trabalho do usuário, da tarefa corrente ou do processo em andamento; Entrada explícita, ou seja, algumas aplicações esperam que o usuário explicite uma informação relevante a uma dada tarefa ou, ainda, pode definir suas preferências em relação ao andamento de um processo; Fontes persistentes de contexto, que mantêm informações contextuais, que não mudam frequentemente como, por exemplo: o histórico profissional do usuário, suas tarefas desenvolvidas, dados do ambiente computacional como a indicação do tipo de um dispositivo de computação ou canal de comunicação.

O Quadro 1 mostra uma classificação para as informações de contexto de acordo com a sua forma de aquisição, segundo a qual a informação pode ser percebida, estática, proveniente de perfil ou derivada [Henricksen e Indulska 2005] e indica o nível de persistência de cada tipo de informação, questões que possam afetar sua qualidade e as fontes de suas imperfeições. Informações percebidas são provenientes de sensores físicos ou lógicos. Informações estáticas podem ser adquiridas de fontes persistentes de dados. Informações provenientes de perfil são fornecidas pelo próprio usuário e representam informações mais dinâmicas, como dados pessoais, preferências e relacionamentos entre pessoas, sendo persistidas em bases de dados. Informações derivadas são aquelas obtidas por meio de mecanismos de derivação, como motores de inferência, a partir de informações existentes.

Quadro 1. Informação Contextual por Tipo de Aquisição (Adaptado de [Henricksen e Indulska 2005])

Classe da informação Persistência Questões de qualidade Fontes de imperfeição

Percebida Baixa Pode ser imprecisa, desconhecida ou caduca

Erros na percepção; falhas do sensor ou desconexões da rede

Estática Alta Geralmente nenhuma Erro humano

Proveniente de Perfil Moderada Tende a caducar Omissão do usuário em atualizar mudanças ocorridas

Derivada Variável Sujeita a erros e imperfeições

Entradas imprecisas; uso de um mecanismo de derivação imaturo ou muito simplificado

Os sistemas sensíveis ao contexto devem viabilizar formas de adquirir o contexto do usuário de forma mais automática possível, sem que o usuário tenha que ser questionado insistentemente sobre o contexto em que se encontra. Além disso, é essencial que os serviços de aquisição de contexto permaneçam constantemente disponíveis e é desejável que sejam implementados de forma independente das aplicações que os utilizem. Assim, diversas aplicações podem fazer uso das mesmas

informações de contexto, de modo compartilhado, sem se preocupar em como aquelas informações foram adquiridas.

3.1.2 Representação

Um desafio a ser trilhado no desenvolvimento de sistemas sensíveis ao contexto diz respeito à representação das informações contextuais. A determinação de um modelo de representação de contexto deve levar em consideração fatores como interoperabilidade, extensibilidade, compartilhamento e reusabilidade. Pesquisas recentes propõem diferentes técnicas para modelagem do contexto, tais como ontologias [Souza et al. 2006; Vieira et al. 2005], grafos contextuais [Brézillon 2003], mapas de tópicos [Power 2003], entre outras. Devido à relevância deste tópico para a construção de sistemas sensíveis ao contexto, ele é discutido em detalhes na Seção 4.

3.1.3 Processamento

Um serviço essencial em um sistema sensível ao contexto é o que permite realizar processamento sobre as informações contextuais, de modo a produzir resultados e ações realmente significativos para a aplicação. O processamento do contexto pode ser entendido como o conjunto de métodos e processos que realizam o raciocínio, derivação, transformação, combinação e resolução de conflitos das informações contextuais de modo a produzir outras informações mais refinadas, relevantes e coerentes com o que é necessário em um determinado momento.

O processamento de uma informação contextual pode ser bastante simples, como derivar o nome de uma rua, a partir de suas coordenadas, ou muito complexo e oneroso como inferir o humor de um usuário baseado em seu perfil e na atividade que ele está realizando [Calvi et al. 2005]. Neste sentido, uma aplicação sensível ao contexto deve prover mecanismos de processamento que tratem as informações contextuais em diversos níveis de granularidade (básicas e complexas). Assim, a informação contextual é inerentemente hierárquica no sentido de que contextos básicos são mapeados para categorias de contextos complexos. Por exemplo, um sinal GPS pode ser mapeado para um conceito mais abstrato como localização no formato de “em casa” ou “no trabalho”. Considerando esses aspectos, o processamento do contexto divide-se em:

• Raciocínio: inferir informação contextual implícita de alto nível a partir de outras informações explícitas de baixo nível;

• Transformação: traduzir as informações contextuais para um outro formato, por exemplo, o formato padrão de uma determinada plataforma;

• Combinação: combinar dados para derivar um novo; por exemplo, a hora corrente, o fuso horário do usuário e a sua agenda podem ser combinados para indicar a atividade a ser realizada por ele naquele momento;

• Tratamento de incerteza: tratar inconsistências, ambigüidades e incompletude das informações adquiridas automaticamente. Por exemplo, um sensor de presença pode detectar o celular do usuário em casa e inferir que o usuário está “em casa” enquanto outro sensor de presença baseado em câmeras percebe o usuário em seu escritório. Essas informações são conflitantes e devem ser

resolvidas. O mecanismo de processamento pode indicar que a informação recebida pela câmera tem maior veracidade e deve, pois, ser considerada.

Existem, basicamente, duas diferentes abordagens para inferir contextos complexos [Ranganathan e Campbell 2003]. A primeira utiliza regras estáticas, pré-definidas pelos desenvolvedores usando lógica de primeira ordem, lógica de mais alta ordem, lógica descritiva, lógica temporal ou lógica fuzzy. A segunda utiliza técnicas de aprendizagem como redes bayesianas, redes neurais ou raciocínio baseado em casos. No raciocínio baseado em regras, cada regra possui uma prioridade associada, de modo que uma possa ser escolhida caso mais de uma regra seja verdadeira ao mesmo tempo. Esse tipo de raciocínio, embora mais simples de ser implementado, tem a desvantagem de exigir uma definição explícita das regras por humanos, além de não ser flexível e não se adaptar a circunstâncias que mudam frequentemente [Ranganathan e Campbell 2003]. Técnicas de aprendizado automático permitem que a máquina aprenda um padrão ou regra, a partir de um conjunto de dados de teste, em uma fase chamada de treinamento.

No sistema SOCAM (Service-Oriented Context-Aware Middleware) [Gu et al. 2005], por exemplo, o Context Reasoning Engine raciocina sobre uma base de conhecimento, inferindo informações contextuais, resolvendo conflitos e mantendo a consistência da base. Esse sistema utiliza um modelo ontológico denominado CONON (CONtext Ontology) e processa o contexto usando predicados de primeira ordem e duas abordagens de raciocínio: baseada em lógica descritiva e em lógica de primeira ordem [Wang et al. 2004]. A estrutura do predicado possui três campos: sujeito, objeto e verbo. Assim, o contexto de localização física “Wang está localizado em seu quarto” é descrito como (Wang localizadoEm quarto). Por exemplo, para indicar que um usuário está tomando banho, o sistema utiliza a seguinte regra (adaptada de [Wang et al. 2004]):

Se (usuario localizadoEm Banheiro) E (Banheiro statusPorta FECHADO) E (Chuveiro status LIGADO) Então (usuario situacao TOMANDO_BANHO)

3.1.4 Armazenamento

As informações contextuais podem ser solicitadas posteriormente para apoiar processos de inferência ou resolução de conflitos, o que implica no requisito de armazenamento. Quando um sistema sensível ao contexto raciocina apenas sobre os valores correntes dos sensores, tal armazenamento não se faz necessário e pode ser desconsiderado. Entretanto, o histórico de determinadas informações contextuais como, por exemplo, aquelas relacionadas com as trajetórias de interação dos usuários ou de processos como a integração de esquemas, demandam o armazenamento apropriado das mesmas. Os históricos são de suma importância quando se tenta prever necessidades e ações dos usuários, assim como estabelecer tendências nos processos comuns da aplicação.

Os sistemas Context Toolkit [Dey et al. 2001], CoBrA [Chen 2004], CASS [Fahy e Clarke 2004] e SOCAM [Gu et al. 2005], por exemplo, armazenam as informações contextuais em um banco de dados, com a vantagem de poder utilizar a linguagem SQL como meio de manipular as informações em um nível mais alto.

3.1.5 Uso

Os requisitos apresentados anteriormente podem ser considerados como a base computacional necessária ao uso do contexto. Serviços de aquisição, representação, processamento e armazenamento de informações contextuais resultam na derivação de habilidades traduzidas em três requisitos de uso: percepção, assistência e adaptação.

O conceito de percepção é referente à compreensão do estado de um sistema, incluindo suas atividades passadas, estado atual e opções futuras e também do estado mental de um usuário, podendo envolver a atividade de outros (no caso de sistemas colaborativos) [Sohlenkamp 1998]. A percepção permite que um usuário conheça e compreenda contextos associados a outros usuários, segundo várias dimensões: contextos de localização, como construções e escritórios; contextos organizacionais, como departamentos, projetos e clubes; contextos sociais, como família, amigos; contextos de tarefas, como atividades em curso; contextos de tecnologias, como ferramentas compartilhadas ou frequentemente utilizadas; contextos de interação, como sempre selecionar o mesmo tipo de interface, entre outras [Gutwin e Greenberg 2002].

Um desafio nos mecanismos de percepção é evitar que os usuários sejam sobrecarregados com informações sobre situações e pessoas dos quais eles não tenham interesse em tomar conhecimento. O contexto é um importante instrumento para apoiar a determinação de que tipo de informação deve ser apresentado aos usuários e de que forma, do modo menos intrusivo possível. O uso do contexto para melhorar serviços de percepção é denominado, na literatura, percepção contextual [Mark et al. 1997] ou percepção situacional [Gauvin et al. 2004]. O nível de necessidade de percepção contextual é diferente de acordo com o tipo de aplicação sensível ao contexto. Por outro lado, mecanismos que permitam a geração e apresentação de notificações configuráveis aos usuários devem ser incentivados.

A assistência diz respeito a auxiliar o usuário na execução de suas tarefas como, através de dicas e apresentação de roteiros. Também podem ocorrer na forma de recomendações de objetos, materiais ou pessoas. Um ambiente de ensino a distância, por exemplo, envolve indivíduos geograficamente distantes, com diferentes habilidades, idiomas e interesses. Nesses ambientes pode ser difícil para os aprendizes encontrar materiais de estudo que se adequem às suas necessidades. Com isso, é interessante provê-los com um sistema de recomendação de materiais didáticos, que conheça o contexto individual de cada estudante (ex. assunto que está estudando, idiomas que domina, nível de conhecimento e dificuldades de aprendizagem), bem como o contexto dos materiais didáticos disponíveis (ex. finalidade, idioma em que foi escrito, nível de recomendação por outros participantes, grau de impacto na área de estudo e tipo de estudante ao qual se destina). O sistema de recomendação sensível ao contexto pode, de posse dessas informações, contextualizar e apoiar o aprendiz identificando, de forma pró-ativa, materiais que se adequem a suas necessidades atuais. Além disso, pode recomendar outros estudantes que estejam realizando estudos sobre o mesmo assunto, formando comunidades virtuais de aprendizagem.

A adaptação contextual, por sua vez, ocorre quando o contexto é usado para modificar ou adaptar serviços. A adaptação pode ser classificada em [Chalmers 2002]: (i) ações disparadas pelo contexto (uma ação é disparada quando um determinado conjunto de informações contextuais atinge valores específicos); (ii) mediação

contextual (serviços e dados são adaptados de acordo com os limites e preferências impostos pelo contexto). Projetos de TV Digital Interativa, por exemplo, vêm utilizando informações contextuais relacionadas aos interesses dos usuários com o objetivo de prover adaptação e personalização.

Os três requisitos de uso – percepção, assistência e adaptação – permitem que ações sejam realizadas com base no comportamento do usuário, do grupo, da atividade ou dos objetivos que tenham sido informados ou inferidos. Ou seja, o sistema busca prever as necessidades dos usuários a partir de padrões detectados no seu comportamento [Bunningen 2004]. Embora muitas dessas ações possam ser realizadas sem o deferimento do usuário, há autores que apontam a necessidade de prover mecanismos de accountability (prestação de contas) e intelligibility (clareza) [Bellotti e Edwards 2001]. Ou seja, a utilização de contexto na interação homem-computador deve ter limites, pois alguns aspectos inerentes ao ser humano não vão poder jamais ser inferidos pelas aplicações sensíveis ao contexto. Intenções, emoções, interpretações, medos e outras motivações humanas não vão poder ser percebidas pela aplicação e nem devem, visto que o controle final sobre as ações da aplicação deve ser sempre do usuário [Bellotti e Edwards 2001]. Assim, visando atingir a clareza (intelligibility) e responsabilidade (accountability), deve-se seguir alguns princípios:

• Informar ao usuário a capacidade e entendimento do sistema contextual corrente;

• Prover feedback incluindo questões como conseqüência para as ações e solicitando confirmação para ações que estejam em dúvida;

• Reforçar segurança e privacidade de quem está usando o sistema;

• Prover controle e deferimento ao usuário para possíveis ações conflitantes com seu interesse.

Um exemplo são as funcionalidades de auto-correção e auto-formatação do processador de texto Word, da Microsoft. O Word pode ser considerado sensível ao contexto quando tenta “ajudar” corrigindo termos de grafia, gramática ou formatação. Alguns usuários acham a funcionalidade boa, mas outros argumentam que quando ela é iniciada, o usuário perde o controle sobre a mesma, então quando a correção não é realizada corretamente o usuário ganha trabalho “dobrado” ao tentar corrigi-la.

3.1.6 Compartilhamento

Um cenário com diversos usuários utilizando informações contextuais implica na necessidade de estabelecer políticas de compartilhamento destas. Informações pessoais do usuário, como sua localização, preferências e perfil, em geral, são as mais úteis para o sistema sensível ao contexto. No entanto, o usuário pode temer que essas informações sejam utilizadas para prejudicá-lo de alguma forma, como através de uma publicação indevida de detalhes de suas atividades, que deveriam ser mantidas em sigilo.

Desse modo, o compartilhamento de informações contextuais requer que políticas de privacidade e segurança sejam definidas e implementadas. Essas políticas guiam os sistemas sensíveis ao contexto no trato das informações dos usuários. Uma política de privacidade consiste de um conjunto de regras que servem para controlar a execução de ações pelos sistemas. Uma política de segurança identifica os tipos de

informações que precisam de proteção e cria mecanismos que identifiquem os riscos e provejam padrões de proteção. Após o sistema aceitar tais políticas, ele concorda em reforçar essas regras e mecanismos quando executar suas ações, de maneira a restringir o acesso a informações de contexto por agentes humanos ou de software [Chen 2004].

Assim, informações sobre os usuários participantes, os dispositivos e espaços de trabalho que eles possuem e aqueles que eles têm permissão de usar são significativas para prover compartilhamento. O projeto CoBrA [Chen 2004], por exemplo, inclui uma linguagem que permite que usuários e dispositivos definam regras para controlar o uso e compartilhamento de suas informações contextuais.

3.2 Considerações sobre Sistemas Sensíveis ao Contexto

Utilizar contexto em sistemas computacionais é uma tarefa não trivial. A lógica da aplicação sensível ao contexto é fortemente dependente da importância que o contexto vai desempenhar nas suas funcionalidades. Por outro lado, usar contexto atualmente é uma premissa quando se desenvolve sistemas mais inteligentes e semanticamente enriquecidos. Desta maneira, requisitos básicos para a construção de sistemas sensíveis ao contexto são: aquisição, representação, processamento, armazenamento e uso (percepção, assistência e adaptação). Além destes, um sistema sensível ao contexto deve prover políticas de segurança e privacidade, caso seja necessário compartilhar informações contextuais entre usuários. Para facilitar o desenvolvimento e promover a reusabilidade, gerenciadores de contexto (frameworks, middlewares, engines, e outros) podem ser utilizados. Assim, a aplicação em si fica desacoplada dos serviços básicos de aquisição, processamento e disseminação do contexto.

4 Técnicas para Representação do Contexto Um sistema sensível ao contexto requer que informações contextuais sejam trocadas e utilizadas por diferentes entidades, como agentes humanos e de software, dispositivos e serviços, com uma mesma compreensão semântica. Para isso, um modelo de contexto apropriado deve dar suporte à interoperabilidade semântica e deve permitir que esquemas comuns sejam compartilhados entre as diferentes entidades [Wang et al. 2004]. Diversas técnicas vêm sendo utilizadas na literatura por diferentes sistemas para representar o contexto, como par chave-valor, linguagem de marcação, orientação a objetos, mapas de tópicos e ontologias. As próximas seções descrevem as principais características dessas técnicas e ao final é feita uma análise comparativa das vantagens e desvantagens de cada um delas.

4.1 Par Chave-Valor

Essa é a técnica de modelagem que utiliza a estrutura de dados mais simples para representar o contexto, o qual é modelado por meio de pares compostos por uma chave, que identifica o atributo de contexto, e por um valor associado a essa chave, como ilustra o exemplo na Figura 4. Nesse exemplo, existem três chaves: data, hora e localização, com os respectivos valores “após 16 de Abril”, “entre 10 e 12 da manhã” e “sala 35”. Uma ação “chegada de uma pessoa” é associada a esse contexto. Assim, quando o contexto for a presença de um indivíduo na sala 35, entre as 10 e 12 da manhã, a partir do dia 16 de abril, o sistema irá executar um som que diga “bom dia”.

Figura 4. Exemplo de contexto representado com pares de chave-valor

O modelo de par chave-valor não considera qualquer tipo de hierarquia entre os atributos e, apesar de ser um modelo bastante simples de utilizar e manipular, não permite estruturações mais sofisticadas que habilitem algoritmos eficientes de recuperação de contexto. Para identificar o valor de um atributo de contexto, o algoritmo de recuperação mais utilizado é o casamento de nomes (string matching) com um resultado exato de comparação (exact matching) [Strang e Linnhoff-Popien 2004].

Mesmo não sendo muito formal e sofisticado, o modelo de par chave-valor ganha no quesito simplicidade e facilidade de uso, e é comumente utilizado pelos sistemas operacionais para armazenar variáveis de ambiente. Exemplos de sistemas sensíveis ao contexto que usam pares de chave-valor para representar o contexto incluem o Context Toolkit [Dey et al. 2001] e o CXMS (Context Management System) [Zimmermann et al. 2005]. Schilit et al. (1994) utilizam as variáveis de ambiente do sistema operacional para armazenar as informações contextuais.

4.2 Linguagens de Marcação

Essa técnica utiliza o padrão XML (eXtensible Markup Language) para modelagem das informações contextuais. A característica principal de XML é ser uma estrutura de dados hierárquica que contém rótulos de marcação com atributos e conteúdo. Além disso, por ser um padrão amplamente reconhecido, XML facilita o compartilhamento das informações de contexto por diferentes aplicações.

Essa abordagem tem sido utilizada para a modelagem de perfis de usuário e dispositivos. Um exemplo é o CSCP (Comprehensive Structured Context Profiles) [Held et al. 2002]. O CSCP é um modelo desenvolvido em RDF (Resource Description Framework) que representa o contexto como perfis de sessão. Os nomes dos atributos são interpretados de acordo com sua posição na estrutura do perfil. Esses atributos incluem, por exemplo, localização, características da rede, requisitos da aplicação e informações sobre a sessão. Essa técnica busca definir um vocabulário comum e extensível para representação do contexto.

4.3 Orientação a Objetos

A técnica de modelagem de contexto usando o paradigma da orientação a objetos (OO) visa empregar propriedades como encapsulamento, herança e reusabilidade, para lidar com os problemas de dinâmica do contexto [Strang e Linnhoff-Popien 2004]. Os detalhes do processamento do contexto são encapsulados no nível do objeto de contexto e o acesso à informação contextual é realizado por meio de interfaces.

Nesse caso, a informação contextual é definida através de classes, usando os recursos de herança para identificar informações contextuais derivadas. Cada classe possui as propriedades, funções e regras associadas à informação contextual que ela representa, as quais são reutilizadas nas subclasses. A abordagem OO permite organizar melhor o conhecimento e simplificar a criação de regras de manipulação do contexto. As habilidades de herança e reuso simplificam a representação do conhecimento e a definição de propriedades e regras em sistemas e domínios complexos.

Um exemplo do uso dessa abordagem é o modelo proposto para uma versão sensível ao contexto do jogo Go [Bouzy e Cazenave 1997], um complexo jogo de tabuleiro, criado há mais de 4000 anos e popular no Japão, China e Coréia. Nesse modelo, eles destacam os contextos temporais (se o jogo está no início, meio ou final), o contexto dos objetivos (para identificar bons movimentos visando atingir algum objetivo), contextos espaciais (ambiente espacial de um grupo de pedras) e contextos globais (ex. placar do jogo ou natureza da posição da pedra). O contexto temporal é representado como uma classe mais geral chamada Etapa (Stage) e três subclasses denominadas Inicio (Beginning), Meio (Middle) e Fim (EndGame), como mostra a Figura 5. Cada classe representa um contexto temporal específico e contém regras que permitem a geração de tipos relevantes de movimentos das peças do jogo.

Etapa

Inicio Meio Fim

é-umEtapa

Inicio Meio Fim

Etapa

Inicio Meio Fim

é-um

Figura 5. Taxonomia do Contexto Temporal no Go

(Adaptada de [Bouzy e Cazenave 1997])

4.4 Mapas de Tópicos

Um mapa de tópicos permite definir relações entre objetos físicos e lógicos, localizados dentro ou fora do mundo computacional, através da abordagem de redes semânticas [Power 2003]. A rede semântica permite organizar os objetos de uma forma intuitiva que facilita a navegação pelos dados. Essa abordagem é centrada em três conceitos principais: Tópicos, Associações e Ocorrências (TAO) [Pepper e Moore 2001]. Os objetos do mundo real são representados como tópicos, os quais se interconectam através de associações, que representam as relações entre as entidades. Ocorrências permitem ligar tópicos aos respectivos objetos do mundo real. O conceito de escopo define a área semântica no mapa de tópicos, o que permite associar localidade ao mapa. Assim, tópicos são visíveis apenas dentro do escopo especificado.

O mapa de tópicos é um framework para gerenciamento de conjuntos de objetos de informação interconectados, ou seja, os “assuntos” que são representados como tópicos. Um tópico é criado dentro de um mapa de tópicos para indicar (ou se referir) a esse assunto. Informações são adicionadas aos tópicos através da criação de associações entre eles. Por exemplo, o fato de uma pessoa possuir uma página Web pode ser descrito através da associação hasWebpage entre os tópicos que representam a pessoa e a sua página web. Uma vez criado o mapa de tópicos, podem ser feitas perguntas do

tipo “sobre quem é essa página web?” e receber respostas significativas através das associações entre os tópicos [Power 2003].

Mapas de tópicos são comumente utilizados para: tornar a informação disponível; requisitar que pessoas olhem uma dada informação; ou proibir que pessoas olhem dada informação [Degler e Battle 2003]. Alguns autores propõem o uso de mapas de tópicos para integrar dados contextuais localizados em diferentes fontes de contexto [Degler e Battle 2003; Power 2003]. O mapa apóia o acesso aos elementos contextuais básicos, podendo ser utilizado como navegador pelas fontes de dados não estruturadas, e armazenar o significado do dado contextual no próprio tópico, ao invés de armazená-lo na estrutura do objeto ao qual o contexto se refere. A linguagem padrão para representação de mapas de tópicos é a XTM, utilizada para permitir o compartilhamento entre aplicações [Pepper e Moore 2001].

Para tratar as complexidades inerentes ao gerenciamento de contextos Power (2003) propõe extensões ao modelo de mapas de tópicos com a inclusão de funcionalidades como: agregação, para reunir dados de contexto de baixo nível e formar contextos de mais alto nível; privacidade e segurança, através da implementação de mecanismos de controle de acesso que decidam que informações de contexto devem ser exportadas e visualizadas por quais clientes; e grau de confiança às associações, útil para prover tempo de expiração à informação contextual que não seja atualizada ao longo do tempo.

4.5 Ontologias

Uma ontologia é uma especificação explícita de uma conceitualização compartilhada em que objetos, conceitos, entidades e relacionamentos do mundo real são definidos em uma determinada área de interesse ou domínio de conhecimento [Gruber 1993]. Um dos grandes interesses na construção e uso de ontologias é tornar o conhecimento sobre o mundo real processável por máquinas. Uma representação explícita de uma ontologia consiste de um modelo estruturado de vocabulários (classes e propriedades) e sua semântica associada (relacionamentos entre as diferentes classes e propriedades), bem como funções, axiomas e instâncias [Wang et al. 2004]. A Figura 6 ilustra as três principais aplicações de ontologias e o nível de formalismo na especificação do conhecimento exigido em cada uma [Mika e Akkermans 2005].

Raciocínio

Comunicação

Integração

Compreender

Relatar

ProduzirAplicações mais complexas

Maior formalidade

Figura 6. Aplicações de Ontologia (Adaptada de [Mika e Akkermans 2005])

Na base da pirâmide, está o suporte à comunicação e compartilhamento do conhecimento entre agentes humanos e de software, uma vez que ontologias representam uma compreensão compartilhada sobre um conjunto de termos e descrições, e descrevem de forma precisa propriedades do ambiente e os vários conceitos utilizados. O suporte à integração e reuso de conhecimento indica que

diferentes ontologias, armazenadas em diferentes locais e criadas por diferente autores, podem ser reutilizadas para compor uma ontologia em larga escala sem a necessidade de começar do zero. O suporte ao raciocínio exige um maior formalismo na representação do conhecimento, mas por outro lado permite construir sistemas mais complexos e produzir novos conhecimentos. Mecanismos de raciocínio são usados para inferir contextos complexos e para verificar e resolver inconsistências.

Ontologia é muito útil para validar a informação contextual e facilitar a especificação do comportamento de aplicações sensíveis ao contexto, uma vez que permite conhecer os tipos de contexto disponíveis e sua estrutura. A aplicação especifica regras utilizando um conjunto particular de conceitos (um vocabulário). Quando a aplicação se move para um novo espaço, o contexto pode ser diferente. Se a diferença for terminológica, a ontologia pode permitir que as regras sejam traduzidas e assim funcionem corretamente no novo ambiente.

A linguagem OWL (Web Ontology Language) [Bechhofer et al. 2004] tem sido comumente utilizada para representação das ontologias. OWL é um dos padrões definidos para a Web semântica e permite a definição de ontologias de domínio e compartilhamento de vocabulários. OWL é modelada através de uma abordagem orientada a objetos e a estrutura de um domínio é descrita em termos de classes e propriedades. Do ponto de vista formal, OWL possui uma versão denominada OWL-DL que permite explorar os mecanismos de raciocínio em lógica descritiva existentes, incluindo consistência de classes.

Uma das primeiras abordagens para representação de contexto usando ontologias foi proposta por Öztürk e Aamodt (1997). Eles elaboraram uma ontologia de alto nível onde o contexto foi subdividido em dois conceitos principais: contexto interno, relativo ao agente ou ao raciocinador; e contexto externo, relativo ao objetivo, à tarefa em curso, e ao ambiente. Sua classificação coloca o agente como o elemento principal e são utilizados casos ao invés de esquemas para capturar conhecimento contextual episódico, mantendo episódios únicos como casos. Eles justificam a escolha por ontologias devido aos recursos de normalização e formalidade.

Uma outra representação do contexto baseado em ontologias, e voltada para sistemas colaborativos é a CoMGroup-Ont (Figura 7) proposta por Vieira et al. (2005). A ontologia divide o contexto em 3 dimensões principais: PhysicalContext, que contém informações sobre os elementos físicos que caracterizam a situação em que um usuário se encontra em um determinado momento (localização, tempo, dispositivos e condições ambientais); OrganizationalContext, representa a informação contextual relativa a toda a estrutura organizacional do trabalho em grupo, que inclui agentes humanos ou de software, o grupo ao qual esses agentes pertencem, o papel que os agentes desempenham na execução de uma tarefa em um projeto específico; e InteractionContext, que indica as informações referentes ao contexto de uma interação que está acontecendo (síncrona) ou que já ocorreu (assíncrona) durante o trabalho em grupo (artefatos compartilhados e aplicação colaborativa utilizada).

Outras propostas de ontologia de contexto incluem a ontologia para integração de dados geográficos [Souza et al. 2006], a CoBrA-Ont, para ambientes ubíquos [Chen e Finin 2004] e a CONON, para casas inteligentes [Wang et al. 2004]. Além dessas, a linguagem CoOL (Context Ontology Language) [Strang et al. 2003] apóia a criação de

ontologias de contexto, baseada no modelo Aspect-Scale-Context (ASC), onde aspectos representam classificações (ex. distância espacial) e podem possuir várias escalas (ex. quilômetro ou milhas), que são dimensões individuais dos aspectos, e expressam alguma informação contextual.

Figura 7. Visão Geral da CoMGroup-Ont [Vieira et al. 2005]

4.6 Outras Técnicas

Outras técnicas para representação do contexto, propostas na literatura, incluem a lógica, grafos contextuais e diagramas UML. Em modelos de contexto baseados em lógica a informação contextual é adicionada, atualizada e removida em termos de fatos ou inferências a partir de regras por meio de um sistema baseado em lógica [Strang e Linnhoff-Popien 2004]. Essa abordagem possui um alto grau de formalismo e por isso se torna de difícil compreensão pelos elementos humanos envolvidos na identificação do contexto. Um exemplo é o modelo proposto por Akman e Surav (1997), denominado Teoria da Situação Estendida. A variedade de diferentes contextos é tratada sob a forma de regras e pressuposições relacionadas. Eles representam os fatos relativos a um dado contexto com expressões livres de parâmetros e suportadas pelo tipo de situação correspondente ao contexto.

Grafos contextuais (contextual graphs) constituem um formalismo baseado em contexto para representação de procedimentos e práticas em uma organização [Brézillon 2003]. Inicialmente, esse formalismo foi desenvolvido para o sistema SART (acrônimo francês para Sistema de Suporte ao Controle de Tráfego), para atender o problema de solução de incidentes em linhas do metrô de Paris. A idéia é que a organização estabeleça procedimentos para a solução do incidente e que o operador da linha de metrô adapte esse procedimento para resolver o incidente no contexto em que o mesmo ocorre. Esse procedimento contextualizado é chamado de prática. O volume de práticas acaba sendo muito grande, pois para cada contexto diferente o procedimento pode

necessitar ser adaptado em uma nova prática. O grafo contextual é um grafo acíclico direcionado com uma única entrada, uma única saída e uma organização serial-paralela dos nós, conectados por arcos orientados. Um caminho em um grafo contextual representa uma prática na qual ações do operador são entrelaçadas com os elementos contextuais [Brézillon 2003].

Alguns pesquisadores argumentam que modelos gráficos, como a UML (Unified Modeling Language) são adequados para representar contextos [Bauer 2003; Strang e Linnhoff-Popien 2004]. Uma extensão para representação de contextos através da UML foi sugerida por Bauer (2003) que indica o uso de: diagramas de casos de uso para modelar os atores envolvidos relacionados ou influenciados pelo contexto e suas possibilidades de interação; diagramas de componentes para modelar os sistemas envolvidos que contêm informações relacionadas ao contexto, como as fontes de contexto; diagrama de classes para representar a informação estrutural do domínio e modelar como o contexto está estruturado; e, diagrama de seqüência para modelar cenários de ativação do contexto, detalhar o fluxo da informação entre os sistemas envolvidos e exibir a seqüência de disseminação da informação.

4.7 Considerações sobre Técnicas para Representação de Contexto

Esta seção apresentou algumas técnicas para representação de informações contextuais, sumarizadas no Quadro 2, que inclui vantagens e desvantagens de cada abordagem bem como os métodos utilizados para processamento e recuperação dos contextos.

Quadro 2. Resumo das Técnicas de Representação de Contexto

Técnica Vantagens Desvantagens Processamento e Recuperação

Par Chave-Valor Estrutura simples, de fácil implementação e uso.

Não considera hierarquia. Inadequado para aplicações com estruturas complexas

Busca linear com casamento exato de nomes

Linguagem de Marcação

Baseado em XML. Prevê hierarquia. Esquema de marcação implementa o próprio modelo. Utilização típica em perfis.

Incompletude e ambigüidade na informação devem ser tratadas pelo sistema. Inadequado para representar estruturas complexas

Linguagem de consulta baseada em marcação

Orientação a Objetos

Encapsulamento, herança, reusabilidade. Permite abstrair o tratamento do contexto

Invisibilidade no tratamento do contexto, pelo encapsulamento, dificulta formalismo do modelo

Algoritmos e compiladores

Mapas de Tópicos Facilita a navegação entre os contextos. Facilita modelagem por humanos.

Estágio inicial. Tecnologia imatura. Faltam exemplos reais.

Navegação por redes semânticas

Ontologias Contextos modelados como conceitos e fatos. Viabiliza formalização, compreensão e compartilhamento por humanos e computadores.

Tecnologia de manipulação imatura.

Motor de Inferência, Linguagem de consulta baseada em OWL

Uma questão relevante ao pensar em representação de informações contextuais é que não é real pensar em um modelo único, padrão e globalizado de representação [Power 2003]. Ao contrário, os dados do contexto poderão ser obtidos de diferentes

formas a partir de fontes diversas e heterogêneas. Formalizar todas as possíveis informações contextuais em ambientes restritos e em situações controladas já é bastante difícil. Em cenários inter-organizacionais ou considerando diferentes sistemas se torna praticamente impossível.

Cada abordagem de representação possui vantagens e deficiências. Com isso, não há uma abordagem que possa ser considerada unanimente a ideal para todos os sistemas sensíveis ao contexto uma vez que diferentes sistemas impõem diferentes restrições. A abordagem de mapa de tópicos parece ser bastante promissora, porém ainda está em estágio imaturo em termos de definições de padrões e tecnologias. Strang e Linnhoff-Popien (2004) revisaram diversas abordagens para modelagem de contexto e concluíram que ontologias constituem a abordagem mais promissora, devido às suas características de permitir o compartilhamento de conhecimento entre humanos e entre agentes de software, bem como a reutilização de conhecimento entre aplicações, e de permitir o uso de motores de inferência existentes para inferir contextos complexos.

No entanto, existem problemas com o uso de ontologias. Um deles é que nem todo conhecimento contextual pode ser definido a priori em um modelo estático e formal, como é o caso da modelagem de procedimentos e práticas, para os quais os grafos contextuais se mostram ideais [Brézillon 2003]. Além disso, Henricksen et al. (2004) apontam problemas na representação baseada em ontologias, tais como: os padrões nos quais as ontologias e seus motores de inferência se baseiam são imaturos e limitados; OWL ainda não provê suporte direto para regras axiomáticas, o que limita os tipos de raciocínio; ontologias não suportam adequadamente raciocínio sobre informações de contexto imperfeitas (imprecisas, ambíguas, incompletas), e o processo de criar ou estender ontologias de contexto é complexo e sujeito a falhas, uma vez que as linguagens de escrita das ontologias não são intuitivas.

5 Exemplos de Aplicações Sensíveis ao Contexto Iniciativas de implementação de aplicações sensíveis ao contexto vêm sendo realizadas nesses últimos anos em diversos domínios da computação. De acordo com a Figura 3, apresentada na Seção 3, a partir de informações contextuais inferidas, explicitadas ou percebidas, serviços mais relevantes são disponibilizados, relativos a funcionalidades de: assistência ao usuário, adaptação do sistema e percepção do contexto. É importante frisar que o contexto pode ser empregado, também, para enriquecer o conhecimento sobre alguma coisa, antes mesmo de se produzir um resultado relevante para um usuário. Assim, por exemplo, definições (metadados) sobre entidades armazenadas em diferentes bancos de dados podem ser enriquecidas semanticamente através do uso de contexto, com o objetivo de facilitar a integração de esquemas de dados e otimizar o processamento de consultas [Souza et al. 2006].

Esta seção apresenta exemplos de aplicações sensíveis ao contexto. Tais aplicações estão associadas aos diversos domínios citados na Seção 2.1 e demonstram como a utilização do contexto pode contribuir para melhorar a interação homem-aplicação, para prover percepção, assistência e adaptação, gerando serviços mais enriquecidos e direcionados aos usuários.

5.1 Dynamic Tour Guide

Turistas muitas vezes procuram serviços que facilitem seus passeios. Quando conseguem informações antecipadas sobre horários especiais ou restaurantes lotados, eles podem planejar novas atividades. Pensando em atender essa demanda, foi criado o Dynamic Tour Guide (DTG) que é uma aplicação móvel cujo objetivo é prover rotas personalizadas para cada tipo de turista ou necessidade de passeio [Kramer et al. 2005]. O DTG seleciona atrações, planeja um tour individualizado, permite navegação entre os locais de passeio e oferece informações ambientais.

Como uma aplicação sensível ao contexto pertencente à área de Computação Ubíqua, o DTG é capaz de adaptar seu funcionamento de acordo com o contexto do turista. Para isso o sistema obtém informações contextuais relacionadas ao perfil do turista e à sua localização. A partir do perfil o sistema obtém informações sobre a identificação pessoal e sobre as preferências do turista, como os pontos turísticos que ele deseja visitar e o tempo disponível para cada passeio. O contexto de localização consiste nas informações ambientais decorrentes de sua localização espaço-temporal (obtida via GPS). Assim, por exemplo, a captura das suas posições vai determinar sua velocidade e a data corrente vai indicar a estação do ano e suas condições climáticas. Dessa maneira, quando um turista começa a caminhar, o DTG verifica sua velocidade e as condições das ruas por onde ele deve passar. O turista será guiado até o próximo ponto turístico que ele tenha selecionado e receberá informações sobre ele.

Para realizar uma associação semântica entre os pontos turísticos desejados e o perfil do turista e as condições em que ele se encontra, utiliza-se uma ontologia como meio de organizar os termos, relacionamentos e sinônimos que dizem respeito àquele domínio. À medida que o sistema capta novas informações, é realizada a atualização da ontologia, reutilizando perfis de interesse dos usuários já armazenados. Cada categoria de interesse pertencente ao domínio é organizada na ontologia, como por exemplo: edificações, pontes, restaurantes, praias, entre outras. O perfil do turista será associado a essas categorias de interesse, facilitando assim a correspondência.

5.2 CO2DE e POLITeam

Collaborate to Design (CO2DE) é um editor síncrono/assíncrono de diagramas UML, originalmente projetado para permitir que participantes compartilhem o mesmo espaço de edição e controlem versões (conhecidas como máscaras) dos documentos sendo construídos [Borges et al. 2004]. Como ferramenta colaborativa, provê funcionalidades para ajudar membros individuais a estarem “cientes” das informações contextuais relacionadas à tarefa corrente. Por exemplo: informação sobre a composição do grupo, a posição de cada membro do grupo, cada novo documento sendo simultaneamente discutido, entre outras.

Visando resolver os problemas de sobrecarga inerentes aos mecanismos de percepção presentes nos sistemas colaborativos, o sistema POLITeam [Mark et al. 1997] utiliza o contexto de trabalho do usuário (ex. “trabalhando em um documento”, “acessando uma pasta”, “executando um passo em um processo”) para permitir que usuários especifiquem perfis de percepção e, dessa forma, apoiar o sistema na filtragem seletiva das informações de percepção. Para isso, determinados artefatos compartilhados (como um documento) são associados a um conjunto de contextos (alguns exemplos podem ser vistos no Quadro 3).

Quadro 3. Exemplos de configuração das preferências de percepção em um documento no sistema POLITeam (Adaptado de [Mark et al. 1997])

Contexto de trabalho Mostrar a informação de percepção quando

“Trabalhando no documento” O usuário abrir o documento “Acessando a pasta do documento” O usuário abrir a pasta que contém o documento “Acessando uma pasta mãe qualquer do documento”

O usuário abrir qualquer pasta que faça parte da árvore de pastas onde o documento se encontra

“Trabalhando no mesmo processo” O usuário acessar um outro documento que compartilha o mesmo código de arquivo

“Imediatamente” Imediatamente, independente do contexto

Cada contexto indica ao sistema o momento e a forma como ele deverá prover a informação de percepção. O usuário pode configurar preferências de percepção em seu perfil que será anexado a um artefato ou a um conjunto de artefatos. Dessa maneira, o sistema realiza a notificação de eventos apenas quando o contexto de trabalho do usuário case com o especificado no perfil de percepção que o usuário estiver inscrito. Por exemplo, o usuário pode configurar a seguinte preferência: “sempre que eu abrir qualquer documento, eu gostaria de ver o que ocorreu em outros documentos que pertencem ao mesmo processo” [Mark et al. 1997].

5.3 GeoDialogue/DAVE_G

DAVE-G (Dialogue-Assisted Visual Environment for Geoinformation) é um ambiente genérico no qual o usuário pode interagir com sistemas de informação geográfica através de uma interface multimodal. Integrado a este ambiente encontra-se o GeoDialogue – um agente que implementa a abordagem de diálogo colaborativo baseado em contexto.

A maioria dos sistemas de informação geográfica carece de uma interface mais próxima do mundo real do usuário. A utilização de linguagem natural como meio de facilitar a interação vem sendo incentivada. Contudo, percebe-se que o principal desafio na busca de modalidades humanas como fala e gesto na interação do homem com o computador está no fato de que a comunicação humana é inerentemente contextualizada pelo conhecimento existente entre os participantes. Esse conhecimento contextual não é facilmente adquirido pelos sistemas computacionais e a linguagem se torna ambígua, incompleta ou vaga [Cai et al. 2003].

Interações usuário-SIG (Sistemas de Informações Geográficas) geralmente se encontram situadas em conjuntos complexos de contextos que envolvem, além da forma como a solicitação (via fala ou não) é realizada, a tarefa em si, o perfil e conhecimento do usuário e o espaço geográfico em questão (escala, área envolvida). Por exemplo, um usuário faz a seguinte consulta [Cai et al. 2003]: “Hotéis próximos a Miami”. Entretanto, que distância deve ser adotada para que um objeto seja considerado próximo a outro? Se um usuário considerar que 20 milhas é próximo, então se um hotel se encontra a 60 milhas, ele está longe. Mas e se um hotel está a 40 milhas?

Dessa maneira, o GeoDialogue implementa uma abordagem colaborativa de diálogos que considera fatores contextuais para a interpretação de uma solicitação. Estes fatores contextuais são: o espaço geográfico, o contexto pessoal do usuário e sua

trajetória de interação e o contexto da tarefa. Um protótipo [Cai et al. 2003] implementa o conceito de “near” (próximo), considerado um exemplo de operação espacial que precisa ser contextualizada para ser interpretada. Um exemplo de diálogo acerca do operador “near” envolvendo um usuário e o sistema é apresentado na Figura 8.

Figura 8. Exemplo de diálogo entre usuário e GeoDialogue [Cai et al. 2003]

5.4 EasyMeeting/CoBra

A infra-estrutura CoBra (Context Broker Architecture) visa permitir a implementação de agentes, serviços e dispositivos que exploram informações contextuais em espaços inteligentes (salas de reunião, veículos, escritórios) [Chen 2004]. Sua arquitetura contempla quatro aspectos principais: representação das informações de contexto, inferência, compartilhamento e políticas de proteção da privacidade do usuário. Seu principal componente é um agente inteligente chamado Context Broker (negociador de contexto) que assume a maioria das responsabilidades citadas. Os demais agentes se comunicam com ele através do protocolo ACL/FIPA utilizando a ontologia pré-definida para representação de contexto.

A principal aplicação desenvolvida sobre esta arquitetura foi denominada Easy Meeting e objetiva prover serviços sensíveis ao contexto para auxiliar palestrantes e ouvintes durante uma conferência [Chen 2004]. Nesta aplicação, o Context Broker é responsável pela coleta e manutenção de informações sobre a localização dos participantes do evento, as apresentações que estão agendadas, os perfis dos palestrantes e o status do evento que são obtidos a partir de sensores. A partir destas informações contextuais, a aplicação decide quando oferecer serviços do tipo controle de música ambiente, iluminação da sala de conferência e apresentação do perfil do palestrante.

5.5 GMail e Amazon.com

O contexto vem sendo largamente utilizado em aplicações de hipermídia adaptativa para promover personalizações dos sites de acordo com o contexto do usuário e adaptações do conteúdo das páginas. A seguir serão apresentados dois exemplos de sistemas que

utilizam o contexto para adaptar o conteúdo apresentado aos usuários, o sistema gerenciador de emails GMail e o site de compras Amazon.com.

O GMail é o sistema de gerenciamento de emails fornecido pela Google [Google 2006]. Observou-se nesse sistema o uso de recomendação de links baseada em análise de conteúdo e contexto. O GMail mantém uma área de propaganda periférica em seus sistemas, embutida na tela de visualização dos emails. Essas propagandas são sensíveis ao conteúdo da mensagem que o usuário está lendo, como mostra a Figura 9. Percebe-se que o texto fala sobre a elaboração de uma monografia de pós-graduação com tema na área de data warehouse. Desse modo, as propagandas exibidas (área sponsored links) exibem sugestões de páginas comerciais relacionadas à elaboração de monografias ou a data warehouse. Além disso, o GMail utiliza uma abordagem contextual para manter as mensagens, usando o conceito de conversa, ou seja, ele apresenta as respostas a uma mensagem juntas, sequencialmente, simulando realmente uma conversa.

Figura 9. Propaganda sensível ao contexto no GMail [Google 2006]

Outro exemplo de uso do contexto para promover adaptação de sistemas web é observado no portal Amazon.com [Amazon 2006]. Esse portal mantém o histórico de utilização do site pelos usuários (ex. materiais que visualizou, materiais que comprou e pesquisas realizadas), bem como avaliações dos materiais feitas por outros usuários, e o tipo de material que o usuário está consultando (livro, dvd, etc.). A partir do cruzamento dessas informações contextuais o sistema descobre padrões do tipo “Clientes que visualizaram este livro também visualizaram” e apresenta recomendações de materiais que potencialmente o usuário poderia estar interessado. Além disso, o sistema sugere guias de navegação pelo site seguindo orientações elaboradas por outros usuários relacionadas ao assunto do material que o usuário está visualizando no momento.

5.6 Considerações sobre as Aplicações Sensíveis ao Contexto

De uma maneira geral, as aplicações apresentadas nesta seção utilizam contexto com o objetivo de prover serviços mais relevantes aos seus usuários. Assim, informações de perfis, preferências, localização, tarefas em curso, históricos de uso, padrões detectados e outras informações inferidas são tratadas como contexto e utilizadas para promover personalização, como rotas individuais no DTG; filtragem seletiva de informações de

percepção, como no caso do POLITeam; redução de ambigüidades, como na contextualização do operador “Near”, no GeoDialogue; serviços de ambiente, como iluminação da sala de conferências, no Easy Meeting; e sugestões sensíveis ao conteúdo corrente de mensagens, como no exemplo do GMail.

6 Considerações Finais Projetistas de sistemas computacionais têm percebido uma demanda na necessidade dos usuários de que os sistemas sejam mais flexíveis, adaptáveis, interativos e fáceis de usar. Sistemas que exijam demasiada intervenção do usuário para identificar informações e serviços relevantes tendem a ceder espaço para aqueles que sejam capazes de identificar o usuário e seu contexto atual e, a partir dessas informações, oferecer serviços mais adaptáveis a suas necessidades e intenções. Um exemplo é o sistema GMail que, dentre suas funcionalidades, utiliza o contexto da mensagem para manter emails relacionados próximos uns dos outros, simulando uma conversa, e usa o conteúdo da mensagem para oferecer anúncios sensíveis ao contexto. Facilidades como essas tornaram esse gerenciador de email, rapidamente, um dos mais populares.

O uso do contexto não compõe, exatamente, as funcionalidades básicas, primordiais, de um sistema computacional. Em geral, os sistemas poderiam funcionar, normalmente, sem conhecer o contexto do usuário. No entanto, o que se percebe é que as aplicações que acrescentam entre suas funcionalidades essas características de adaptação ao contexto tendem a ser mais utilizáveis. Pode-se fazer uma analogia com o uso do telefone celular. Antes da sua invenção, todos utilizavam telefones fixos sem maiores problemas e sequer imaginavam o quão importante poderia ser para eles usar um telefone com o qual pudessem se locomover para qualquer lugar. Hoje em dia, com o uso em massa desse tipo de telefonia, certamente os usuários não conseguirão mais se desfazer dessa facilidade tecnológica para voltar a ser prisioneiros de um ponto fixo. Muitos sequer imaginam como seria sua vida sem essa mobilidade.

O mesmo tende a acontecer com os sistemas computacionais. Sistemas sensíveis ao contexto, ou seja, que consideram o contexto e o utilizam para oferecer melhores serviços e informações para seus usuários são os que potencialmente permanecerão em uso. Atualmente, o contexto é um requisito fundamental em aplicações móveis e ubíquas, onde informações contextuais como a identificação do usuário, suas preferências, localização física (em constante alteração) e o dispositivo utilizado (que possuem diferentes limitações de recursos) são fundamentais para que essas aplicações sejam desenvolvidas. O ambiente Web, com seu dinamismo inerente e o excesso de informações publicadas também exigem que os sistemas sejam mais amigáveis e adaptáveis aos usuários. Além desse, diversos outros domínios da computação percebem, também, a necessidade de utilizar o contexto para melhorar seus serviços aos usuários, como a Inteligência Artificial, Computação Ubíqua, Sistemas Colaborativos, Sistemas de Hipermídia Adaptativa e Interação Humano-Computador.

No entanto, compreender e identificar o contexto, e executar ações automaticamente de acordo com esse contexto é uma tarefa não trivial em sistemas computacionais. Muitos são os desafios, relacionados à identificação do que considerar como contexto, sua aquisição, processamento e uso. Pesquisadores de diversas áreas estudam as melhores técnicas e métodos para suplantar essas dificuldades, porém ainda

não há consenso sobre a melhor forma de desenvolver sistemas sensíveis ao contexto. Esses desafios e perspectivas de pesquisa são discutidos na próxima seção.

6.1 Desafios e Oportunidades de Pesquisa

Apesar da computação sensível ao contexto ser uma área de pesquisa que vem crescendo bastante e atraindo a atenção e interesse de um número cada vez maior de pesquisadores, ainda existem muitos desafios que estão em aberto. Essa área, de uma forma geral, demanda muitos estudos e, principalmente, aplicação dos conceitos propostos. Dentre as perspectivas e oportunidades de pesquisa existentes nessa área destacamos as seguintes2:

• Mecanismos de privacidade e segurança: sistemas sensíveis ao contexto, em geral, se baseiam em informações pessoais do usuário, tornando-as visíveis para outros usuários e sistemas. Com isso, é de vital importância que esses sistemas disponibilizem mecanismos que possam garantir ao usuário privacidade e, também, segurança sobre os seus dados, pois se o usuário se sentir invadido ou ameaçado pelo sistema poderá se recusar a fornecer informações sobre si mesmo ou desabilitar mecanismos de monitoramento. É importante que o usuário tenha controle sobre a exposição das suas informações, como as mesmas serão utilizadas, quem terá acesso, e o que será feito delas;

• Mecanismos de confiança: tópicos relacionados à confiança são de suma importância em sistemas sensíveis ao contexto. O usuário deve poder confiar que o sistema agirá como esperado, e que suas informações contextuais serão utilizadas para propósitos específicos e apenas com a aceitação do usuário, mesmo em situações de falha. Em casos de sistemas de computação ubíqua, onde a comunicação máquina-máquina é uma realidade, é necessário modelar a confiança também ao nível das máquinas. O desafio, nesse caso, é especificar modelos de confiança e implementar esses mecanismos. Um exemplo de mecanismo para tratar de confiança em comunidades virtuais é proposto por Abdul-Rahman e Hailes [Abdul-Rahman e Hailes 2000];

• Mecanismos de raciocínio: informações contextuais monitoradas e adquiridas automaticamente por sensores demandam que mecanismos de raciocínio sejam utilizados para inferir informações de contexto relevantes a partir de um conjunto de dados contextuais básicos, em geral sem significado. Diversos trabalhos propõem diferentes métodos e abordagens para adicionar inteligência aos sistemas sensíveis ao contexto, como o raciocínio baseado em casos [Kofod-Petersen e Aamodt 2003]. Os desafios aqui estão relacionados à avaliação do método de raciocínio mais adequado para cada tipo de informação contextual e como lidar com a complexidade e baixa maturidade dos motores de inferência existentes;

• Percepção: O desafio dos mecanismos de percepção é obter informações sobre o contexto dos usuários e provê-las a outros usuários de forma não intrusiva, evitando sobrecarga. O papel da computação sensível ao contexto em relação à

2 A ordem de apresentação desses itens foi escolhida de forma aleatória e não tem qualquer relação com relevância.

percepção inclui os seguintes desafios: (i) identificar como descrever contextos processáveis por máquinas para percepção por humanos, no caso tratar aspectos semânticos, extração de funcionalidades e representação; e (ii) conhecer que mudanças no contexto são de interesse e como detectar essas mudanças;

• Recuperação de Informações Sensível ao Contexto: sistemas de busca convencionais são projetados para recuperar informações baseado no conteúdo das consultas. Assim, o objetivo da pessoa que submete a consulta é selecionar a consulta da melhor maneira para que possa obter resultados que casem melhor com seus interesses. Uma tendência nos sistemas de recuperação de informações é considerar, também, preferências pessoais do usuário e assim modificar os resultados com base em seus interesses. Um desafio nesses sistemas é permitir que o sistema considere no processamento das consultas o contexto atual do usuário para guiar o processo de recuperação [Jones e Brown 2004];

• Mecanismos para Gerenciamento do Contexto: Para facilitar a tarefa de desenvolvimento de aplicações sensíveis ao contexto ferramentas como middlewares, toolkits ou frameworks podem ser empregadas para prover abstrações e serviços confiáveis para operações comuns de gerenciamento do contexto. Essas ferramentas provêem propriedades como interoperabilidade, transparência e modularidade. Um grande desafio é como prover soluções portáveis e modulares que casem com um conjunto de dispositivos e sensores que muda constantemente; como suportar a interoperabilidade; como permitir o compartilhamento de informações contextuais provenientes de fontes diversas de contexto a diferentes sistemas. Exemplos dessas ferramentas incluem o Context Toolkit [Dey et al. 2001] e o CXMS [Zimmermann et al. 2005];

• Acesso e armazenamento do contexto: o aprendizado é um aspecto importante em sistemas sensíveis ao contexto. Para isso, o contexto histórico é um elemento essencial. É necessário armazenar de forma eficiente um grande volume de informação contextual e lidar com o seu dinamismo. Por outro lado a maioria das fontes de contexto é baseada em eventos e aplicações podem estar interessadas em ser notificadas desses eventos. Adicionalmente, o acesso a essas informações deve ser simples e eficiente e deve permitir saber se o dado é atual ou não. Um desafio nesse tipo de cenário é identificar se as demandas de armazenamento e acesso em sistemas sensíveis ao contexto são similares aos sistemas convencionais, se as mesmas abordagens podem ser utilizadas, quais as diferenças mais significativas e que estruturas de armazenamento e recuperação são mais eficientes. Exemplos de trabalho que discutem essa questão são o Context Cube [Harvel et al. 2004] e o apresentado em [Franklin 2001] sobre os desafios do gerenciamento de dados em ambientes ubíquos;

• Suporte para a provisão do contexto a dispositivos móveis: informações contextuais relevantes devem ser fornecidas a aplicações executando em dispositivos com recursos limitados. O processamento da informação contextual pode demandar muitos recursos computacionais e, assim, não é ideal que seja feito no próprio dispositivo móvel, mas deve ser um serviço provido por um servidor externo. Com isso, a informação contextual pode ser compartilhada entre múltiplos dispositivos, reduzindo a sobrecarga do processamento do contexto. Como os dispositivos móveis possuem recursos limitados é importante

investigar a melhor maneira de prover as informações de contexto a esses dispositivos, considerando essas limitações (e.g. [Hong e Landay 2001; Mayrhofer 2006]);

• Representações semânticas: em sistemas sensíveis ao contexto, a tecnologia de agentes é utilizada, principalmente, para desenvolver assistentes inteligentes que filtre, recomende e obtenha informações automaticamente para o usuário. Nessas aplicações, uma questão chave é o compartilhamento de informações entre diferentes entidades. Diferentes técnicas para representação do contexto foram propostas (e discutidas na Seção 4), porém esse tópico ainda está em aberto e demanda muita discussão;

• Tratamento de Desempenho: gerenciar e manipular informações contextuais introduz um processamento extra às aplicações. É importante que esse processamento não impacte no desempenho da aplicação, especialmente em domínios onde os recursos são limitados, como é o caso das aplicações móveis. Com isso, estudos que tratem de questões sobre como melhorar o desempenho dos sistemas sensíveis ao contexto podem trazer grandes contribuições. É bastante desafiador esse tema pois, como pudemos ver na Seção 5, muitos são os usos do contexto, e cada tipo de uso demanda um tratamento diferente das informações contextuais.

Como é possível perceber, muitos são os tópicos ainda em aberto nessa área, que demandam mais pesquisas, estudos e experimentos práticos. Este texto apresentou uma introdução ao conceito de contexto e sua aplicação a algumas áreas da Computação. Seu objetivo é servir como um material de referência àqueles interessados em iniciar seus estudos na área. Espera-se, ainda, que sua leitura motive e incentive o surgimento de novos pesquisadores para a área da computação sensível ao contexto e que apóie os desenvolvedores de software a perceber as potencialidades do uso do contexto para tornar suas aplicações mais ricas, expressivas e adaptáveis.

Referências Bibliográficas Abdul-Rahman, A., Hailes, S. (2000) "Supporting Trust in Virtual Communities", In:

Proc. Hawaii International Conference on System Sciences, Maui, Hawaii, USA.

Akman, V., Surav, M. (1997) "The use of situation theory in context modeling", In: Computational Intelligence, v. 13, n. 3, pp. 427-438.

Alarcón, R., Guerrero, L. A., Ochoa, S. F., Pino, J. A. (2005) "Context in Collaborative Mobile Scenarios", In: Proceedings of the Workshop on Context and Groupware, CONTEXT-05, Paris, France.

Amazon (2006) "Amazon.com", In: http://www.amazon.com, Access in 09/2006.

Bauer, J. (2003) "Identification and Modeling of Contexts for Different Information Scenarios in Air Traffic", Diplomarbeit, Technische Universität Berlin, Fakultät IV - Elektrotechnik und Informatik, Institut für Computergestützte Informationssysteme, Berlin.

Bazire, M., Brézillon, P. (2005) "Understanding Context Before Using It", In: 5th International and Interdisciplinary Conference, CONTEXT-05, v. LNAI 3554, pp. 29-40, Springer Verlag, Paris, France.

Bechhofer, S., van Harmelen, F., Hendler, J., Horrocks, I., McGuinness, D., Patel-Schneider, P., Stein, L. (2004) "Web Ontology Language (OWL) Reference, W3C Recommendation", In: http://www.w3.org/TR/owl-ref/, Access in 09/2006.

Bellotti, V., Edwards, K. (2001) "Intelligibility and Accountability: Human Considerations in Context-Aware Systems", In: Human Computer Interaction, v. 16, n. 2, 3 & 4, pp. 193-212.

Belotti, R. (2004) "Sophie - Context Modelling and Control", Diploma thesis, Swiss Federal Institute of Technology Zurich.

Borges, M. R. S., Brézillon, P., Pino, J. A., Pomerol, J.-C. (2004) "Bringing context to CSCW", In: Proceedings of the Computer Supported Cooperative Work in Design, v. 2, pp. 161-166, IEEE Press.

Bouzy, B., Cazenave, T. (1997) "Using the Object Oriented Paradigm to Model Context in Computer Go", In: Proceedings of Context'97, Rio de Janeiro, Brazil.

Brézillon, P. (2003) "Representation of Procedures and Practices in Contextual Graphs", In: The Knowledge Engineering Review, v. 18, n. 2, pp. 147-174.

Brézillon, P. (1999) "Context in problem solving: A survey", In: The Knowledge Engineering Review, v. 14, n. 1, pp. 1-34.

Brézillon, P., Araújo, R. M. (2005) "Reinforcing Shared Context to Improve Collaborative Work", In: Revue d'Intelligence Artificielle, Special Issue on "Applying Context Management", v. 19, n. 3, pp. 537-556.

Brézillon, P., Pomerol, J.-C. (1999) "Contextual Knowledge Sharing and Cooperation in Intelligent Assistant Systems", In: Le Travail Humain, v. 62, n. 3, pp. 223-246.

Bunningen, A. (2004) "Context Aware Querying - Challenges for data management in ambient intelligence", Technical Report TR-CTIT-04-51, Centre for Telematics and Information Technology, University of Twente, Enschede.

Cai, G., Wang, H., MacEachren, A. (2003) "Communicating Vague Spatial Concepts in Human-GIS Interactions: A Collaborative Dialogue Approach", In: Conference on Spatial Information Theory, LNCS2825, pp. 304-319, Kartause Ittingen, Switzerland.

Calvi, C., Pessoa, R., Filho, J. (2005) "Um Interpretador de Contexto para Plataformas de Serviços Context-Aware", In: Anais do XXXII SEMISH, XXV Congresso da SBC, São Leopoldo, RS.

Chalmers, D. (2002) "Contextual Mediation to Support Ubiquitous Computing", Ph.D. Thesis, Imperial College of Science, Technology and Medicine, London University.

Chen, G., Kotz, D. (2000) "A Survey of Context-Aware Mobile Computing Research", Technical Report TR2000-381, Dept. of Computer Science, Dartmouth College.

Chen, H. (2004) "An Intelligent Broker Architecture for Pervasive Context-Aware Systems", PhD Thesis, Faculty of the Graduate School of the University of Maryland.

Chen, H., Finin, T. (2004) "An Ontology for Context-Aware Pervasive Computing Environments", In: The Knowledge Engineering Review, v. 18, n. 3, pp. 197-207.

de Souza, C. S. (2005) "The semiotic engineering of human-computer interaction", MIT Press, Cambrige.

Degler, D., Battle, L. (2000) "Knowledge Management in Pursuit of Performance: the Challenge of Context", In: Performance Improvement Journal, v. 39, n. 6.

Degler, D., Battle, L. (2003) "Can Topic Maps describe context for enterprise-wide applications?", In: Extreme Markup Languages Proceedings.

Dey, A. K., Abowd, G. D. (2000) "Towards a Better Understanding of Context and Context-Awareness", In: Proceedings of the CHI 2000 Workshop on The What, Who, Where, When, and How of Context-Awareness, The Hague, Netherlands.

Dey, A. K., Salber, D., Abowd, G. D. (2001) "A Conceptual Framework and a Toolkit for Supporting the Rapid Prototyping of Context-Aware Applications", In: Human Computer Interaction, v. 16, Special Issue on Context-Aware Computing, pp. 97-166.

Fahy, P., Clarke, S. (2004) "CASS: Middleware for Mobile, Context-Aware Applications", In: Workshop on Context Awareness at MobiSys 2004, Boston, USA.

Franklin, M. (2001) "Challenges in Ubiquitous Data management", In: Informatics: 10 Years Back, 10 Years Ahead, LNCS 2000, pp. 24-33.

Gauvin, M., Bourry-Brisset, A. C., Auger, A. (2004) "Context, Ontology and Portfolio: Key Concepts for a Situational Awareness Knowledge Portal", In: Proceedings of the 37th Hawaii International Conference on System Sciences - Track 4, p. 40111b.

Google (2006) "GMail, the Google Mail", In: http://mail.google.com, Access in 04/2006.

Greenberg, S. (2001) "Context as a Dynamic Construct", In: Human Computer Interaction, v. 16, n. 2-4, pp. 257-268.

Gross, T., Prinz, W. (2003) "Awareness in Context: A Light-Weight Approach", In: Proc. of the Eights European Conference on Computer-Supported Cooperative Work (ECSCW 2003), pp. 295-314, Helsinki, Finland.

Gruber, T. (1993) "A Translation Approach to Portable Ontologies", In: Knowledge Acquisition, v. 5, n. 2, pp. 199-220.

Gu, T., Pung, H. K., Zhang, D. Q. (2005) "A Service-Oriented Middleware for Building Context-Aware Services", In: Elsevier Journal of Network and Computer Applications (JNCA), v. 28, n. 1, pp. 1-18.

Gutwin, C., Greenberg, S. (2002) "A Descriptive Framework of Workspace Awareness for Real-Time Groupware", In: Computer Supported Cooperative Work, v. 11(3-4), pp. 411-446, Special Issue on Awareness in CSCW, Kluwer Academic Press.

Harvel, L. D., Liu, L., Abowd, G. D., Lim, Y.-X., Scheibe, C., Chatam, C. (2004) "Context Cube: Flexible and Effective Manipulation of Sensed Context Data", In: Proc. 2nd International Conference on Pervasive Computing, LNCS 3001, pp. 51-68.

Held, A., Buchholz, S., Schill, A. (2002) "Modeling of Context Information for Pervasive Computing Applications", In: Proc. of the 6th World Multiconference on Systemics, Cybernetics and Informatics, Orlando, FL, USA.

Henricksen, K., Indulska, J. (2005) "Developing Context-Aware Pervasive Computing Applications: Models and Approach", In: Pervasive and Mobile Computing Journal.

Henricksen, K., Livingstone, S., Indulska, J. (2004) "Towards a Hybrid Approach to Context Modelling, Reasoning and Interoperation", In: Proc. of the 1st International Workshop on Advanced Context Modelling, Reasoning and Management, pp. 54-61.

Hong, J. I., Landay, J. A. (2001) "An Infrastructure Approach to Context-Aware Computing", In: HCI Journal, v. 1, n. 16, pp. 287-303.

Hong, J. I., Landay, J. A. (2004) "An Architecture for Privacy-Sensitive Ubiquitous Computing", In: Proc. of the 2nd International Conference on Mobile Systems, Applications, and Services, ACM 2004, Boston, Massachusetts, USA.

Jones, G. J. F., Brown, P. J. (2004) "The Role of Context in Information Retrieval", In: Workshop on Information Retrieval in Context, pp. 20-22, Sheffield, UK.

Kashyap, V., Sheth, A. (1996) "Semantic and schematic similarities between database objects: a context-based approach", In: The VLDB Journal, v. 5, pp. 276-304.

Klemke, R. (2000) "Context Framework - an Open Approach to Enhance Organisational Memory Systems with Context Modelling Techniques", In: Proc. of the Third International Conference on Practical Aspects of Knowledge Management (PAKM 2000), Basel, Switzerland.

Kofod-Petersen, A., Aamodt, A. (2003) "Case-based situation assessment in a mobile context-aware system", In: Proc. of the Workshop on Artificial Intelligence in Mobile Systems, pp. 41-49, Seattle, USA.

Korpipää, P., Mäntyjärvi, J., Kela, J., Keränen, H., Malm, E. (2003) "Managing Context Information in Mobile Devices", In: IEEE Pervasive Computing, v. 2, n. 3, pp. 42-51.

Kramer, R., Modsching, M., Schulze, J., Hagen, K. (2005) "Context-Aware Adaptation in a Mobile Tour Guide", In: Proc. of the 5th International and Interdisciplinary Conference, CONTEXT 2005, LNCS3554 , Paris, France.

Mark, G., Fuchs, L., Sohlenkamp, M. (1997) "Supporting Groupware Conventions through Contextual Awareness", In: Proc. of the ECSCW'97, pp. 253-268, Lancaster, England, Kluwer Academic Publishers.

Mayrhofer, R. (2006) "An Architecture for Context Prediction", In: Advances in Pervasive Computing, as part of the 2nd International Conference on Pervasive Computing, Austrian Computer Society (OCG), vol. 176, pp. 65-72.

McCarthy, J. (1993) "Notes on Formalizing Contexts", In: Proc. of the 13th International Joint Conference on Artificial Intelligence, pp. 555-560, San Mateo, California.

Mika, P., Akkermans, H. (2005) "Towards a New Synthesis of Ontology Technology and Knowledge Management", In: The Knowledge Engineering Review, v. 19, n. 4, pp. 317-345.

Moran, T. P., Dourish, P. (2001) "Introduction to the Special Issue on Context-Aware Computing", In: Human Computer Interaction, v. 16, n. 2, 3 & 4, pp. 87-95.

Morse, D. R., Armstrong, S., Dey, A. K. (2000) "The What, Who, Where, When and How of Context-Awareness", In: http://www-static.cc.gatech.edu/fce/contexttoolkit/ pubs/CHI2000-workshop.pdf, Access in 03/2006.

Öztürk, P., Aamodt, A. (1997) "Towards a Model of Context for Case-Based Diagnostic Problem Solving", In: Proceedings of the interdisciplinary conference on modeling and using context (Context-97), pp. 198-208, Rio de Janeiro, Brasil.

Palazzo, L. (2006) "Sistemas de Hipermídia Adaptativa", In: http://ia.ucpel.tche.br /~lpalazzo/sha/sha.htm, Access in 09/2006.

Pepper, S., Moore, G. (2001) "XML Topic Maps (XTM) 1.0 - TopicMaps.Org Specification", In: http://www.topicmaps.org/xtm/index.html, Access in 09/2006.

Power, R. (2003) "Topic Maps for Context Management", In: Proc. Workshop on Adaptive Systems for Ubiquitous Computing at the 1st International Symposium on Information and Communication Technologies, pp. 199-204, Dublin, Ireland.

Ranganathan, A., Campbell, R. H. (2003) "A Middleware for Context-Aware Agents in Ubiquitous Computing Environments", In: ACM/IFIP/USENIX International Middleware Conference, Rio de Janeiro, Brasil.

Santoro, F. M., Brézillon, P., Araújo, R. M. (2005) "Context Dynamics in Software Engineering Process", In: International Journal of Advanced Engineering Informatics, Accepted, to appear.

Schilit, B., Adams, N., Want, R. (1994) "Context-Aware Computing Applications", In: Proc. Workshop on Mobile Computing Systems and Applications, Santa Cruz, CA.

Sohlenkamp, M. (1998) "Supporting Group Awareness in Multi-User Enviroment Through Perceptualization", M.Sc. Dissertation, Fachbereich Mathematik-Informatik der Universität - Gesamthochschule - Paderborn.

Souza, D., Salgado, A. C., Tedesco, P. (2006) "Towards a Context Ontology for Geospatial Data Integration", In: Second International Workshop on Semantic-based Geographical Information Systems (SeBGIS'06) (to be published), Montpellier, France.

Srivastava, J., Cooley, R., Deshpande, M., Tan, P. (2000) "Web Usage Mining: Discovery and Applications of Usage Patterns from Web Data", In: SIGKDD Explorations, v. 1, pp. 12-23.

Strang, T., Linnhoff-Popien, C. (2004) "A Context Modeling Survey", In: Workshop on Advanced Context Modeling, Reasoning and Management, In: 6th International Conference on Ubiquitous Computing, Nottingham/England.

Strang, T., Linnhoff-Popien, C., Frank, K. (2003) "CoOL: A Context Ontology Language to enable Contextual Interoperability", In: Proceedings of 4th International

Conference on Distributed Applications and Interoperable Systems (DAIS2003), v. LNCS 2893, pp. 236-247, Paris, France, Springer Verlag.

Truong, K. N., Abowd, G. D., Brotherton, J. A. (2001) "Who, What, When, Where, How: Design Issues of Capture & Access Applications", In: Proceedings of the International Conference on Ubiquitous Computing, pp. 209-224.

Vajirkar, P., Singh, S., Lee, Y. (2003) "Context-Aware Data Mining Framework for Wireless Medical Application", In: DEXA'2003 - Lecture Notes in Computer Science (LNCS), Volume 2736, Springer-Verlag, pp. 381-391.

Vieira, V. (2006) "Gerenciamento de Contexto em Sistemas Colaborativos", Exame de Qualificação e Proposta de Tese de Doutorado, Centro de Informática-UFPE, Brasil.

Vieira, V., Tedesco, P., Salgado, A. C. (2005) "Towards an Ontology for Context Representation in Groupware", In: Proceedings of the 11th International Workshop on Groupware (CRIWG'05), pp. 367-375, Porto de Galinhas, Brasil.

Wang, X. H., Gu, T., Zhang, D. Q., Pung, H. K. (2004) "Ontology based context modeling and reasoning using OWL", In: Workshop on Context Modeling and Reasoning at II IEEE International Conference on Pervasive Computing and Communication, Orlando, Florida.

Weiser, M. (1991) "The computer for the 21st century", Scientific American, v. 265, n. 3, pp. 66-75.

Zacarias, M., Pinto, H. S., Nunes, J., Tribolet, S. (2004) "Redes de Conhecimento em Engenharia Organizacional: O Imperativo dos Contextos de Ação", Caderno de Biblioteconomia Arquivística e Documentação Cadernos BAD, v. 001.

Zimmermann, A., Lorenz, A., Specht, M. (2005) "Applications of a Context-Management System", In: Proceedings of the CONTEXT-2005, pp. 555-569.