Buscar

Computação sensível ao Contexto

Prévia do material em texto

1
Percepção de Contexto
Vagner J. do Sacramento Rodrigues
22
Créditos
• Material:
– Desenvolvido por: Ricardo da Rocha
– Adaptado por: Vagner J. do Sacramento
2
33
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
44
Motivação
• Visão tradicional de sistemas:
– Caixas pretas que recebem entradas do 
usuário
• Características:
– Entrada/Saída explícitas: lenta, intrusiva, 
requer atenção do usuário
– Loop sequencial entrada-saída
• Interesse em mover da visão caixa preta
para sensível a contexto
– Tirar o usuário do “loop” (sempre que possível)
– Reduzir a interação explícita (sempre que
possível)
3
55
Motivação
• Modelo sensível a contexto
Sistema Sensível
Ao Contexto
Entrada
explícita
Saída
explícita
Contexto:
• estado do usuário
• estado do ambiente físico
• estado do sistema computacional
• histórico de interações do usuário …
66
Motivação
• Duas abordagens opostas:
– garantir mobilidade transparente vs. 
– fazer com que aplicações estejam cientes da mobilidade
• Aplicações cientes da mobilidade/contexto
(mobile/context-awareness):
– podem se adaptar dinamica- e automaticamente a 
mudanças no ambiente e às necessidades correntes do 
usuário sem exigir a sua atenção
– Podem explorar características do ambiente tais como a 
posição do usuário, pessoas próximas, hora do dia, 
níveis de ruído, etc. para fornecer serviços e 
informações adequados ao contexto
4
77
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
88
Contexto
• Dey
– Qualquer informação que possa ser utilizada
para caracterizar a situação de uma entidade, 
onde uma entidade pode ser uma pessoa, 
lugar ou objeto que é considerada relevante
para uma interação entre um usuário e uma
aplicação, incluindo o próprio usuário e a 
aplicação. 
– Exemplos típicos de contexto são localização, 
identidade, estado de pessoas e grupos, e 
objetos computacionais e físicos.
5
99
Definições de Contexto (1)
Schilit (e outros) identificaram 4 categorias:
– Contexto computacional: rede, conectividade, custo da 
comunicação, banda passante, recursos (impressoras, 
estações, etc.)
– Contexto do usuário: perfil do usuário, posição, 
velocidade, pessoas próximas, situação social, estado de 
espírito, etc.
– Contexto físico: luminosidade, nível de ruído, 
temperatura, humidade, 
– Contexto de tempo: hora do dia, dia/mes/ano, semana, 
época do ano
1010
Definições de Contexto (2)
• Chen/Kotz definem contexto em função de seu 
efeito sobre uma aplicação:
“Contexto é o conjunto de estados do meio ambiente que:
• ou determinam o comportamento de uma aplicação, ou 
• Causam a ocorrência de um evento específico da aplicação 
que é relevante para o usuário”
O Primeiro denominaram contexto ativo, e o 
segundo contexto passivo.
6
1111
Context-aware Computing
Schilit definiu 4 categorias de Computação Consciente do 
Contexto (CCC):
• Seleção baseada em proximidade: técnica de IHC onde 
objetos mais próximos são ressaltados ou favorecidos para 
acesso
• Reconfiguração automática: incorporação/remoção 
dinâmica de componentes, e/ou das conexões entre os 
mesmos dependendo do contexto
• Informação e comandos contextuais: a informação 
mostrada e os serviços de rede disponíveis dependem do 
atual contexto
• Ações disparadas por trocas de contexto
1212
Context-aware Computing
Pascoe propôs uma taxonomia de propriedades 
conscientes do contexto:
– Sensoriamento
– Adaptação
– Descoberta de recursos
– Correlação entre dados e elementos contextuais 
(contextual augmentation)
Dey combina estas em sua classificação:
– Apresentação de infomação e serviços
– Execução automática de funções
– Rotulamento de informação a (elementos do) contexto 
7
1313
Context-aware Computing
De acordo com a sua classificação de contexto, 
Chen/Kotz definem:
• CCC Ativa: uma aplicação que adapta o seu 
comportamento automaticamente ao contexto 
percebido
• CCC Passiva: uma aplicação que mostra ao 
usuário informação de acordo com o contexto, ou 
registra o contexto em memória persistente para 
futura consulta
Î CCC Ativa leva a novas aplicações e requer 
infra-estrutura específica
1414
Exemplos Existentes de uso de 
Contexto
Context TypesExisting Examples Human Concern
Room ActivitySmoke Alarm Safety
Room ActivityAuto Lights On / Off Convenience
Object IdentityBarcode Scanners Efficiency
Personal Identity 
& TimeFile Systems Finding Info
TimeCalendar Reminders Memory
8
1515
Exemplos Potenciais de Uso de 
Contexto
Existing Examples Context TypesPotential Examples Human Concern
Activity Convenience
Activity Finding Info
Identity Memory
Identity & Time Safety
Time Efficiency
Identity
Time
Location 
Proximity 
Activity
History
…
Health Alert
Auto Cell Phone 
Off In Meetings
Service Fleet
Dispatching
Tag Photos
Proximal Reminders
1616
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
9
1717
Aplicações
Shopping Assistant (AT&T Bell Labs, 1994)
• Usa a localização do cliente na loja para guiar o 
comprador pela loja, p.ex. 
– mostra a localização de certos itens,
– indica promoções, 
– faz uma comparação de preços, etc.
• Para usuários cativos e usuários anônimos, que 
permitem (ou não) o uso de seus perfis ou 
preferências de consumo
1818
Aplicações
Cyberguide (Georgia Tech, 1997)
• Fornece ajuda a turistas, como:
– informações sobre caminhos/rotas/atrações
– informações adicionais sobre as atrações visitadas 
(história, vida do artista)
– permite deixas comentários sobre os itens visitados 
para futuros usuários
– automaticamente compila um diário de visitas e a partir 
desta informação
– faz sugestões sobre lugares que possam interessar
• Localização indoors (usando dispositivos com 
infra-vermelho) e outdoors (GPS)
10
1919
Aplicações
Conference Assistant (Georgia Tech, 1999)
• Usa informação de contexto sobre atividade do 
usuário, seus interêsses, sua localização, hora e 
o programa da conferência para auxiliar o 
participante de uma conferência:
– sugerir sessões/palestras que deve assistir
– na sala de apresentação, é mostrado o nome do 
palestrante, título da apresentação, etc.
– os slides, e todos os comentários, perguntas, anotações 
são gravados (em audio e vídeo) para posterior consulta
• Localização Indoors (usando active badges)
2020
Aplicações
GUIDE (Lancaster, 1999)
• Guia para turistas da cidade de Lancaster
• Usa 802.11 para comunicação e detecção de localização 
(conexão com um AP)
• As células são distantes e sem interseção (handover
desabilitado) permitindo melhor identificação de localização
• Cada celula possui um servidor da célula, que difunde 
informações sobre atrações locais para usuários naquela 
célula 
• Dispositivo é um TabletPC TeamPad (21x15cm, 850g), e 
acesso através da Web 
Cheverst, Davies, Mitchel, Friday: Experiences of Developing a Context-Aware
Tourist Guide: The GUIDE Project. 
11
2121
GUIDE
2222
GUIDE
12
2323
GUIDE (cont.)
• Modelo de Informação de Contexto baseado na integração 
de hipertexto e um modelo de objetos ativos, baseado em 
2 tiposde objetos:
– Objetos de localização: representam as atrações físicas, 
p.ex. Um castelo (possuem atributos como localização, 
horários de funcionamento) 
– Objetos de pontos de navegação: páginas Web com 
informações sobre as atrações e referências para outras 
informações
• Disseminação de informação é por multicast IP: dispositivo 
entra em grupo multicast onde informação sobre a célula 
corrente está sendo difundida
2424
GUIDE (cont.)
Modelo de Informação de Contexto do GUIDE:
Castle
Café
Gallery Objetos de Localização
Objetos de Pontos de 
Navegação
Referencias entre objetos
13
2525
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
2626
Problemas Relacionados
• Modelos
– Descrever a complexidade do ambiente
– Descrever a imprecisão dos sensores
• Sistemas
– Heteronegeidade, interoperabilidade
– Manutenção e evolução
– Segurança
– Distribuição, desempenho
– Modelo de programação
• Aspectos Humanos
– Inferir desejo do usuário
– Privacidade
– Contexto deve ser compreensível
14
2727
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
2828
Aspectos/Abstrações para uma 
Infra-estrutura CW
Situação e Identificação
de Contexto
Situação e Identificação
de Contexto
Percepção:
Simbólicos observáveis
Percepção:
Simbólicos observáveis
Sensoriamento: 
valores observáveis
Sensoriamento: 
valores observáveis
A
sp
ecto
s O
rto
g
o
n
ais
A
sp
ecto
s O
rto
g
o
n
ais
Exploração
• Cada aspecto 
pode ser 
interpretado 
como uma 
camada em que 
abstrações 
podem ser 
interpretadas
• Uma infra-
estrutura (MW ou 
FW) deveria dar 
suporte a todos 
esses aspectos
15
2929
Abstrações para Computação 
CW (1/7)
Situação e Identificação
de Contexto
Situação e Identificação
de Contexto
Percepção:
Simbólicos observáveis
Percepção:
Simbólicos observáveis
Sensoriamento: 
valores observáveis
Sensoriamento: 
valores observáveis
A
sp
ecto
s O
rto
g
o
n
ais
A
sp
ecto
s O
rto
g
o
n
ais
Exploração
• Sensoriamento: 
produz valores 
gerados por 
sensores, 
resultado de 
interpretação 
do ambiente
3030
Abstrações para Computação 
CW (2/7)
Situação e Identificação
de Contexto
Situação e Identificação
de Contexto
Percepção:
Simbólicos observáveis
Percepção:
Simbólicos observáveis
Sensoriamento: 
valores observáveis
Sensoriamento: 
valores observáveis
A
sp
ecto
s O
rto
g
o
n
ais
A
sp
ecto
s O
rto
g
o
n
ais
Exploração
• Percepção: 
valores são 
interpretados 
como valores 
simbólicos, 
independente 
do sensor
16
3131
Abstrações para Computação 
CW (3/7)
Situação e Identificação
de Contexto
Situação e Identificação
de Contexto
Percepção:
Simbólicos observáveis
Percepção:
Simbólicos observáveis
Sensoriamento: 
valores observáveis
Sensoriamento: 
valores observáveis
A
sp
ecto
s O
rto
g
o
n
ais
A
sp
ecto
s O
rto
g
o
n
ais
Exploração
• Valores são 
interpretados 
como 
abstração de 
contexto e 
situações do 
ambiente
3232
Abstrações para Computação 
CW (4/7)
Situação e Identificação
de Contexto
Situação e Identificação
de Contexto
Percepção:
Simbólicos observáveis
Percepção:
Simbólicos observáveis
Sensoriamento: 
valores observáveis
Sensoriamento: 
valores observáveis
A
sp
ecto
s O
rto
g
o
n
ais
A
sp
ecto
s O
rto
g
o
n
ais
Exploração
• Abstração de 
contexto é 
explorada e 
utilizada por 
elementos 
interessados
17
3333
Abstrações para Computação 
CW (5/7)
Situação e Identificação
de Contexto
Situação e Identificação
de Contexto
Percepção:
Simbólicos observáveis
Percepção:
Simbólicos observáveis
Sensoriamento: 
valores observáveis
Sensoriamento: 
valores observáveis
A
sp
ecto
s
O
rto
g
o
n
ais
A
sp
ecto
s
O
rto
g
o
n
ais
Exploração
• Alguns aspectos 
ou abstrações 
não fazem parte 
de nenhuma 
camada em 
especial.
• Exemplo: 
privacidade, 
histórico, 
confiança
• Infra-estruturas 
podem 
implementá-las 
em diferentes 
camadas ou 
como elementos 
ortogonais
3434
Abstrações para Computação 
CW (6/7)
Situação e Identificação
de Contexto
Situação e Identificação
de Contexto
Percepção:
Simbólicos observáveis
Percepção:
Simbólicos observáveis
Sensoriamento: 
valores observáveis
Sensoriamento: 
valores observáveis
A
sp
ecto
s
O
rto
g
o
n
ais
A
sp
ecto
s
O
rto
g
o
n
ais
Exploração
Modelos
18
3535
Abstrações para Computação 
CW (7/7)
Camada de Contexto 
Middleware / Infra-estrutura
Camada de Contexto 
Middleware / Infra-estrutura
Camada lógicaCamada lógica
Camada física
Sensoriamento
Camada física
Sensoriamento
S
erviço
s
S
erviço
s
AplicaçõesAplicações
Modelos de Programação
3636
Exemplo de Organização
Confab (1/5)
• Cada camada provê certo 
nível de abstração & serviços
• Interação entre camadas 
usando formatos de dados e 
protocolos padronizados 
Tecnologia usada em cada 
camada pode mudar, 
contanto que a interface 
entre camadas permaneça 
inalterada
Physical
Logical
Context
Application
In
fr
as
tr
u
ct
u
re
19
3737
Exemplo de Organização
Confab (2/5)
• Sensores captam sinais puros
• Exemplos
– GPS (localização)
– Active Badges
(identidade+localização)
– Sensores de pressão, 
temperatura
– Cameras ou microfones
Physical
Logical
Context
Application
3838
Exemplo de Organização
Confab (3/5)
• A camada Lógica é a modelagem 
da camada física em SW
– Codificação de sinais para dados e 
eventos primitivos
– Interpretação básica de valores 
(TempSensor=110 Î Quente)
– Sensor de Presença => Sala 246L
• Precisa-se modelar
– Precisão
– Granularidade
– ConfiabilidadePhysical
Logical
Context
Application
20
3939
Exemplo de Organização
Confab (4/5)
• Transformação de dados de 
sensores em dados de contexto
• Fusão/Interpretação de dados de 
sensores 
– Combinação de dados sensoriais de 
diferentes tipos
– Leitura de vários dados de sensores 
ao longo do tempo
– A partir de precisão, granularidade e 
confiabilidade inferir probabilidade
• Definição de contextos complexos
– Dirigindo
– Na sala de cinema
Physical
Logical
Context
Application
4040
Exemplo de Organização
Confab (5/5)
• Definição do contexto 
apropriado/relevante para a 
aplicação
– Combinação de contextos de 
diferentes naturezas
– Definição das ações a serem 
tomadas
Physical
Logical
Context
Application
21
4141
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
4242
Modelagem de Contexto
• Tarefa de estruturar uma informação 
contextual, com objetivo de:
– Permitir a correta interpretação da informação 
de contexto pelos usuários e desenvolvedores
– Permitir o processamento de informações de 
contexto
– Reutilizar contexto
• Faz parte do processo de engenharia de 
software de aplicações sensíveis a 
contexto
22
4343
Modelagem de Contexto
• Característicasda Informação de Contexto
– Informação contextual pode possuir 
várias características temporais: estático x 
dinâmico, atraso na recuperação de contexto, 
histórico de contexto, ...
– Informação contextual é imperfeita: 
imperfeição dos sensores, desatualização, 
algoritmos de inferência, ...
– Contexto pode ter várias representações 
alternativas: abstrações. Ex: localização em 
coordenadas e em posição simbólica.
– Informação contextual é altamente inter-
relacionada
4444
Modelagem de Contexto
• Elementos para modelagem de contexto
– Objeto do contexto: entidades, atividades, 
tempo
– Estado: estático e dinâmico, local e distribuído, 
temporalidade
– Relacionamento entre contextos: abstração, 
composição, distribuição, inferência
– Qualidade de contexto: ambiguidade e 
confiabilidade, negociação
– Representação
– Eventos: declaração de meta-eventos, 
abstração e composição
23
4545
Modelagem de Contexto
• Tipos de modelos de contexto
– Pares chave-valor
– Baseados em linguagens de marcadores
– Gráficos
– Baseados em lógica
– Baseados em orientação a objetos
– Baseados em ontologias
4646
Pares chave-valor
• Contexto é descrito como um conjunto de 
pares (chave, valor)
• Exemplo:
((Usuário = “rcarocha”),
(Localização = “LAC”),
(Dispositivo = “Pocket PC”),
(SO = “Windows CE”))
• Modelo utilizado em alguns projetos 
(Schilit94, MoCA), devido à simplicidade
• Bastante limitado
24
4747
Modelos baseados em 
linguagens de marcadores
• Utiliza um linguagem baseada em 
marcadores (XML) para representar 
contexto em uma forma hierárquica
• Muitas abordagens estendem o padrão 
CC/PP, como CSCP (Comprehensive
Structured Context Profiles)
4848
Modelos gráficos
• Utilizam uma abordagem similar a UML (ou 
mesmo uma extensão) para modelar contexto
• Útil para modelar a estrutura de contexto
• Exemplo: UML, ORM estendido
25
4949
Modelos baseados em 
orientação a objetos
• Utilizam construções e abstrações de 
orientação a objetos para modelar 
contexto
– Encapsulamento
– Abstração
– Reutilização
• Exemplo:
– Cues (projeto TEA)
– Active Object Model (GUIDE)
5050
Modelagem de Qualidade de 
Contexto
• Suporte a qualidade de contexto: 
associações possuem anotações referentes
aos parâmetros de qualidade
– Cada parâmetro é descrito como uma ou mais
métricas de qualidade, a qual representa
formas precisas de medir qualidade de 
contexto com respeito ao parâmetro
– Dependente da aplicação:
• e.g., localização do usuário: accuracy, freshness
• e.g., atividade do usuário: certainty, accuracy
26
5151
Exemplo de modelagem de 
qualidade de contexto
5252
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
27
5353
Monitoramento de Contexto
• Tipos de sensores
• Características
– Erros
– Sensoriamento de informações diferentes
– Localização física
– Técnicas dependem muito da aplicação
5454
Exemplo: 
Sensoriamento de Localização
Abordagens para a obtenção da localização diferem 
nos seguintes aspectos:
• Parâmetros necessários para cálculo da posição 
• Fenômeno físico utilizado
• Gasto de Energia
• Infra-estrutura necessária
• Complexidade de tempo dos algoritmos utilizados
28
5555
Serviços Baseados em Localização
• Fornecem informações e/ou funcionalidades 
dependentes da posição física do usuário no 
momento da invocação do serviço
• Exemplos:
– Mapas/Informações sobre a região corrente (Sala de 
um Museu, Parque Temático)
– Restaurantes próximos
– Mensagem (ou ligação telefônica) é encaminhada para 
um computador ou telefone mais próximo 
5656
LBS: Principais Componentes
• Usuário móvel: precisa ter dispositivo com 
interface sem fio + elemento para inferência de 
localização (ou sinalização de identificação)
• Provedor: entidade que provê o LBS (para redes 
especificas, em determinada região, etc.)
• Protocolo de comunicação
• Método e Infra-estrutura para determinar a 
localização de um usuário (dispositivo de 
comunicação + identificação)
29
5757
Técnicas de Localização
• Etapas:
1. Estimativa de distância, ângulo ou sinal
2. Cálculo de Coordenadas
• Técnicas:
– Triangulação
– Proximidade 
– Análise de Cenas
5858
Tipos de Soluções para Redes 
Celulares
• Centralizada vs. Distribuída
– Dispositivos enviam as informações para um único nó 
que faz o cálculo das posições, ou 
– cálculo da posição é feito no dispositivo
• Baseada em rede vs. no terminal:
– Uso de equipamentos de localização em rede para a 
detecção de posição
– Dispositivos têm componentes especializados em 
detectar sinais e calcular posição (GPS,...)
30
5959
Algumas Técnicas
Baseadas na Rede:
• Cell of Origin: ID da Celula + Tempo decorrido
• Received Signal Strength Indicator (RSSI): Atenuação
• Multipath Fingerprinting: o padrão de ondas de rádio 
refletidas determina o local aproximado
• Time Difference of Arrival (TDoA): Lateração
• Angle of Arrival (AoA): Angulação
Baseadas no terminal (Handset-based):
• Enhanced Observed Time Difference (E-OTD): TDoA no 
dispositivo
• Global Positioning System: Multilateração NAVSTAR
• Assisted GPS (A-GPS):
• Advanced Forward Link Trilateration (A-FLT): Lateração p/ 
CDMA
6060
Técnicas de Localização Indoor
• Infra-estrutura de sensores RF
– Active Badge
– Active BAT (AT&T Labs)
• Combina RF com Ultra-som
– Cricket (Projeto Oxygen, MIT)
• Baseado em intensidade de sinal 802.11
– RADAR (Microsoft)
– Ekahau Positioning Engine (Ekahau)
• Reconhecimento de imagens 
– Easy Living
31
6161
Técnicas de Localização Indoor
Principais Diferenças:
• Necessidade de sensores/transmissores especiais
• Identificação de Usuário vs. Dispositivo 
• Permitem a detecção/ rastreamento de usuários 
• Precisão: região de cobertura vs. posição 
geográfica
• Tratamento de interferências
6262
Active Bat
AT&T Labs e Cambridge desenvolveram o Bat Ultrasonic Location
System
• Principais requisitos
– Granularidade fina
– Localização 3D em ambientes fechados (Indoors)
– Informação de Orientação
• Objetivos:
– Baixo consumo de energia
– Wireless
– Baixo custo
• Usa Multi-lateração (uma matriz de receptores fixos e transmissores 
móveis)
32
6363
Active Bat
• Cada transmissor tem:
– 1 trans-receptor RF, 
– vários transmissores ultrasônicos, 
– 1 micro-processador
– um ID único
• Elementos receptores:
– Consistem de um receptor RF
– Com interface para uma rede 
– Posicionados no teto
– Conectados por uma rede serial formando uma matriz
– Esta rede é conectada em um computador para rastrear os 
transmissores
6464
Active Bat
Técnica de Localização:
• Uma Estação Base RF difunde mensagens para cada 
transmissor
• A cada mensagem recebida, o transmissor envia um pulso 
ultrasônico
• Os receptores também recebem o sinal de RF
• Estimativa de distância é feita nos receptores a partir do 
delay entre o sinal RF e o sinal ultrasônico, que é enviada 
ao computador para cálculo das coordenadas
• Coordenada é armazenada em uma base de dados de 
localização
33
6565
Active Bat
ERB
RF
RFUltra-soundsignal
Central 
computer
Location
Database
transmitter
receptors
Distances
6666
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
34
6767
Modelos de Programação (1/3)
• Contexto não é elemento de 1a classe nas
linguagensde programação
• Tarefas Principais:
– Acesso a informação de contexto: síncrono
– Reatividade / Adaptação: assincronismo
• Desafios
– Prover abstrações de programação específicas
– Compartilhamento de abstrações
– Facilitar a manutenção e evolução do software
6868
Modelos de Programação (2/3)
• Níveis de adaptação
– Aplicações
– Intra-serviço
– Inter-serviços
• Estratégias de Adaptação
– Aplicações indicam mudanças no 
comportamento (if-then)
– Cliente registra nível de recurso desejado 
(eventos)
– Interação com o usuário (interativo)
• Modelos de Programação devem permitir a 
especificação de tais situações
35
6969
Modelos de Programação (3/3)
• Não há modelo de programação para 
computação sensível a contexto
– Diversas abordagens propostas
• Modelos Propostos:
– Programação direta
– Triggers
– Reflexão computacional
– Adaptação baseada em perfis
– Modelos mais específicos: COP
• Modelos não são completamente 
ortogonais
7070
Programação Direta
• Modelo tradicional de programação, no qual
adaptações dependentes do contexto são
expressas por conjuntos de cláusulas IF-THEN 
• Código indica explicitamente quais tarefas devem
ser executada para cada informação de contexto
avaliada
• Adaptação fica fortemente atrelada ao código Â
qualquer evolução é expressa em modificação no 
código
• Desvantagens:
– Difícil manutenção e evolução
– Código pouco legível
– Alta dependência entre modelos de contexto e código
– Geralmente associado ao modelo síncrono de acesso a 
contexto
36
7171
Triggers (1/5)
• Mais simples e comum modelo de 
programação para programação sensível
ao contexto
• Código registra as situações contextuais
nos quais está interessado e é avisado
quando elas acontecem
• Modelo é assíncrono
• Trigger
– Condição de interesse
– Callback  código que deve ser executado na
ocorrência da condição
7272
Triggers (2/5)
• Exemplo: Context Toolkit
37
7373
Triggers (3/5)
• Exemplo de trigger (subscription) na 
MoCA:
((EnergyLevel < 65) or (FreeMemory < 18000) or
((OnLine = false) and (DeltaT > 8000)) or
(AdvertisementPeriodicity > 2)) 
– Código 1:
Topic topic =
eciClient.subscribe(subject,expression); 
MyEventListener listener1 = new MyEventListener();
eciClient.addListener(listener1, topic);
7474
Triggers (4/5)
• Henricksen & Indulska
– Aplicação registra triggers que indicam:
• Quantas vezes o trigger se aplica
• Condição de entrada e saída
– Exemplo:
upon EnterFalse(Occupied(“Amy Carr”))
when true
do Notify of recent missed calls
always
38
7575
Triggers (5/5)
• Desvantagens
– Não oferece suporte para acesso síncrono a contexto
– Adaptação é expressa no código  qualquer evolução 
pressupõe em modificação no código
– Não distingue adaptação da lógica da aplicação
• Complexidade em mudar o comportamento do software em 
tempo real
• Após ser notificada, a aplicação pode/deve implementar 
algum tipo de adaptação para os clientes correntes e 
futuros
• Exemplos
– Context Toolkit
– MoCA
– Henricksen & Indulska.... 
7676
Reflexão Computacional
• Técnica para implementação da adaptação do 
comportamento do software
• Uma API permite o acesso a uma camada de 
meta-objetos, que descreve o software per si. 
Modificando tais meta-objetos, o próprio software 
é modificado.
• Ao invés de codificar a adaptação propriamente 
dita, o programador modifica os meta-objetos
que descrevem o software
• Limitações
– Não pressupõe mecanismos de acesso a contexto
– Não é ortogonal e depende de outro modelo 
complementar
– Complexidade
39
7777
Adaptação baseada em Perfis
• Desenvolvedor descreve perfis ou políticas 
de adaptação do software
• Cada perfil especifica
– Condição contextual em que ele deve ser 
aplicado
– Comportamento que deve ser adotado
• Perfis podem ser especificados 
externamente ao código
• Exemplos:
– MobiPADS
– CARISMA
– Henricksen & Indulska, …
7878
MobiPADS
• Perfil é descrito em um arquivo XML, externo às
aplicações
• Descreve uma configuração de serviços do 
middleware: quais devem ser selecionados e 
como eles devem ser encadeados
40
7979
CARISMA
• Aplicações definem perfis como conjunto de 
políticas que devem ser adotadas para cada 
serviço (do middleware)
• Middleware se encarrega de selecionar o perfil 
apropriado
• Adaptação não é expressa na aplicação
8080
Adaptação baseada em Perfis
• Problemas resultantes  Conflitos de 
perfis
– Quando mais de um perfil se aplica a um 
determinado contexto
• Podem ocorrer para uma mesma aplicação, entre 
perfis de aplicações/serviços em um mesmo 
dispositivo ou pode ser um conflito distribuído
• Vantagens
– Adaptação é desacoplada do código
– Permite uso de perfis de alto-nível, utilizados 
inclusive pelo próprio usuário
– Reutilização (perfis podem ser compartilhados 
entre várias aplicações)
41
8181
Roteiro
• Motivação
• Contexto e Computação Sensível ao 
Contexto
• Exemplos de Aplicações
• Problemas Relacionados
• Arquitetura de Software
• Modelagem de Contexto
• Monitoramento de Contexto
• Modelos de Programação
• Middlewares
8282
Middlewares
• Facilitam o desenvolvimento de aplicações e 
serviços sensíveis a contexto.
• Por que não simplesmente um serviço de 
contexto? 
– Porque os próprios serviços do middleware podem ser 
sensíveis a contexto. 
– Sua adaptação deve ser tratada em um nível diferente 
mas complementar à adaptação de aplicações 
• Papéis
– Serviço de assinatura e entrega de contexto
– Serviço de querying 
– Serviço de transformação e síntese de contexto
– Descoberta e gerenciamento de serviços
– Provê camada e paradigma de adaptação
– Resolução de conflitos
42
8383
Middlewares
• Deve prover adaptação em diferentes 
níveis
– Aplicação
– Inter-serviços
– Intra-serviços
• Componentes básicos
– Monitoramento de sistema (suporte a 
sensores)
– Context Broker
– Repositório de Contexto
• Exemplos:
– Context Toolkit, MoCA, MobiPADS, CARISMA, 
...
8484
Context Toolkit
• Toolkit para desenvolvimento de 
aplicações distribuídas e sensíveis a 
contexto
– Framework para aquisição e tratamento de 
contexto
– Componentes padronizados
• Três abstrações-chave
– Widgets, Interpreters e Aggregators
43
8585
Context Widgets
• Widgets implementam abstrações sobre
sensores
GPSActiveBadge
App App
Location
Widget
Cell Phone
Location
Active
Badge
8686
Context Interpreters
• Convertem ou interpretam contexto em
uma informação de mais alto nível
App
Location
Widget
Location 
to Room
Interpreter
Location 
to Street
Interpreter
44
8787
App
Person
Aggregator
Activity
Widget
Affect
Widget
App
Location
Widget
Location 
to Room
Interpreter
Context Aggregators
• Agregam contextos em entidades
particulares, facilitando o uso e 
desenvolvimento
8888
Context Services
• Componentes que executam ações
baseadas em contexto e que atuam no 
ambiente In/out
board
45
8989
Context Discoverer
• Registra os componentes de contexto
In/out
board
9090
Conclusões (1/2)
• Desenvolvimento de aplicações sensíveis a 
contexto, requerem
– Modelo de contexto apropriado para modelar a 
complexidade do contexto a ser utilizado. 
– Modelo de programação de aplicações 
sensíveis a contexto, que permita:
• Adaptações em vários níveis
• Separação da lógica do programa com lógica das 
adaptações
• Compartilhamento de abstrações
– Infra-estrutura (middleware) que oculte a 
complexidade do sistema, como por exemplo, 
sensoriamento do ambiente
46
9191
Conclusões (2/2)
• Não existem modelos padronizados e nem 
tampouco que seja comprovadamenteadequados 
a quaisquer aplicações sensíveis a contexto
• Os modelos e infra-estruturas estão em geral 
muito limitados a um domínio de aplicação. Ex: 
mecanismos do MobiPADS funcionam melhor em 
adaptação de conteúdo (web)
• Atualmente, uma disciplina de Engenharia de 
Software Sensível a Contexto só pode ser 
definida a partir das particularidades da infra-
estrutura e/ou modelo adotado como referência 
para implementação
• Soluções atuais ainda produzem software 
sensível a contexto bastante complexo

Continue navegando