29
Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Embed Size (px)

Citation preview

Page 1: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Computação Sensível a Contexto

Pesquisa desenvolvida pelo Georgia Institute of

Technology

Page 2: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Histórico da Computação Sensível ao Contexto Discutida pela primeira vez em 1994 - Xerox

Corporation “Software que se adapte ao local em que

estiver sendo utilizado, ao conjunto de pessoas e objetos próximos, e também às mudanças deles ao longo do tempo”

Active Badges da Olivetti (1992) - primeiro trabalho de pesquisa nessa área

Atualmente as pesquisas mais interessantes são desenvolvidas no GeorgiaTech

Page 3: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

O que é contexto? “Contexto é qualquer informação que

possa ser usada para caracterizar a situação de uma entidade”

“Entidade é uma pessoa, lugar ou objeto relevante à iteração entre usuário e aplicação”

Utilizando-se o contexto pode-se aumentar as formas de troca de informações entre o usuário e o computador

Page 4: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Categorias de Contexto Pode-se dividir em duas categorias

Primários (mais importantes na prática) Local Identidade Atividade Tempo

Secundários (indexados pelos primários) Telefone (derivado da identidade) Clima (derivado do local + tempo)

Page 5: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

O que é Computação Sensível a Contexto? “Um sistema é considerado sensível

a contexto se ele utiliza o contexto para fornecer informações/serviços relevantes para o usuário”

Pode suportar 3 tipos de características Apresentação Execução Relacionamento

Page 6: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como desenvolver uma aplicação sensível a contexto? Context Toolkit

Widgets Aggregators Interpreters

Desenvolvido em Java

http://www.cc.gatech.edu/fce/contexttoolkit

Page 7: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Aplicação – In/Out Board Mostra através de

uma página Web quais professores estão dentro/fora do prédio

Utiliza o Context Toolkit

Utiliza o iButton para detectar estado

http://fire.cc.gt.atl.ga.us/inout/

Page 8: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Problemas – In/Out Board Ação explícita do

usuário Único ponto de

verificação Soluções

Sensores não intrusivos

Combinação de Sensores

http://www.ibutton.com

Page 9: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Aplicação – CybreMinder Post-it digital Entrega baseada em contexto

Quando ocorre uma situação especificada

Quando expira o limite de tempo 3 tipos de entrega

Aviso na tela E-mail SMS

Page 10: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Exemplos - CybreMinderSituação Linguagem

NaturalCybreMinder

Tempo 9:45 a.m. Expiration field: 9:45 a.m.Local Previsão de chuva e

Bob está saindo de casaCity=Atlanta, WeatherForecast=rainUsername=Bob, Location=Bob’s front door

Co-local Sally e seu colega estejam no mesmo local

Username=Sally, Location=*1Username=Bob, Location=*1

Complexa Preço das ações de X é maior que $50, Bob está sozinho e tem tempo livre

StockName=X, StockPrice>50Username=Bob, Location=*1Location=*1, OccupantSize=1Username=Bob, FreeTime>30

Complexa Sally está em seu escritório, tem algum tempo livre e seu amigo não está ocupado

Username=Sally, Location=Sally’s officeUsername=Sally, FreeTime=60Username=Tom, ActivityLevel=Low

Page 11: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Problemas - CybreMinder Determinação de situações é

complexa Possibilidade de criação de situações

que não podem ser detectadas Poucas formas de recebimento de

mensagens Apesar dos resultados promissores,

aparentemente o projeto foi descontinuado

Page 12: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

O que é o Context Toolkit? Conjunto de classes desenvolvidas

para facilitar a criação de aplicações sensíveis ao contexto

Feito em Java Utiliza o mesmo conceito de

widgets para GUI’s

Page 13: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Estrutura do Context Toolkit

Page 14: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Componentes do Context Toolkit BaseObject Context Widgets Context Servers (Aggregators) Context Interpreters

Page 15: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Base Object Utilizado como base para os demais objetos do

toolkit (todos são derivados do Base Object) Oferece suporte à comunicação entre

componentes do toolkit e entre aplicações e componentes

Normalmente aplicações criam uma instância do Base Object e os componentes são subclasses

Pode funcionar tanto como cliente quanto como servidor

Comunicação feita em XML utilizando HTTP como protocolo de rede

Page 16: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como usar o Base Object Construtores

public BaseObject(int serverPort); public BaseObject( String clientProtocol,

String serverProtocol,int serverPort,String clientEncoder,String serverEncoder);

Como XML e HTTP são ineficientes, é possível especificar classes que implementem outros protocolos

Page 17: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como usar o Base Object// create BaseObject running on port 7777BaseObject server = new BaseObject(7777);// request the version numberDataObject dataVersion =

