890 likes | 1.03k Views
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
E N D
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
Equipe ISAM – atual na UFRGS • Luciano Cavalheiro: tese sobre adaptação • Carlos Oberdan: pesquisador associado • ValderiLeidhardt: pesquisador associado • Gisele Souza: mestranda
ISAMAdapt Abstrações para • uma Linguagem de Programação • visando Aplicações Móveis Conscientes do Contexto • em um Ambiente de Pervasive Computing
Autoria • Autordatese • IaraAugustin • Local • II-UFRGS, PGCC • 1999 – 2003 • Versão slides • 2010 • v10
Í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
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)
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)
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
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)
ISAM Infra-estrutura de Suporte às Aplicações Móveis Distribuídas ISAM : Instituições Participantes ISAM : Apoio maio/2001 – julho/2003
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
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
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
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?
O Problema • Para conhecer o ambiente pervasivo • Conhecer novo usuário (altamente móvel) • Verificar o impacto no sistema computacional • Desenvolver aplicações reais
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.
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
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
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
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
Abstraçõesfase programação / fase execução 2 fases: • programação • execução
Controle da Adaptação Mecanismos de controle da adaptação
Ê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.
Ê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
Projeto contextSISAMcontextService Multis Perdis Exehda
Abstração: contextofase programação • Context Menu • Permitepersonalizar as informações de contexto • Gera arquivo xml • Durante execuçãoépassadopeloAdaptEngine Service
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);
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
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
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
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
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
Abstração: Contextofase de execução Contexto fase execução • ISAMcontextServer • Monitora o contexto • Notifica a aplicação (ISAMadaptEngine) (tupla de natureza reativa)
Abstração: adaptadoresfase programação Adaptação: fase programação • Recursos • Adaptivebeing • Adaptivemethod • Adapters • Comandos de adaptação
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
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
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
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
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
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
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
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 }
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 ...
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
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)
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)
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
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