percepção de contexto - endler/courses/mobile/transp/contexto-rca... · definições de contexto...
TRANSCRIPT
1
Percepção de Contexto
Ricardo Couto Antunes da Rocha
22
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
33
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 pretapara sensível a contexto– Tirar o usuário do “loop” (sempre que possível)– Reduzir a interação explícita (sempre que
possível)44
Motivação
• Modelo sensível a contexto
Sistema SensívelAo Contexto
Entradaexplícita
Saídaexplícita
Contexto:• estado do usuário• estado do ambiente físico• estado do sistema computacional• histórico de interações do usuário …
2
55
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
66
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
77
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 relevantepara uma interação entre um usuário e umaaplicaçã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.
88
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
3
99
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.
1010
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
1111
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
1212
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 consultaCCC Ativa leva a novas aplicações e requer infra-estrutura específica
4
1313
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
1414
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 FleetDispatching
Tag Photos
Proximal Reminders
1515
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
1616
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
5
1717
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)
1818
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)
1919
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-AwareTourist Guide: The GUIDE Project.
2020
GUIDE
6
2121
GUIDE
2222
GUIDE (cont.)
• Modelo de Informação de Contexto baseado na integração de hipertexto e um modelo de objetos ativos, baseado em 2 tipos de 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
2323
GUIDE (cont.)
Modelo de Informação de Contexto do GUIDE:
CastleCafé
Gallery Objetos de Localização
Objetos de Pontos de Navegação
Referencias entre objetos
2424
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
7
2525
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
2626
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
2727
Aspectos/Abstrações para uma Infra-estrutura CW
Situação e Identificaçãode Contexto
Situação e Identificaçãode Contexto
Percepção:Simbólicos observáveis
Percepção:Simbólicos observáveis
Sensoriamento: valores observáveisSensoriamento:
valores observáveis
Asp
ectos O
rtogonais
Asp
ectos O
rtogonais
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
2828
Abstrações para Computação CW (1/7)
Situação e Identificaçãode Contexto
Situação e Identificaçãode Contexto
Percepção:Simbólicos observáveis
Percepção:Simbólicos observáveis
Sensoriamento: valores observáveisSensoriamento:
valores observáveis
Asp
ectos O
rtogonais
Asp
ectos O
rtogonais
Exploração
• Sensoriamento: produz valores gerados por sensores, resultado de interpretação do ambiente
8
2929
Abstrações para Computação CW (2/7)
Situação e Identificaçãode Contexto
Situação e Identificaçãode Contexto
Percepção:Simbólicos observáveis
Percepção:Simbólicos observáveis
Sensoriamento: valores observáveisSensoriamento:
valores observáveis
Asp
ectos O
rtogonais
Asp
ectos O
rtogonais
Exploração
• Percepção: valores são interpretados como valores simbólicos, independente do sensor
3030
Abstrações para Computação CW (3/7)
Situação e Identificaçãode Contexto
Situação e Identificaçãode Contexto
Percepção:Simbólicos observáveis
Percepção:Simbólicos observáveis
Sensoriamento: valores observáveisSensoriamento:
valores observáveis
Asp
ectos O
rtogonais
Asp
ectos O
rtogonais
Exploração
• Valores são interpretados como abstração de contexto e situações do ambiente
3131
Abstrações para Computação CW (4/7)
Situação e Identificaçãode Contexto
Situação e Identificaçãode Contexto
Percepção:Simbólicos observáveis
Percepção:Simbólicos observáveis
Sensoriamento: valores observáveisSensoriamento:
valores observáveis
Asp
ectos O
rtogonais
Asp
ectos O
rtogonais
Exploração
• Abstração de contexto é explorada e utilizada por elementos interessados
3232
Abstrações para Computação CW (5/7)
Situação e Identificaçãode Contexto
Situação e Identificaçãode Contexto
Percepção:Simbólicos observáveis
Percepção:Simbólicos observáveis
Sensoriamento: valores observáveisSensoriamento:
valores observáveis
Asp
ectos
Orto
gonais
Asp
ectos
Orto
gonais
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
9
3333
Abstrações para Computação CW (6/7)
Situação e Identificaçãode Contexto
Situação e Identificaçãode Contexto
Percepção:Simbólicos observáveis
Percepção:Simbólicos observáveis
Sensoriamento: valores observáveisSensoriamento:
valores observáveis
Asp
ectos
Orto
gonais
Asp
ectos
Orto
gonais
Exploração
Modelos
3434
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ísicaSensoriamentoCamada físicaSensoriamento
Serviço
sServiço
s
AplicaçõesAplicações
Modelos de Programação
3535
Exemplo de OrganizaçãoConfab (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
Infr
astr
uct
ure
3636
Exemplo de OrganizaçãoConfab (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
10
3737
Exemplo de OrganizaçãoConfab (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
3838
Exemplo de OrganizaçãoConfab (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
3939
Exemplo de OrganizaçãoConfab (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
4040
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
11
4141
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
4242
Modelagem de Contexto
• Características da 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 interrelacionada
4343
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
4444
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
12
4545
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 projetos mais antigos (Schilit94, MoCA), devido à simplicidade
• Bastante limitado
4646
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 (ComprehensiveStructured Context Profiles)
4747
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
4848
Modelos baseados em lógica
• Definem condições nas quais um fato ou expressão pode ser derivado a partir de um conjunto de outras expressões ou fatos.
• Possui um alto grau de formalidade– Difíceis de implementar– Difíceis de modelar contexto complexo
• Exemplo:– Teoria da situação de Akman e Surav
13
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
Modelos baseados em ontologias
• Ontologias permitem a especificação formal de conceitos e seu interrelaciomento.
• Contexto é modelado na forma de conceitos e fatos
• Exemplos:– CoBrA– CoOL– Ambient Networks
5151
ExemploHenrinksen & Indulska
• 3 entidades: pessoas, dispositivos de comunicação e canais de comunicação
5252
• Associações estáticas• Associações dinâmicas
– Sensed: transformados de dados brutos, mudam frequentemente, contém erros de sensores, ….
– Derived: uma função derivada de outrasassociações (inferência)
– Profiled: fornecida por usuários
Classificando Associações
14
5353
Exemplo mais completo
5454
Modelagem de dependências
5555
Modelagem de Qualidade de Contexto
• Suporte a qualidade de contexto: associações possuem anotações referentesaos parâmetros de qualidade– Cada parâmetro é descrito como uma ou mais
métricas de qualidade, a qual representaformas 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
5656
Exemplo de modelagem de qualidade de contexto
15
5757
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
5858
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
• Complementação de sensores– Diminuição de erro– Inclusão de informação adicional– Nem sempre sensores recuperam situações
(contextos) ex:
5959
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
6060
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
16
6161
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 (através de seu dispositivo de comunicação ou identificação)
6262
Técnicas de Localização
• Etapas:1. Estimativa de distância, ângulo ou sinal2. Cálculo de Coordenadas
• Técnicas:– Triangulação– Proximidade – Análise de Cenas
6363
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 (TDOA, AOA,..)– Dispositivos têm componentes especializados em
detectar sinais e calcular posição (GPS, AFTL,...)
6464
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• Angle of Arrival (AoA): Angulação• Time of Arrival (ToA): Lateração• Time Difference of Arrival (TDoA): LateraçãoBaseadas 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
17
6565
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
• Sensoriamento de Pressão– Smart Floor (Georgia Inst. Of Technology)
6666
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
6767
Active Bat
AT&T Labs 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)
6868
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
18
6969
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
7070
Active Bat
ERB
RF
RFUltra-soundsignal
Central computer
LocationDatabase
transmitter
receptors
Distances
7171
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
7272
Modelos de Programação (1/3)
• Contexto não é elemento de 1a classe naslinguagens de 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– Balancear decisões programadas com
interação com o usuário– Facilitar a manutenção e evolução do software
19
7373
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– Cliente registra nível de recurso desejado– Interação com o usuário
• Modelos de Programação devem permitir a especificação de tais situações
7474
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
7575
Programação Direta
• Modelo tradicional de programação, no qualadaptações dependentes do contexto sãoexpressas por conjuntos de cláusulas IF-THEN
• Código indica explicitamente quais tarefas devemser executada para cada informação de contextoavaliada
• Adaptação fica fortemente atrelada ao códigoqualquer 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
7676
Triggers (1/5)
• Mais simples e comum modelo de programação para programação sensívelao contexto
• Código registra as situações contextuaisnos quais está interessado e é avisadoquando elas acontecem
• Modelo é assíncrono• Trigger
– Condição de interesse– Callback código que deve ser executado na
ocorrência da condição
20
7777
Triggers (2/5)
• Exemplo: Context Toolkit
7878
Triggers (3/5)
• Exemplo de trigger (subscription) no 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);
7979
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 truedo Notify of recent missed callsalways
8080
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
• Exemplos– Context Toolkit– MoCA– Henricksen & Indulska....
21
8181
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-objetosque descrevem o software
• Limitações– Não pressupõe mecanismos de acesso a contexto– Não é ortogonal e depende de outro modelo
complementar– Complexidade
8282
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, …
8383
MobiPADS
• Perfil é descrito em um arquivo XML, externo àsaplicações
• Descreve uma configuração de serviços do middleware: quais devem ser selecionados e como eles devem ser encadeados
8484
CARISMA
• Aplicações definem perfis como conjunto de políticas que devem ser adotados para cada serviço (do middleware)
• Middleware se encarrega de selecionar o perfil apropriado
• Adaptação não é expressa na aplicação
22
8585
Henricksen & Indulska (1/2)
• Abstração de situação– Perfis de alto nível, usados para que aplicações indiquem
preferências para adaptação
8686
Henricksen & Indulska (2/2)
• Usuários podem indicar que peso será dado para cada um dos perfis (situações)
• Uma API permite acesso aos perfis que se aplicam, o peso de cada um, e selecionar aquele mais adequado ao contexto corrente (Branchingmodel)
8787
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 dispositivos 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)8888
Modelos Específicos
• Modelos anteriores não são suficientespara cobrir adequadamente os requisitosde adaptação de software sensível aocontexto
• Vários modelos complementares têm sidodesenvolvidos
• Exemplo:– Modelo de branchs (Henrinksen&Indulska)– Context oriented programming– Programação com espaços do ActiveBadges
23
8989
Modelo de Branchs
• Aplicações podem selecionar qual perfil de adaptação deve ser escolhido (quando mais de um se aplica) de acordo com as especificidades da aplicação
• Alguns métodos da API de branching
9090
Context Oriented Programming (1/4)
• Rakotonirainy, University of Queensland(Australia)
• Similar ao Stick-E note
9191
Context Oriented Programming (2/4)
9292
Context Oriented Programming (3/4)
24
9393
Context Oriented Programming (4/4)
• Programa é implementado em python• Contexto é descrito em XML• Funciona melhor com documentos do que
um programas• Adaptação pode ser estática ou dinâmica
– Na adaptação dinâmica, código podeexplicitamente indicar o trecho que deve ser selecionado para um dado contexto
9494
Arquitetura
9595
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
9696
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
25
9797
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,
...9898
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
9999
Context Widgets
• Widgets implementam abstrações sobresensores
GPSActiveBadge
App App
LocationWidget
Cell PhoneLocation
ActiveBadge
100100
Context Interpreters
• Convertem ou interpretam contexto emuma informação e mais alto nível
App
LocationWidget
Location to Room
Interpreter
Location to Street
Interpreter
26
101101
App
PersonAggregator
ActivityWidget
AffectWidget
App
LocationWidget
Location to Room
Interpreter
Context Aggregators
• Agregam contextos em entidadesparticulares, facilitando o uso e desenvolvimento
102102
Context Services
• Componentes que executam açõesbaseadas em contexto e que atuam no ambiente In/out
board
103103
Context Discoverer
• Registra os componentes de contexto
In/outboard
104104
MobiPADS
• Mobile Platform for Actively Deployable Service• Plataforma baseada em serviços, tendo como
foco aplicações para Internet em redes sem fio e celulares
• Dois agentes:– MobiPADS server, na rede infra-estruturada– MobiPADS client, em dispositivos móveis
• Dois componentes:– Sistema de componentes– Espaço de serviços MobiPADS
27
105105
MobiPADSArquitetura
106106
MobiPADS e Mobilets
• No espaço de serviços, uma série de mobilets formam uma cadeia de processamento (service chain)
• Aplicações fazem uso das funcionalidades agregadas da coleção de mobilets
• Mobilets– Entidade que implementa um serviço– Pode ser baixada, inserida e migrada para uma
plataforma MobiPADS em execução– Existem em pares: cliente e servidor
107107
MobiPADSComponentes de Sistema
• Configuration Manager: negocia conexão cliente e servidos e gerencia objetos de serviços
• Service Migration Manager: controla migração de objetos serviço
• Service Directory• Event Register: notifica mudanças
contextuais• Channel Service: provê um canal virtual
de comunicação entre serviços
108108
MobiPADSConsciência de Contexto
28
109109
Notificações de Mudanças Contextuais
• Perfil do sistema: arquivo XML com configuração metalevel dos componentes e entidades do sistema.
110110
Notificações de Mudanças Contextuais
• Exemplo de Evento Composto– HighCPUAvailability
(CPU_type = “XScale PAX 250”) AND [(CPU_clock_rate= 400 AND CPU_loading < 50%) OR
(CPU_clock_rate = 200 AND CPU_loading < 10%)] AND
(Power_warning = false)
111111
Reconfiguração Dinâmica de Serviços
• Pode ocorrer de duas formas:– Incluindo ou removendo mobilets da cadeia de serviços– Comunicando mudanças no ambiente aos mobilets, que
então decidem se adaptar
• Deployment Ativo– Deployment de serviços é feito pelo cliente MobiPADS
deve saber com antecipação quais os tipos de mobiletsque pode precisar
• Quando cliente MobiPADS inicia, controlador de serviços requisita a carga do perfil do sistema que provoca a criação de Metachains.
112112
Reconfiguração Dinâmica de Serviços
29
113113
Reconfiguração Dinâmica de Serviços
• Exemplo de reconfiguração
114114
Projeto CARISMA
• CARISMA – Context-Aware Reflective mIddleware Systemfor Mobile Applications - University of College London
• Middleware faz uso de reflexão estrutural e comportamental para habilitar o desenvolvimento de aplicações consciente de contexto
• Aplicação pode ser personalizada por meio de perfis de aplicação
• Princípios:– Aplicações devem estar conscientes do seu contexto de
execução– Aplicações conscientes de contexto fazem uso de meta-dados
e reflexão
115115
Projeto CARISMA
• Exemplo de perfil de aplicação
116116
Projeto CARISMA
• Protocolo para resolução de conflitos– Participantes: auctionners (middleware),
bidders (aplicações), goods (políticas)– Cada bidder submete um único valor de bid e o
vencedor é aquele com o maior bid– Bids são computados baseados em conceitos
não funcionais como segurança, disponibilidade e desempenho
• Reflexão permite as aplicações a modificarem os requisitos não funcionais nos quais estão interessados
30
117117
Projeto CARISMA
• Exemplo de conflito (local): intra-profiletalkReminder
soundAlertLocation = outdoor
vibraAlertLocation = indoor
silentAlertLocation = indoorBattery < 15%
• Exemplo de utility function(battery, 2), (privacy, 10), (focusing, 10)
118118
Projeto CARISMA
• Exemplo de conflito distribuído: inter-profiles
119119
Henricksen & IndulskaArquitetura
120120
Conclusões (1/2)
• Desenvolvimento de aplicações sensíveis a contexto, requerem– Modelo de contexto suficiente 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, sensores
31
121121
Conclusões (2/2)
• Não existem modelos padronizados e nem tampouco que seja comprovadamente adequados 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
122122
Referências