middlewares e frameworks para computação ubíquaendler/courses/mobile/transp/...1 © markus endler...
TRANSCRIPT
1
© Markus Endler
Middlewares e Frameworks para Computação Ubíqua
© Markus Endler
Computação Ubíqua
Uma computação invisível/discreta, realizada por dispositivos no ambiente, e sem intervenção explícita do usuário.
É o conceito dual de Realidade Virtual: Em vez de inserir o usuário em uma realidade simulada, procura inserir elementos computacionais no mundo real.
2
© Markus Endler
Computação Ubíqua (cont.)
Foi idealizada por Mark Weiser que imaginou ambientes impregnados de computação, nos quais os dispositivos fazem parte do ambiente (salas de aula, escritórios, edifícios).
Os ambientes se auto-configuram de acordo com as preferências do usuário, a fim de o ajudar nas suas tarefas
Calm Technology: a integração é tranqüila e até imperceptível (computação invisível).
© Markus Endler
Computação Ubíqua
Principais Características: Onipresença Adaptação Sistemas Distribuídos e Intuitivos Mudança na relação homem – máquina
(o papel do homem passa a ser mais passivo x
computador deixa de ser o foco das atenções)
3
© Markus Endler
Infra-estrutura
Taxonomia de subsistemas ou serviços
Definida pela equipe do Georgia Tech
www.cc.gatech.edu
A idéia de utilizar camada de middleware para conseguir minimizar o problema da heterogeneidade.
© Markus Endler
Taxonomia de subsistemas
Registro e Descoberta Registro, remoção e pesquisa de recursos ou serviços Aspectos considerados para as operações (palavra-
chave, tipo, subtipo, fornecedor, custo; contexto – localização, conectividade, reserva de energia, etc.)
Elementos de diferentes abstrações podem ser registrados e descobertos (equipamentos, serviços, usuários... Qualquer objeto)
4
© Markus Endler
Taxonomia de subsistemas
Serviço e Assinatura (assinatura de serviços) Clientes assinam serviço disponibilizado Intermediação:
Encapsula características de provedor de serviços propiciando interoperabilidade, troca de provedores, serviços distribuídos (balanceamento de carga, redução de latência,...)
Requisitos: Interface Extensível Escalabilidade Transparência em relação à rede Eficiência: rápida transferência de mensagens
© Markus Endler
Taxonomia de subsistemas
Armazenamento e envio de dados seriados Coordenação da transferência e armazenamento distribuído
de grandes estruturas de dados Torna transparente o espalhamento, a redundância, a
replicação Resolve alguns problemas de conectividade,
disponibilidade e latência
5
© Markus Endler
Taxonomia de subsistemas
Compartilhamento de Recursos Objetivo de tentar diminuir a subutilização de recursos
computacionais Funções básicas:
Procurar recursos adequados Alocar e desalocar recursos Contabilizar o uso Implementar políticas de utilização
Delegação de processamento sensível ao nível de energia
© Markus Endler
Taxonomia de subsistemas
Gerenciamento de Contexto Fornecem uma abstração do contexto e linguagem Possível dependência de sensores Requisitos:
Linguagem simples e poderosa Inferência de fatos de nível mais alto
6
© Markus Endler
Problemas
Alguns dos desafios e problemas enfrentados pela UC:
Tentar fazer das UCAs killer applications Criar sistemas tolerantes a falhas Interoperabilidade Sensibilidade ao Contexto Garantir Privacidade Custo dos dispositivos computacionais Baixo consumo de energia
© Markus Endler
Projeto Gaia
Universidade de Illinois Origem : Projeto 2K – também da Univ. de Illinois 2K tem origem no Choices
7
© Markus Endler
Projeto Gaia - Origens
Choices Um dos primeiros SODs Orientado a objetos – flexibilidade, extensibilidade Queriam provar que é possível construir um S.O. em C++ Arquitetura geral é definida como um framework Exokernel: radicalização da idéia de microkernel
2K Motivação: construir um Choices distribuído para a Internet Abordagem: middleware-level OS
Para resolver a questão da heterogeneidade de hardware e software / alguns problemas por causa da inflexibilidade e peso das plataformas
© Markus Endler
Projeto Gaia
Estender as idéias do 2K para computação Ubíqua: um SO para espaços ativos.
Espaço Ativo: Ambiente de computação composto por um espaço físico qualquer enriquecido com dispositivos eletro-eletrônicos capazes de realizar algum tipo de computação útil aos freqüentadores do ambiente.
8
© Markus Endler
Projeto Gaia
Arquitetura do Gaia:
© Markus Endler
Projeto Gaia - GaiaOS
1) Alguns dos Serviços do Kernel Gerenciador de Eventos: distribuir informações entre os
componentes mantendo o fraco acoplamento Repositório do Espaço: interface para a busca de entidades
específicas baseadas em condições como localização, tipo de serviço e disponibilidade de recursos.
Serviço de Autenticação e Controle de Acesso: utilização de credenciais e papéis (perfis).
9
© Markus Endler
Projeto Gaia - GaiaOS
2) Unified Object Bus provê ferramentas para manipular uniformemente componentes
heterogêneos que estão executando no sistema. Manipulação do ciclo de vida dos componentes de sistema e de
aplicação Define 4 abstrações básicas: “Unified Component”, “Component
Manager”, “Component Container” e o UOBHost. Componente Unificado: são os elementos básicos do UOB.
Seguem um esquema de nomenclatura comum e seu ciclo de vida pode ser gerenciado dinamicamente independentemente de seu modelo de componentes e sua localização .
© Markus Endler
Projeto Gaia - GaiaOS
2) Unified Object Bus Gerenciador de Componentes: determina a interface para manipular o
ciclo de vida de componentes e encapsula a funcionalidade de integrar diferentes modelos de componentes; entretanto há um gerenciador para cada modelo de componentes integrado.
Component Container: provê o ambiente de execução para os componentes e determina a funcionalidade de gerenciar as dependências dos componentes que contém.
UOBHost: qualquer dispositivo capaz de hospedar a execução de componentes. Determinam a funcionalidade de criar, remover Component Containers, bem como criar componentes em containers específicos.
10
© Markus Endler
Projeto Gaia – Modelo de Aplicações
Framework padrão para aplicações ubíquas
MVC para Espaços ativos: MPACC Model – O modelo é a implementação da estrutura central da
aplicação, que normalmente consiste nos dados e na interface programável para manipulá-los.
© Markus Endler
Projeto Gaia – Modelo de Aplicações
Presentation – É a externalização física do modelo que permite aos usuários percebê-lo através de um ou mais sentidos.
Adapter – É o componente responsável por adaptar o formato dos dados do modelo às características de um dispositivo de saída.
Controller – Determina mecanismos para modificar o estado do modelo. Entretanto, diferentemente do controlador padrão do MVC, o controlador definido pelo MPACC coordena não apenas os dispositivos de entrada, mas qualquer origem de contexto físico e digital que pode afetar a aplicação.
Coordinator – O coordenador é um componente de meta-nível que gerencia a composição da aplicação e aplica políticas de adaptação baseadas nos aspectos funcionais e não funcionais da aplicação.
11
© Markus Endler
Projeto One.world
© Markus Endler
Projeto One.world
Metodologia de design Foco nos requisitos de aplicações pervasivas Explorar requisitos mal atendidos nos sistemas
contemporâneos Definir uma arquitetura de sistema que atenda bem tais
requisitos Validação com a construção de aplicações Iteração
12
© Markus Endler
Projeto One.world
Pontos Importantes: Aceitar a mudança de contexto – é impraticável considerar
isso problema do usuário Encorajar composição Ad Hoc – usuários esperam que
dispositivos e aplicações “pluguem” juntos. Compartilhamento é default – as aplicações precisam
compartilhar facilmente a informação através do tempo e dos dispositivos
© Markus Endler
One.world - Arquitetura
13
© Markus Endler
Projeto One.world – Características
Executa sobre a JVM O conceito de Ambientes:
Agem como espaços de endereços, armazenam dados persistentes, facilitam composição e migração
Eventos Tornam as mudanças explícitas para a aplicação.
© Markus Endler
Projeto One.world - Cenário
14
© Markus Endler
One.world – Serviço de Descoberta
Mecanismo de Rendezvous: encontrar recursos com localização desconhecida ou em constante alteração
Provê um serviço de lookup que mapeia descrições de recursos à handlers de eventos
Eleições (auto-gerenciamento): Servidor se anuncia periodicamente através de broadcasts UDP Eleição é convocada quando detecta-se 2 anúncios perdidos,
quando o servidor falha ou quando a máquina é desligada Algoritmo de eleição simples
© Markus Endler
One.world – Outros destaques
Migração: cópia ou movimentação de ambientes e todo o seu conteúdo (operação atômica)
Emcee: Gerenciamento de usuários e aplicações.
Shell gráfico com interface drag and drop para o gerenciamento dos ambientes (árvore) Depende do serviço de migração e do serviço de descoberta Faz um scan do ambiente de destino para detectar a chegada da aplicação
15
© Markus Endler
Projeto Aura
Carnegie Mellon University
© Markus Endler
Projeto Aura - Objetivos
Prover ao usuário um ambiente de computação invisível, particular e repleto de serviços, que o acompanha onde quer que ele vá: sua Aura.
Redução da exigência da atenção do usuário (lei de Moore) Conseguir escalabilidade para cenário com usuários móveis em
um ambiente propenso a falhas e com variabilidade de recursos
16
© Markus Endler
Projeto Aura...?
Desenvolvimento em todos os níveis: Camadas de hardware e rede Sistema operacional e middleware Interface de usuário e aplicações
Projetos paralelos o compõe: Coda: sistema de arquivos distribuído que apresenta
replicação, segurança, tolerância a falhas, adaptação às mudanças de largura de banda
© Markus Endler
Projeto Aura - Composição
Projetos paralelos o compõe: Odissey: extensão do sistema operacional que é
responsável pela adaptação, sensibilidade a contexto – monitora recursos.
Spectra: mecanismo adaptativo para execução de chamadas remotas – também há sensibilidade ao contexto
17
© Markus Endler
Projeto Aura - Arquitetura
© Markus Endler
Projeto Aura – Alguns destaques
Pró-atividade / auto ajuste tentativa de inferir requisições de uma camada mais alta. As
camadas adaptam-se ajustando a sua performance e o uso de recursos observando a demanda – fatores que colaboram para reduzir a necessidade de atenção do usuário
Gerenciador de Tarefas - Prisma Processos que estavam sendo executados anteriormente podem
ter que se adaptar a um novo contexto – congelamento das aplicações e restauração quando os recursos estão novamente presentes
18
© Markus Endler
Projeto Aura – Task Manager
© Markus Endler
Outros Projetos de UC
Ninja (Berkeley) Oxygen (MIT) Future Computing Environments (Georgia Tech) Pervasive Computing (IBM) Ubicomp (Universität Karlsruhe) Multimodal Interfaces (CMU) Portolano (UW) Ubiquitous Computing (Xerox Parc) Endeavour (Berkeley) Cooltown (HP) Easy Living (Microsoft)
19
© Markus Endler
Referências
Gaia Project: http://gaia.cs.uiuc.edu/ One.world: http://cs.nyu.edu/rgrimm/one.world/ Aura: http://www-2.cs.cmu.edu/~aura/
[AMCRC04] Jalal AlMuhtadi, Shiva Chetan, Anand Ranganathan, and Roy Campbell. Super spaces: A middleware for largescale pervasive computing environments. In Proceedings of the Second IEEE Annual Conference on Pervasive Computing and Communications Workshops, page 198. IEEE Computer Society, 2004.
[DoCS] University of Illinois at UrbanaChampaign Departament of Computer Science. Gaia project, active spaces for ubiquitous computing. http://gaia.cs.uiuc.edu. [dW] Universidade de Washington. Projeto one.world. http://one.cs.washington.edu.
[ea04a] CarlFredrik et al. A contextaware middleware for applications in mobile ad hoc envirnments. In Proceedings of 2nd Workshop on Middleware for Pervasive and AdHoc Computing, pages 107--110. ACM Press, 2004.
[ea04b] Suskil K. Prasad et al. Syd: a middleware testbed for collaborative applications over small heterogeneous devices and data stores. In Proceedings of the International Middleware Conference, pages 352--371, Toronto, Canada, October 2004. Springer.
[Gri02] Robert Grimm. System Support for Pervasive Applications. PhD thesis, Washington University, October 2002.
© Markus Endler
Referências
[HM04] Markus C. Huebscher and Julie A. McCann. Adaptive middleware for context aware applications in smarthomes. In Proceedings of the 2nd workshop on Middleware for pervasive and adhoc computing, pages 111--116. ACM Press, 2004.
[MMH04] Mirco Musolesi, Cecilia Mascolo, and Stephen Hailes. Adapting asynchronous messaging middleware to ad hoc networking. In Proceedings of the 2nd workshop on Middleware for pervasive and adhoc computing, pages 121--126. ACM Press, 2004.
[RAM + 04] U. Ramachandran, Gregory Abowd, Martin Modahl, Bikash Agarwalla, and Scott Saponas. Toward a standad ubiquitous computing framework. In Proceedings of 2nd Workshop on Middleware for Pervasive and AdHoc Computing, pages 135--139. ACM Press, 2004.
[RBH04] Peter Rigole, Yolande Berbers, and Tom Holvoet. Mobile adaptive tasks guided by resource contracts. In Proceedings of the 2nd workshop on Middleware for pervasive and adhoc computing, pages 117--120. ACM Press, 2004.
[RHC + 02] Manuel Rom’an, Christopher Hess, Renato Cerqueira, Anand Ranganathan, Roy H. Campbell, and Klara Nahrstedt. A middleware infrastructure for active spaces. IEEE Pervasive Computing, 1(4):74--83,
2002. [SG02] Jo”ao Pedro Sousa and David Garlan. Aura: an architectural framework for user mobility in ubiquitous computing
environments. In Proceedings of the IFIP 17th World Computer Congress TC2 Stream / 3rd IEEE/IFIP Conference on Software Architecture, pages 29--43. Kluwer, B.V., 2002.