Introdu¸c˜ao `a Computa¸c˜ao M´ovel
Computa¸c˜ao Ciente do Contexto - Parte II
Francisco Jos´e da Silva e Silva Rafael Fernandes Lopes Laborat´orio de Sistemas Distribu´ıdos (LSD)
Departamento de Inform´atica / UFMA http://www.lsd.deinf.ufma.br
Agenda
1 Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
2 Middleware para Computa¸c˜ao Ciente de Contexto
Context Toolkit MobileHealthNet
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
Adapta¸c˜
ao da Aplica¸c˜
ao a Mudan¸cas de
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
Abordagens para Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de
Contexto
Execu¸c˜ao de a¸c˜oes disparadas por mudan¸cas de contexto Reconfigura¸c˜ao dinˆamica param´etrica a partir de mudan¸cas de contexto.
Ex: bateria fraca ⇒ n˜ao incluir anexos
Reconfigura¸c˜ao dinˆamica estrutural a partir de mudan¸cas de contexto. Ex: bateria fraca ⇒ substitui¸c˜ao do algoritmo de compress˜ao de dados
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
A¸c˜oes Disparadas por Contexto: Active Badge (crach´a)
O active badge periodicamente dissemina um identificador ´unico para determinar a localiza¸c˜ao do usu´ario;
Eventos como “chegando”, “saindo”, “estabelecido”, “ausente” s˜ao gerados pelo Active Badge Location System;
Um bot˜ao no crach´a permite tamb´em disparar um evento “aten¸c˜ao” Monitores da atividade dos active badge executam comandos Unix conforme requerido;
Usu´arios especificam a¸c˜oes disparadas por contexto em um arquivo de configura¸c˜ao contendo eventos e a¸c˜oes na forma: badge location event-type action
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
A¸c˜oes Disparadas por Contexto: Contextual Remiders
(ParcTabs)
Disponibiliza uma forma mais expressiva;
Predicados podem conter data, tempo, localiza¸c˜ao e proximidade, conforme o exemplo abaixo.
after April 15
between 10 and 12 noon in room 35-2200 with {User Adams}
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
Stick-E Note
Considera que o usu´ario porta um PDA com conectividade sem fio e
equipado com v´arios sensores, como um transceiver GPS;
Uma Stick-E Note ´e um documento SGML (Standard Generalized
Markup Language) com uma se¸c˜ao contexto e um corpo:
<note>
<at> "Noble Engineering Library" <body>
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
Abordagens para Reconfigura¸c˜ao Dinˆamica: Reflex˜ao
Computacional
Reflex˜ao computacional: habilidade de um software observar ou at´e mesmo modificar a sua estrutura ou comportamento
Introspec¸c˜ao: capacidade que um software tem de examinar sua
pr´opria estrutura, estado e representa¸c˜ao Tipos:
Estrutural: possibilita modificar a estrutura das classes ou objetos, atrav´es do acr´escimo de atributos, m´etodos e modifica¸c˜ao da hierarquia de heran¸ca
Comportamental: possibilita modificar o comportamento dos programas em execu¸c˜ao atrav´es da intercepta¸c˜ao de ativa¸c˜oes dos objetos, m´etodos, e atributos de interesse.
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
Abordagens para Reconfigura¸c˜ao Dinˆamica: Reflex˜ao
Computacional
Reflection: padr˜ao arquitetural que divide um software em um meta-n´ıvel e em um n´ıvel base
Meta-n´ıvel: representa a estrutura e o comportamento do software em elementos chamados meta-objetos
N´ıvel base: define a l´ogica da aplica¸c˜ao e a implementa¸c˜ao das regras de neg´ocio
S˜ao causalmente conectados atrav´es de um protocolo de
meta-objetos, de forma que modifica¸c˜oes em um ser˜ao refletidas no outro
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
Abordagens para Reconfigura¸c˜ao Dinˆamica: Programa¸c˜ao
Orientada a Aspectos
Interesse: parte do dom´ınio do sistema que se deseja tratar com uma unidade conceitual ´unica
V´arios requisitos entrela¸cados ao longo do c´odigo: logging, seguran¸ca, distribui¸c˜ao, persistˆencia
Esse c´odigo n˜ao est´a diretamente relacionado com a funcionalidade definida para essas classes e isso dificulta o desenvolvimento e manuten¸c˜ao do software
POA expressa interesses entrela¸cados em elementos chamados
aspectos, desenvolvidos separadamente de outras partes do sistema e armazenados em uma unidade de c´odigo vis´ıvel a
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
Abordagens para Reconfigura¸c˜ao Dinˆamica: POA
Organiza¸c˜ao do Software:
Classes ou componentes, que constituem o c´odigo base do sistema e representam as regras de neg´ocio da aplica¸c˜ao
Aspectos que relacionam os requisitos funcionais e n˜ao-funcionais que afetam o comportamento do sistema e que estariam entrela¸cados no c´odigo das classes ou componentes
Adapta¸c˜ao da Aplica¸c˜ao a Mudan¸cas de Contexto
Middleware para Computa¸c˜ao Ciente de Contexto
Middleware para Computa¸c˜
ao
Middleware para Computa¸c˜ao Ciente de Contexto
Middleware
Local OS 1 Local OS 2 Local OS 3 Local OS 4
Appl. A Application B Appl. C
Computer 1 Computer 2 Computer 3 Computer 4
Network Distributed system layer (middleware)
Middleware para Computa¸c˜ao Ciente de Contexto
Servi¸cos T´ıpicos Relacionados ao Contexto
Servi¸co de assinatura e entrega de informa¸c˜ao contextual Servi¸co de consulta do contexto
Servi¸co de transforma¸c˜ao de contexto
Servi¸co de s´ıntese de contexto: une diversos tipos de informa¸c˜ao de contexto
Servi¸co de descoberta e gerenciamento
Servi¸co de Atuador: ajuda a aplica¸c˜ao a realizar fun¸c˜oes dependentes do contexto
Middleware para Computa¸c˜ao Ciente de Contexto
Arquitetura L´ogica de Middleware para Ciˆencia de
Contexto
Middleware para Computa¸c˜ao Ciente de Contexto Context Toolkit
Middleware para Computa¸c˜ao Ciente de Contexto Context Toolkit
Context Toolkit
Desenvolvido na Georgia Tech;
Framework orientado a objetos que permite a recupera¸c˜ao de
Middleware para Computa¸c˜ao Ciente de Contexto Context Toolkit
Recursos do Context Toolkit: Context Widgets
Componente que implementa o servi¸co de aquisi¸c˜ao e entrega de informa¸c˜ao de contexto;
Interface entre sensores e as aplica¸c˜oes;
Possuem estado e comportamento. Estado ´e representado por atributos e compartamento por fun¸c˜oes de callback disparadas quando houver mudan¸ca de contexto;
Entidades persistentes que podem ser compartilhadas por diversas aplica¸c˜oes;
Podem armazenar e disponibilizar o hist´orico das informa¸c˜oes de contexto, usualmente utilizado para prever futuras a¸c˜oes ou a inten¸c˜ao do usu´ario.
Middleware para Computa¸c˜ao Ciente de Contexto Context Toolkit
Recursos do Context Toolkit: Context Interpreters
Servi¸co de transforma¸c˜ao de contexto;
Exemplo: converter dados GPS em nomes de ruas;
Pode ser utilizado para determinar uma informa¸c˜ao de contexto de alto n´ıvel, como um contexto social ou motivacional;
Ex: a partir de widgets em uma sala de conferˆencia, determinar que um encontro est´a ocorrendo.
Middleware para Computa¸c˜ao Ciente de Contexto Context Toolkit
Recursos do Context Toolkit: Context Agregators
Juntam informa¸c˜oes de contexto oriundas de fontes diversas (widgets e interpreters) de forma a representar o contexto associado a uma entidade;
Uma entidade pode ser uma pessoa, sala, outro sistema de software, um dispositivo, etc. . .
Middleware para Computa¸c˜ao Ciente de Contexto Context Toolkit
Recursos do Context Toolkit: Discover
Disponibiliza servi¸co de descoberta e gerenciamento de fontes de informa¸c˜ao de contexto;
Mantˆem um registro das capacidades dos widgets existentes;
Aplica¸c˜oes podem consultar componentes por um nome espec´ıfico ou que possuam um conjunto fornecido de capacidades/atributos.
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
MOBHA – MobileHealthNet on Android
API respons´avel pela comunica¸c˜ao entre clientes m´oveis Android e gateway
User Service; Content Service; Chat Service; Context Service
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Context Service
Servi¸co ciente de contexto para prover e distribuir informa¸c˜oes que
ser˜ao utilizadas para o acompanhamento dos pacientes do MBH
Aquisi¸c˜ao de informa¸c˜oes de contexto com qualidade; Servi¸co de notifica¸c˜oes baseado em eventos;
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Inicializa¸c˜ao da Aplica¸c˜ao
public static void startUp()
public boolean addContextProviderRepository(String apkUrl, String descriptionUrl)
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Requisi¸c˜ao de Informa¸c˜oes de Contexto
void subscribeContextInformation(String
requestedUserName, String requestorUserName, boolean secure, String contextInformationML)
void publishSubscribeContextInformationResponse(String requestedUserName, String requestorUserName, String[] contextInformationUnitId, boolean secure, boolean[] accepteds)
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Requisi¸c˜ao de Informa¸c˜oes de Contexto
void publishUnsubscribeContextInformation(String requestedUserName, String requestorUserName, String[] contextInformationUnitId, boolean secure)
void unsubscribeContextInformation(String
requestedUserName, String requestorUserName, String[] contextInformationUnitId, boolean secure)
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Exemplo ContextML
<requirement> <contextInformation> <data name="systolicPressure"> <qualityOfContext><property name="REFRESH\_RATE" time="5000" kind="GET\_LAST" amount="5"/>
</qualityOfContext> </data>
</contextInformation> </requirement>
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Recebendo Dados de Contexto
Deve-se implementar os seguintes m´etodos:
void contextInformationRequest(String
requestedUserName, String requestorUserName, String contextInformationML)
void contextInformationResponse(String
requestedUserName, String[] contextInformationId, boolean[] accept)
void contextInformation(String requestedUserName, ContextInformationData cid)
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Definindo Eventos de Contexto
void subscribeEvent(String requestedUserName, String requestorUserName, boolean secure, String
eventDescriptionML)
void publishSubscribeEventResponse(String
requestedUserName, String requestorUserName, String[] ruleName, boolean[] accepted)
void publishUnsubscribeEvent(String requestedUserName, String requestorUserName, String[] ruleName, boolean secure)
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Exemplo eventDescriptionML
<requirement> <event>
<rule name="High blood pressure">
<condition context="systolicPressure" operator="gt" value="160" dataTypeValue="java.lang.Double" connector="and"/>
<condition context="diastolicPressure" operator="gt" value="80" dataTypeValue="java.lang.Double"/>
</rule> </event> </requirement>
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Recebendo Notifica¸c˜oes
Deve-se implementar os seguintes m´etodos:
void eventRequest(String requestedUserName, String requestorUserName, String eventDescriptionXML); void eventResponse(String requestedUserName, String requestorUserName, String[] ruleName, boolean[] accept);
void eventAnalised(String requestedUserName, String ruleName, ContextInformationAnalised contextData);
Middleware para Computa¸c˜ao Ciente de Contexto MobileHealthNet
Solicitando Dado de Contexto
Requisi¸c˜ao Local subscribeContextInformation("Dejailson","Dejailson", false, xml); Requisi¸c˜ao Remota subscribeContextInformation("Sandra","Dejailson", false, xml);
Leituras Recomendadas
Leituras Recomendadas
Leituras Recomendadas
Fundamentals of Mobile and Pervasive Computing Cap 4: Context-Aware Computing
Frank Adelstein, Gupta, Richard III, Schwiebert McGraw-Hill, 2005
A Survey of Context Data Distribution for Mobile Ubiquitous Systems Paolo Bellavista, Antonio Corradi, Mario Fanelli, Luca Foschini ACM Computing Surveys, Vol. 44, No. 4, Article 24, August 2012
Gerenciamento Autonˆomico de Privacidade Baseado em Situa¸c˜ao
para Redes Sociais M´oveis Cap 3: Computa¸c˜ao Autonˆomica Ariel Soares Teles