server.getVersion("localhost",5555,"PersonPresence_here");String versionError = new Error(dataVersion).getError();if (versionError.equals(Error.NO_ERROR)){

System.out.println("Version is:“ + (String)version.getDataObject(WPersonPresence.VERSION).getValue().firstElement();

}else {

System.out.println("Error = "+versionError);}DataObject dataPing = server.pingComponent("localhost",

5555,"PersonPresence_here");// pingString pingError = new Error(dataPing).getError();System.out.println("Ping results = "+pingError);

Page 18: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Context Widgets Responsáveis por separar os detalhes dos

sensores das informações geradas por eles Description – auto-descrição (tipo de contexto

captado, callbacks e serviços oferecidos) Polling – devolve o estado atual Subscription – componentes podem se alistar

nas funções callbacks para receberem eventos na mudança de estado do widget

Storage – armazena informações históricas de contexto

Services – serviços que o widget pode fornecer

Page 19: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como usar um Context Widget

assinar (subscribe) cancelar assinatura

(unsubscribe) perguntar (poll) atualizar e perguntar colocar dados

obter lista de callbacks obter lista de atributos obter lista de serviços obter dados históricos executar serviços

(síncrono e assíncrono)

Uma aplicação pode:

Page 20: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como usar um Context Widget - Subscribingpublic Error subscribeTo(Handler handler,

int localPort, String localId, String remoteHost, int remotePort, String remoteId, String callback, String url, Conditions conditions, Attributes

attributes);

Page 21: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como usar um Context Widget - Subscribing// create BaseObject running on port 7777BaseObject server = new BaseObject(7777); Attributes subAtts = new Attributes();subAtts.addAttribute(WPersonPresence.USERID);subAtts.addAttribute(WPersonPresence.TIMESTAMP);Conditions subConds = new Conditions();subConds.addCondition(WPersonPresence.USERID,

Storage.EQUAL,"16AC850600000044");Error error = server.subscribeTo(this, 7777, "testApp",

"localhost", 5555, "PersonPresence_here", WPersonPresence.UPDATE, "presenceUpdate",

subConds,subAtts);System.out.println("Subscription with valid

attributes/conditions: "+error6.getError());

Page 22: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como usar um Context Widget - Handlerpublic DataObject handle(String callback, DataObject data)

throws InvalidMethodException, MethodException { if(callback.equals("presenceUpdate")) { AttributeNameValues atts = new AttributeNameValues(data); AttributeNameValue timeAtt =

atts.getAttributeNameValue(WPersonPresence.TIMESTAMP); String time = (String)timeAtt.getValue(); System.out.print(time+"\n"); }}

Page 23: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Context Servers Responsáveis por agregar todo o contexto

sobre uma pessoa, entidade, objeto ou lugar Assina todos os widgets relevantes

utilizando as opções importantes para a entidade considerada

Serve de mediador entre a aplicação e os widgets

As aplicações devem preferencialmente se comunicar com servers do que com widgets

Page 24: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como usar Context Serverspublic Server(String clientProtocol, String serverProtocol, int serverPort, String clientEncoder, String serverEncoder, String storageClass, String id, WidgetHandles widgets)

Normalmente os Servers utilizam JDBC+MySQL como mecanismo de armazenamento. Isso pode ser substituído fornecendo-se uma string com o nome da classe que implementa armazenamento no construtor.

Page 25: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Context Interpreters Transformam uma forma de contexto em

outra. Não armazenam dados nome -> e-mail número de pessoas, direção em que olham,

nível de ruído, horário -> está ou não sendo realizada uma reunião

Description – fornecem uma auto-descrição (contextos de entrada e contextos de saída)

Interpretation – serviço de mudança de um tipo de contexto em outro

Page 26: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Como usar Context InterpretersDataObject askInterpreter(String remoteHost, int remotePort, String remoteId, AttributeNameValues data)

AttributeNameValues data = new AttributeNameValues();data.addAttributeNameValue(IIButton2Name.IBUTTONID,

"ABCDEF");DataObject interpreted = askInterpreter("localhost",

8888,IIButton2Name.CLASSNAME,data);AttributeNameValues newData = new

AttributeNameValues(interpreted);System.out.println("new data is: "+newData);

Page 27: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

Demais Classes Necessárias

DataObject Error Attribute AttributeFunction AttributeNameValue Condition Retrieval RetrievalResults Callback Subscriber WidgetHandle

Úteis Constants ContextTypes ConfigObject Configuration XMLURLReader

Page 28: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

ToDo Básico Resource Discovery

Descoberta de sensores dada a função executada, sem especificação de host, porta, nome, etc.

Visualização Existindo o Resource Discovery, permitir a

visualização dos componentes existentes, quem se comunica, etc.

Condições Atualmente só é possível especificar as

condições com AND. Ampliar para OR e NOT

Page 29: Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology

ToDo Avançado Suporte a Ambigüidade

Desenvolver o suporte à ambigüidade das informações geradas pelos sensores. Permitir condensamento de informações de mais de um sensor, transmissão da precisão da informação além do contexto, etc.

Segurança/Privacidade Desenvolver suporte à privacidade quando

as informações de contexto transmitidas forem particulares/sensíveis.