1 / 89

Equipe ISAM

Equipe ISAM . Iara Augustin: autora do ISAMAdapt Adenauer Yamin : Exehda Luciano Cavalheiro: Primos Rodrigo Real: Tips Alberto Egon : Perdis Maurício Moraes: Dimi Gustavo Frainer : EPA Lucas Santos Felipe Fehlberg : Multis alunos da UCPel e UFSM

aaralyn
Télécharger la présentation

Equipe ISAM

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. Equipe ISAM • Iara Augustin: autora do ISAMAdapt • AdenauerYamin: Exehda • Luciano Cavalheiro: Primos • Rodrigo Real: Tips • Alberto Egon: Perdis • Maurício Moraes: Dimi • Gustavo Frainer: EPA • Lucas Santos • Felipe Fehlberg: Multis • alunos da UCPel e UFSM • Gerson Cavalheiro (Unisinos) Na época: 2000 a 2007

  2. Equipe ISAM – atual na UFRGS • Luciano Cavalheiro: tese sobre adaptação • Carlos Oberdan: pesquisador associado • ValderiLeidhardt: pesquisador associado • Gisele Souza: mestranda

  3. ISAMAdapt Abstrações para • uma Linguagem de Programação • visando Aplicações Móveis Conscientes do Contexto • em um Ambiente de Pervasive Computing

  4. Autoria • Autordatese • IaraAugustin • Local • II-UFRGS, PGCC • 1999 – 2003 • Versão slides • 2010 • v10

  5. Índice • Motivação • Projeto ISAM • O problema • Objetivos Científicos • Abstrações ISAMadapt • Contexto • Adaptadores • Comandos e políticas de adaptação • Trabalhos Relacionados • Conclusões e Contribuições

  6. Computação Móvel • Mobilidade do usuário (user centric) • Mobilidade física (dispositivos e recursos) • Mobilidade lógica (aplicações e serviços) Acesso e disponibilidade global da computação Acesso local futuro próximo Mobile Computing Pervasive Computing (IBM) atual futuro distante Invisibilidade da computação Ubiquitous Computing (Mark Weiser, Xerox Parc, 1991)

  7. References • References • IBM Systems Journal, V38, N4, 1999. • Número dedicado a Pervasive Computing • 12 artigos • pervasive computing = ubiquitous computing • Número frequentemente relacionado com o nascimento da Pervasive Computing (após Weiser, 1991)

  8. Computação PervasivaNovo ambiente para o usuário • Potencialização de problemas computacionais gerados pela ênfase na mobilidade dousuário e suas atividades • Semântica “siga-me” (follow-me) • Independente de lugar • Independente de tempo • Independente de plataforma • Disponibilidade em todo lugar, a qualquer tempo • Ambiente virtual do usuário • Ambiente virtual das aplicações • Obs.: sem ser necessário levar um dispositivo móvel único como um notebook

  9. Computação PervasivaNovo ambiente para o usuário • Nosso interesse: Infra-estrutura para computação pervasiva (inexistente) • suporte à programação • suporte à execução • Objetivo geral: Uma infra-estrutura de suporte às aplicações pervasivas • Computação móvel (Mobile computing) • Computação consciente do contexto (Context-aware computing) • Computação em grade (Grid computing)

  10. ISAM Infra-estrutura de Suporte às Aplicações Móveis Distribuídas ISAM : Instituições Participantes ISAM : Apoio maio/2001 – julho/2003

  11. Arquitetura ISAM Ambos fornecem Ambiente de Desenvolvimento de Aplicações • ISAMadapt fornece: • Modelo de Adaptação • Modelo de Contexto • - Modelo de Execução • Holo fornece: • - Modelo de programação (entes) • - Modelo de Interação (blackboard) altera a semântica

  12. O problema • A pervasividade do ponto de vista de uma Linguagem de Programação • Mobilidade do usuário (follow-me applications) • Imprevisibilidade do ambiente de execução • Adaptação ao contexto (consciência do contexto) Necessidade de produzir aplicações pervasivas

  13. O Problema • Hoje: (produzir aplicações para o ambiente pervasivo é difícil) • Middlewares e linguagens para sistemas distribuídos tem premissas incompatíveis com o ambiente móvel • restrições • desconexões • variação na disponibilidade de recursos e serviços • dinamicidade • Aplicações para computação pervasiva são ad-hoc

  14. O Problema • Ferramentas de apoio à programação focalizam • Agentes móveis (mobilidade de código) • mobilidade do host? • Toolkits para monitoramento de contexto (banda, localização, ...) • genérico? • Middlewares para comunicação via espaço de tuplas • outros aspectos? • Frameworks para alguns domínios que abordam a adaptação • genérico?

  15. O Problema • Para conhecer o ambiente pervasivo • Conhecer novo usuário (altamente móvel) • Verificar o impacto no sistema computacional • Desenvolver aplicações reais

  16. Objetivos Científicos • Identificando e suportando abstrações para tratar com adaptação ao contexto • disponibilizadas em uma linguagem de programação • com a colaboração do sistema de suporte à execução simplifica o projeto, a construção e a evolução de aplicações móveis que executam em um ambiente pervasivo.

  17. Tópicos de pesquisa Como projetar e implementar uma aplicação móvel que se adapte às variações ambientais – contexto? • Quais as características e necessidades destas aplicações? • Qual o modelo de programação e interação necessários? • Como ocorre o processo de adaptação ao contexto? • Qual o suporte necessário para este processo? • Como modelar aplicações conscientes do contexto? Escopo do trabalho Linguagem de Programação Como expressar adaptação ao contexto

  18. Adaptação na computação pervasiva Requisitos identificados: • Contextualização e Personalização • Adaptação multinível • Adaptação negociada • Desacoplamento temporal e espacial • Funcionalidade selecionada pelo contexto

  19. Abstrações Capturam a semântica da funcionalidade geral do processo de sensibilidade ao contexto Requer: • Conhecimento do contexto • Adaptação dinâmica da aplicação • Baseadas no modelo de adaptação foram identificadas as abstrações ISAMadapt • Contexto • Adaptadores • Comandos e Políticas de adaptação

  20. Princípios • Princípio básico de adaptação • Colaboração entre o nível de programação e o ambiente de execução • Estático x dinâmico • Ou entre linguagem e middleware

  21. Modelo de Adaptação

  22. Abstraçõesfase programação / fase execução 2 fases: • programação • execução

  23. Controle da Adaptação Mecanismos de controle da adaptação

  24. Ênfase no contexto • Contexto – Elemento de contexto • “toda informação relevante para a aplicação e que pode ser obtida por esta”. • “toda elemento cuja alteração em seu estado dispara um processo de adaptação na aplicação ISAMadapt”. • Exemplo: atividade do usuário, localização, número de dispositivos, tipo de dispositivo.

  25. Ênfase no contexto • Visão particular de cada aplicação • Interesses diferentes em momentos diferentes • Interpretação diferente de uma mesma informação • Requer suporte da execução • Independente da aplicação • Reconfigurável conforme o interesse da aplicação ISAMcontextServer fornece o Serviço de Reconhecimento de Contexto

  26. Projeto contextSISAMcontextService Multis Perdis Exehda

  27. Abstração: contextofase programação • Context Menu • Permitepersonalizar as informações de contexto • Gera arquivo xml • Durante execuçãoépassadopeloAdaptEngine Service

  28. Abstração: contextofase programação Contexto fase programação 1. Variáveis ambiente (fornecidas pelo EXEHDA) • Exemplos de vars.: userLocation, ISAMbda, myHome, myHost, contextServer, ... IfuserLocation == myHome theninstallISAMbda(applic1)atmyHost 2. Comando de declaração context Declara um contexto específico e os estados de interesse contextprocessor::(idle, normal, busy); contextdeviceType::(pda, desktop); context network::(connected,disconnected);

  29. Abstração: contextofase programação Contexto fase programação 3. Comando onContext Ideia geral: espera evento e executa ação onContext network::disconnected{ disableSpellChecking(); } // espera assíncrona – thread atual continua a execução synconContextprocessor::idle{ clone (worker, worker_id); ... } // espera síncrona - thread atual fica bloqueada

  30. Abstração: contextofase programação Contexto fase programação 4. Controle da notificação • suspendNotify • suspende a notificação mas não o contexto (monitoração) • contexto ainda pode ser consultado • resumeNotify • retoma a notificação

  31. Abstração: contextofase programação Contexto fase programação 5. Consulta do estado do elemento de contexto • queryLastValue (getContext) • retorna valor armazenado no contexto, mesmo se antigo • queryCurrentValue (checkContext) • força nova monitoração (pode ser periódica) do contexto

  32. Abstração: Contextofase de execução Contexto fase execução Aplicação define o contexto (IDE ISAMadapt – menu Context) Elementos de contexto • Nativos (processor) • Definidos pela aplicação • grau de comunicação de um ente com outro • válidos para essa (uma) aplicação

  33. Abstração: Contextofase de execução Contexto fase execução Na execução • ISAMadaptEngine • Subscrição no ISAMcontextServer • Consulta de estados dos elementos de contexto • Executa comandos de configuração do ISAMcontextServer

  34. Abstração: Contextofase de execução Contexto fase execução • ISAMcontextServer • Monitora o contexto • Notifica a aplicação (ISAMadaptEngine) (tupla de natureza reativa)

  35. Abstração: adaptadoresfase programação Adaptação: fase programação • Recursos • Adaptivebeing • Adaptivemethod • Adapters • Comandos de adaptação

  36. Abstração: adaptadoresfase programação Adaptação: fase programação • Pontos no programa tem um comportamento declarado como adaptativo a um elemento do contexto • Adaptivebeing • Similar a uma classe • Adaptivemethod • Pontos no programa implementam alternativas para os estados possíveis do elemento do contexto • Adapters: para beings e métodos • Pontos no programa são estratégias de adaptação • Comandos de adaptação

  37. Elementos de adaptação adaptive being Display context deviceType : : (pda,desktop,laptop) { // adaptive method declarations adaptive go (host) context power; // shared methods definition ... } • Adaptivebeing • Adaptivemethod • Adapter: alternativas • expressa a display.holo //@context: power::(low) //@description: power is lower 10% adapter Display.Go::Low { go (device) { if device=null device = myHost; move (self, device); } } display_go_low.adp • Exemplo de método adaptativo • Declarado e adaptador

  38. Elementos de adaptação adaptive being Display context deviceType : : (pda,desktop,laptop) { // adaptive method declarations adaptive go (host) context power; // shared methods definition ... } //@context: deviceType::pda //@description: pda must been a CDC device adapter being Display : : pda { adaptive store() context power; display() { native Java { // use java.awt ....} enableSpellChecking(); } // menu methods definition ... enableSpellChecking() { native Java { // update gui state ...} onContext network::disconnected { disableSpellChecking() } } disableSpellChecking() { native Java { // update gui state...} onContext network::connected { enableSpellChecking() } } .... } • Adaptive being • Adaptive method • adapter display.holo display_pda.adp ISAMcontextServer • Exemplo de Ente Adaptativo • Declarado (slide anterior • Adaptador • Escolha durante a carga de código

  39. Elementos de adaptação adaptive being Display context deviceType : : (pda,desktop,laptop) { // adaptive method declarations adaptive go (host) context power; // shared methods definition ... } • Adaptive being • Adaptive method • adapter display.holo Display_desktop.adp //@context: deviceType::(desktop,laptop)//@description: it uses swing/J2SE APIs adapter beingDisplay : : desktop { // constructor display() { native Java { // use javax.swing... } enableSpellChecking(); } // methods definition insert { ...} transfer() { ... go (Home) ...} } Segundo adaptador: para mesmo exemplo anterior

  40. Abstração: adaptadoresfase execução package org.isam.adapt; publicclassIsamAdaptEngine { ObjectgetBeingImpl(String beingClass); ObjectgetMethImpl(String beingClass, String methodName); voidaddContextListener(ContextListener l, Contextctx); voidremoveContextListener(ContextListener l); ContextcheckContext(Contextctx); ContextgetContext(Contextctx); voidwaitForContext(Contextctx); voidrunOnContext(Contextctx, Runnableaction); voidenableNotifications (booleanenable); ResorceDesc[] discoverResource(String description); } Métodos disponíveis na IsamAdaptEngine: usados pela implementação

  41. Abstração: adaptadoresfase execução • package org.isam.adapt; • publicclassIsamAdaptEngine • { • ObjectgetBeingImpl(String beingClass); • Retorna objeto da classe • ObjectgetMethImpl(String beingClass, String methodName); • retorna objeto da classe/métodos • voidaddContextListener(ContextListener l, Contextctx); • Se inscreve para receber mudanças de contexto • voidremoveContextListener(ContextListener l); • desfaz inscrição ... • ContextcheckContext(Contextctx); • consulta contexto forçando atualização • ContextgetContext(Contextctx); • Idem sem atualização • } Métodos disponíveis na IsamAdaptEngine

  42. Abstração: adaptadoresfase execução • package org.isam.adapt; • publicclassIsamAdaptEngine • { • voidrunOnContext(Contextctx, Runnableaction); • Cria thread para esperar evento de contexto • voidenableNotifications (booleanenable); • Habilita / desabilita notificações de eventos de contexto • ResorceDesc[] discoverResource(String description); • } Métodos disponíveis na IsamAdaptEngine

  43. Comandos de adaptaçãofase programação Comandos para adaptação: dependem de políticas • clone (Being(param), id) [(anchorOn| on| closerTo) host ] • Cria novo being com base em outro (instanciação + herança) • move (sourceBeing, destBeing) • mobilidade • Disconnect • Desconexão planejada (custo, bateria, sinal, ...) • reconnect • reschedule (strategy) • Realoca being • install (ente) to host [start] • Instala aplicação completa • discovery var (file.rsc) { comandos }

  44. Comandos de adaptaçãofase programação Interface para definição de políticas sobre comandos: Políticas default Estratégia de escalonamento Procedimentos em desconexão Opções de locais para instanciação ...

  45. Abstração Políticas de Adaptação • Funcionam como meta-programação em tempo de execução • São opcionais • Usadas por exemplo quando a adaptação padrão não atende requisitos de desempenho • Poderiam ser desenvolvidas por usuários especializados • Similares aos XML do EJB 2.x

  46. Abstração Políticas de Adaptação • Dois tipos: • Geral (todos entes da aplicação) disconnectionmigratenextServer-> migrar tudo antes da desconexão disconnectioncache -> salvar dados antes da desconexão • Específica (para determinado ente) cloning ente1 mobileHost ` -> criar junto ao mobileHost (default é criar entes nos host fixos) cloning ente2 static -> ente não pode ser realocado (default todos entes podem ser realocados)

  47. Abstração Políticas de Adaptação • Servem a dois propósitos: • Dirigir a tomada de decisão da execução (comportamento colaborativo) • Resolver problemas advindos do dinamismo (~tratamento exceções) • Exemplo: problemas de sincronização • Migration ente1 after ente3 (ente1 somente migra após receber ente3) • Timeout 10s (default é bloquear o ente à espera do evento)

  48. Abstração Políticas de Adaptação <scheduling> <policy> <allbeings /> <max index="CPU_POWER" /> </policy> <policy composition="append"> <!-- Exemplo de politica especifica --> <being name=“SpellCheck" /> <anchor resource=“Dictionary" /> </policy> </scheduling> • Menu POLICIES do IDE ISAMadapt • XML • Relativas aos comandos de adaptação • Separadas do código, permitem alterações independentes Exemplo de arquivo XML de política de adaptação

  49. Abstração Políticas de Adaptação package org.isam.exehda.lang.isamadapt; public class Runtime { static void disconnect(); static void reconnect(); static Symbol createBeing(ClassBeing being, Being id, Object hints); static void moveBeing(ClassBeing source, ClassBeing dest); static void rescheduleBeing(Object hints); static History getHistory(); static History getChildHistory(Symbol childName); static History getParentHistory(); } public interface History { Tuple in (Tuple pattern, Long waitmilis); Tuple in_r ((Tuple pattern, Long waitmilis); Tuple out (Tuple t); } } • Menu POLICIES do IDE ISAMadapt • XML • Relativas aos comandos de adaptação • Separadas do código, permitem alterações independentes Relativas aos comandos de adaptação

More Related