Computao Sensvel a Contexto Pesquisa desenvolvida pelo Georgia
- Slides: 29
Computação Sensível a Contexto Pesquisa desenvolvida pelo Georgia Institute of Technology
Histórico da Computação Sensível ao Contexto n n 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 Georgia. Tech
O que é contexto? n n n “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
Categorias de Contexto n Pode-se dividir em duas categorias n Primários (mais importantes na prática) n n n Local Identidade Atividade Tempo Secundários (indexados pelos primários) n n Telefone (derivado da identidade) Clima (derivado do local + tempo)
O que é Computação Sensível a Contexto? n n “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 n n n Apresentação Execução Relacionamento
Como desenvolver uma aplicação sensível a contexto? n Context Toolkit n n Widgets Aggregators Interpreters Desenvolvido em Java http: //www. cc. gatech. edu/fce/contexttoolkit
Aplicação – In/Out Board n n n Mostra através de uma página Web quais professores estão dentro/fora do prédio Utiliza o Context Toolkit Utiliza o i. Button para detectar estado http: //fire. cc. gt. atl. ga. us/inout/
Problemas – In/Out Board n n n Ação explícita do usuário Único ponto de verificação Soluções n n Sensores não intrusivos Combinação de Sensores http: //www. ibutton. com
Aplicação – Cybre. Minder n n Post-it digital Entrega baseada em contexto n n n Quando ocorre uma situação especificada Quando expira o limite de tempo 3 tipos de entrega n n n Aviso na tela E-mail SMS
Exemplos - Cybre. Minder Situação Linguagem Natural Cybre. Minder Tempo 9: 45 a. m. Expiration field: 9: 45 a. m. Local Previsão de chuva e Bob está saindo de casa City=Atlanta, Weather. Forecast=rain Username=Bob, Location=Bob’s front door Co-local Sally e seu colega estejam no mesmo local Username=Sally, Location=*1 Username=Bob, Location=*1 Complexa Preço das ações de X é maior que $50, Bob está sozinho e tempo livre Stock. Name=X, Stock. Price>50 Username=Bob, Location=*1, Occupant. Size=1 Username=Bob, Free. Time>30 Complexa Sally está em seu escritório, tem algum tempo livre e seu amigo não está ocupado Username=Sally, Location=Sally’s office Username=Sally, Free. Time=60 Username=Tom, Activity. Level=Low
Problemas - Cybre. Minder n n 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
O que é o Context Toolkit? n n n 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
Estrutura do Context Toolkit
Componentes do Context Toolkit n n Base. Object Context Widgets Context Servers (Aggregators) Context Interpreters
Base Object n n n 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
Como usar o Base Object n Construtores n n n public Base. Object(int server. Port); public Base. Object( String client. Protocol, String server. Protocol, int server. Port, String client. Encoder, String server. Encoder); Como XML e HTTP são ineficientes, é possível especificar classes que implementem outros protocolos
Como usar o Base Object // create Base. Object running on port 7777 Base. Object server = new Base. Object(7777); // request the version number Data. Object data. Version = server. get. Version("localhost", 5555, "Person. Presence_here"); String version. Error = new Error(data. Version). get. Error(); if (version. Error. equals(Error. NO_ERROR)){ System. out. println("Version is: “ + (String)version. get. Data. Object(WPerson. Presence. VERSION). get. Value(). f irst. Element(); } else { System. out. println("Error = "+version. Error); } Data. Object data. Ping = server. ping. Component("localhost", 5555, "Person. Presence_here"); // ping String ping. Error = new Error(data. Ping). get. Error(); System. out. println("Ping results = "+ping. Error);
Context Widgets n n n 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
Como usar um Context Widget Uma aplicação pode: n n n assinar (subscribe) cancelar assinatura (unsubscribe) perguntar (poll) atualizar e perguntar colocar dados n n n 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)
Como usar um Context Widget - Subscribing public Error subscribe. To(Handler handler, int local. Port, String local. Id, String remote. Host, int remote. Port, String remote. Id, String callback, String url, Conditions conditions, Attributes attributes);
Como usar um Context Widget - Subscribing // create Base. Object running on port 7777 Base. Object server = new Base. Object(7777); Attributes sub. Atts = new Attributes(); sub. Atts. add. Attribute(WPerson. Presence. USERID); sub. Atts. add. Attribute(WPerson. Presence. TIMESTAMP); Conditions sub. Conds = new Conditions(); sub. Conds. add. Condition(WPerson. Presence. USERID, Storage. EQUAL, "16 AC 850600000044"); Error error = server. subscribe. To(this, 7777, "test. App", "localhost", 5555, "Person. Presence_here", WPerson. Presence. UPDATE, "presence. Update", sub. Conds, sub. Atts); System. out. println("Subscription with valid attributes/conditions: "+error 6. get. Error());
Como usar um Context Widget - Handler public Data. Object handle(String callback, Data. Object data) throws Invalid. Method. Exception, Method. Exception { if(callback. equals("presence. Update")) { Attribute. Name. Values atts = new Attribute. Name. Values(data); Attribute. Name. Value time. Att = atts. get. Attribute. Name. Value(WPerson. Presence. TIMESTAMP); String time = (String)time. Att. get. Value(); System. out. print(time+"n"); } }
Context Servers n n 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
Como usar Context Servers public Server(String client. Protocol, String server. Protocol, int server. Port, String client. Encoder, String server. Encoder, String storage. Class, String id, Widget. Handles widgets) n Normalmente os Servers utilizam JDBC+My. SQL como mecanismo de armazenamento. Isso pode ser substituído fornecendo-se uma string com o nome da classe que implementa armazenamento no construtor.
Context Interpreters n n n 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
Como usar Context Interpreters Data. Object ask. Interpreter(String remote. Host, int remote. Port, String remote. Id, Attribute. Name. Values data) Attribute. Name. Values data = new Attribute. Name. Values(); data. add. Attribute. Name. Value(IIButton 2 Name. IBUTTONID, "ABCDEF"); Data. Object interpreted = ask. Interpreter("localhost", 8888, IIButton 2 Name. CLASSNAME, data); Attribute. Name. Values new. Data = new Attribute. Name. Values(interpreted); System. out. println("new data is: "+new. Data);
Demais Classes n Necessárias n n n Data. Object Error Attribute. Function Attribute. Name. Value Condition Retrieval. Results Callback Subscriber Widget. Handle n Úteis n n n Constants Context. Types Config. Object Configuration XMLURLReader
To. Do Básico n Resource Discovery n n Visualização n n Descoberta de sensores dada a função executada, sem especificação de host, porta, nome, etc. Existindo o Resource Discovery, permitir a visualização dos componentes existentes, quem se comunica, etc. Condições n Atualmente só é possível especificar as condições com AND. Ampliar para OR e NOT
To. Do Avançado n Suporte a Ambigüidade n n 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 n Desenvolver suporte à privacidade quando as informações de contexto transmitidas forem particulares/sensíveis.
- A principal arte desenvolvida no egito antigo foi a
- Entao ouvi a voz do senhor
- Conclusao para trabalhos
- Problema de pesquisa o que é
- Qualitativo e quantitativo
- Robledo lima gil
- Diretório de grupos de pesquisa
- Pesquisa de amor
- Exemplo de metodologia
- Pesquisa operacional
- Pesquisar imagem semelhante
- Pesquisa operacional
- Chiavenato 2014 aponta a pesquisa de kurt lewin
- Pesquisa por imagem
- Amostra de pesquisa qualitativa
- Delineamento de levantamento
- Pesquisa básica
- Cronograma de execução projeto de pesquisa
- Empresa de pesquisa energética
- Tema resenha
- Como fazer metodologia
- Centro de pesquisa mokiti okada
- O que é pesquisa transversal
- Pesquisa operacional
- Pesquisa por imagem
- Vania bogorny
- Pesquisa por imagem
- Fonte escrita
- Gil, antonio carlos. como elaborar projetos de pesquisa.
- Projeto de pesquisa cronograma