1 / 29

Computação Sensível a Contexto

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

augusta
Download Presentation

Computação Sensível a Contexto

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


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

  2. 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

  3. 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

  4. 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)

  5. 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

  6. Como desenvolver uma aplicação sensível a contexto? • Context Toolkit • Widgets • Aggregators • Interpreters • Desenvolvido em Java http://www.cc.gatech.edu/fce/contexttoolkit

  7. 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/

  8. 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

  9. 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

  10. Exemplos - CybreMinder

  11. 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

  12. 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

  13. Estrutura do Context Toolkit

  14. Componentes do Context Toolkit • BaseObject • Context Widgets • Context Servers (Aggregators) • Context Interpreters

  15. 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

  16. 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

  17. Como usar o Base Object // create BaseObject running on port 7777 BaseObject server = new BaseObject(7777); // request the version number DataObject 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"); // ping String pingError = new Error(dataPing).getError(); System.out.println("Ping results = "+pingError);

  18. 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

  19. 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) Como usar um Context Widget Uma aplicação pode:

  20. Como usar um Context Widget - Subscribing public Error subscribeTo(Handler handler, int localPort, String localId, String remoteHost, int remotePort, String remoteId, String callback, String url, Conditions conditions, Attributes attributes);

  21. Como usar um Context Widget - Subscribing // create BaseObject running on port 7777 BaseObject 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());

  22. Como usar um Context Widget - Handler public 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"); } }

  23. 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

  24. Como usar Context Servers public 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.

  25. 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

  26. Como usar Context Interpreters DataObject 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);

  27. Necessárias DataObject Error Attribute AttributeFunction AttributeNameValue Condition Retrieval RetrievalResults Callback Subscriber WidgetHandle Úteis Constants ContextTypes ConfigObject Configuration XMLURLReader Demais Classes

  28. 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

  29. 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.

More Related