Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 1
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 2
Equipe ISAM
Iara Augustin: autora do ISAMAdaptAdenauer Yamin: ExehdaLuciano Cavalheiro: PrimosRodrigo Real: TipsAlberto Egon: PerdisMaurício Moraes: DimiGustavo Frainer: EPA Lucas SantosFelipe Fehlberg: Multisalunos da UCPel e UFSMGerson Cavalheiro (Unisinos)
Na época: 2000 a 2007
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 3
Equipe ISAM – atual na UFRGS
Luciano Cavalheiro: tese sobre adaptaçãoCarlos Oberdan: pesquisador associadoValderi Leidhardt: pesquisador associadoGisele Souza: mestranda
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 4
ISAMAdapt
Abstrações para- uma Linguagem de Programação
- visando Aplicações Móveis Conscientes do Contexto
- em um Ambiente de Pervasive Computing
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 5
Autoria
Autor da teseIara Augustin
LocalII-UFRGS, PGCC1999 – 2003
Versão slides2010v10
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 6
Índice
1. Motivação2. Projeto ISAM3. O problema4. Objetivos Científicos5. Abstrações ISAMadapt
Contexto Adaptadores Comandos e políticas de adaptação
6. Trabalhos Relacionados7. Conclusões e Contribuições
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 7
Computação Móvel
Mobilidade do usuário (user centric) Mobilidade física (dispositivos e recursos) Mobilidade lógica (aplicações e serviços)
Mobile Computing Pervasive Computing
(IBM)
Ubiquitous Computing(Mark Weiser, Xerox Parc, 1991)
atual
futuro próximo
futuro distante
Acesso e disponibilidade global da computação
Invisibilidade da computação
Acesso local
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 8
References
ReferencesIBM 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)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 9
Computação PervasivaNovo ambiente para o usuário
Potencialização de problemas computacionais gerados pela ênfase na mobilidade do usuá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
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 10
Computação PervasivaNovo ambiente para o usuário
Nosso interesse: Infra-estrutura para computação pervasiva (inexistente)suporte à programaçãosuporte à execução
Objetivo geral: Uma infra-estrutura de suporte às aplicações pervasivasComputação móvel (Mobile computing)Computação consciente do contexto (Context-aware
computing)Computação em grade (Grid computing)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 11
ISAM
Infra-estrutura de Suporte às Aplicações Móveis Distribuídas
ISAM : Instituições Participantes
ISAM : Apoio
maio/2001 – julho/2003
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 12
Arquitetura ISAM
ISAMadapt fornece:
- Modelo de Adaptação - Modelo de Contexto
- Modelo de Execução
ISAMadapt fornece:- Modelo de Adaptação - Modelo de Contexto
- Modelo de Execução
Ambos fornecem Ambiente de Desenvolvimento de AplicaçõesAmbos fornecem Ambiente de Desenvolvimento de Aplicações
Holo fornece:- Modelo de programação (entes)- Modelo de Interação (blackboard)
Holo fornece:- Modelo de programação (entes)- Modelo de Interação (blackboard)
Aplicação Móvel Distribuída
ISAMadapt (Holoparadigma)
AVU ManagenmentService
LanguageRuntime
ISAMcontextServer
Loc. eNaming
Comu-nicação
Migra-ção
Persis-tência
Segu-rança
Escalo-namento
Monito-ramento
Máquina Virtual Java
Consciênciado
Contexto
SUP
INTERM
INF
Sistema Operacional Nativo
Rede Fixa + Rede Móvel
EXEHDA
altera a semântica
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 13
Necessidade de produzir aplicações pervasivas
O problema
A pervasividade do ponto de vista de uma Linguagem de ProgramaçãoMobilidade do usuário (follow-me applications)
Imprevisibilidade do ambiente de execução
Adaptação ao contexto (consciência do contexto)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 14
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
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 15
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?
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 16
O Problema
Para conhecer o ambiente pervasivo Conhecer novo usuário (altamente móvel)Verificar o impacto no sistema computacionalDesenvolver aplicações reais
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 17
Objetivos CientíficosIdentificando 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.
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 18
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
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 19
Adaptação na computação pervasiva
USUÁRIO
APLICAÇÃO SISTEMA DESUPORTE
social
espacial
temporal
pessoal
Requisitos identificados:
Contextualização e Personalização
Adaptação multinível
Adaptação negociada
Desacoplamento temporal e espacial
Funcionalidade selecionada pelo contexto
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 20
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
ContextoAdaptadoresComandos e Políticas de adaptação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 21
Princípios
Princípio básico de adaptaçãoColaboração entre o nível de programação e o ambiente de
execução Estático x dinâmico
Ou entre linguagem e middleware
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 22
Modelo de Adaptação
ADAPTABILIDADE
SUPORTE MODELO
ALTERNATIVAS
CONTEXTO
COMPORTAMENTO
POLÍTICAS
REGRAS
COMANDOS DEADAPTAÇÃO
Elementos
Interesses
Propriedades
requer
expressa como
informar
gerenciarexpressar
temobedece
Expressa como
relativas aos
usa
exibe
Agilidade daAdaptação
Adaptação Reconfiguração
expressam
pessoas
ambiente físico
aplicações
monitora
define
obedece
tem
redefine
seleciona
Gerenciadorda adaptação
seleciona
notifica
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 23
Abstraçõesfase programação / fase execução
2 fases: programação execução
COMANDOSDE
ADAPTAÇÃO
POLÍTICAS
EXEHDA
APLICAÇAO
CONTEXTO
``````````adaptive being.. (){ context:…. ….}…………….
C1
C2
Cn
Cõdigo principal adaptadores
Construções adaptativas
register manager
notifier
subscreve
notifica
Dadossensorados
ISA
MadaptE
ngine
ISA
Mbd
a
Codigosob
demanda
ISAMcontextServer
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 24
Controle da Adaptação
Mecanismos de controle da adaptação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 25
Ê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.
Físico Lógico Social
CONTEXTO
bate
ria
band
a re
de
latên
cia
locali
zaçã
o
carg
a
tare
fas
serv
iços
tem
po a
cess
o
tipo
aces
so
tipo
dado
s
vizinh
ança
trajet
o
volum
e co
mu-
nicaç
ão
Perfil doUsuário
Adaptação
AplicaçãoAdaptação
Runtime
ParteFixa
ParteMóvel
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 26
Ê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
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 27
Projeto contextSISAMcontextService
EXEHDAbase
aggregator
predictor
notifier
translator
monitor
sensor
EXEHDAnodo
monitor
sensor
EXEHDAnodoMóvel
collector
monitor
sensores
EXEHDAnodo
DA
DO
SC
ON
TE
XT
UA
LIZ
AD
OS
DA
DO
SS
EN
SO
RA
DO
S
Discoverer
Register
sensor
Multis
Perdis
Exehda
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 28
Abstração: contextofase programação
Context MenuPermite personalizar as
informações de contextoGera arquivo xmlDurante execução é
passado pelo AdaptEngine Service
ISAMadapt Development Environment (ícone) Application Name
CONTEXT
nome do elemento de contexto ...NAME:
OK CANCEL
ELEMENT
SENSOR
COLLECTOR
AGGREGATOR
PREDICTOR
NOTIFIER
TRANSLATOR
SAVE
Campo de mensagens do sistema
Rules Translation
OPERANDS:
Operand2
valueUp
Valuei - valuef
Trigger
valueDown
around
Table-entry
Other c:\
Table-search
Operand1
ACTION:
OPERATOR:
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 29
Abstração: contextofase programação
Contexto fase programação1. Variáveis ambiente (fornecidas pelo EXEHDA)
Exemplos de vars.: userLocation, ISAMbda, myHome, myHost, contextServer, ...
If userLocation == myHome then install ISAMbda(applic1)
at myHost2. Comando de declaração context
Declara um contexto específico e os estados de interesse context processor::(idle, normal, busy); context deviceType::(pda, desktop); context network::(connected,disconnected);
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 30
Abstração: contextofase programação
Contexto fase programação3. Comando onContext
Ideia geral: espera evento e executa ação
onContext network::disconnected { disableSpellChecking(); } // espera assíncrona – thread atual continua a execução sync onContext processor::idle { clone (worker, worker_id); ... } // espera síncrona - thread atual fica bloqueada
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 31
Abstração: contextofase programação
Contexto fase programação4. 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
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 32
Abstração: contextofase programação
Contexto fase programação5. 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
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 33
Abstração: Contextofase de execução
Contexto fase execução Aplicação define o contexto (IDE ISAMadapt – menu Context)
Elementos de contextoNativos (processor)Definidos pela aplicação
grau de comunicação de um ente com outro válidos para essa (uma) aplicação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 34
Abstração: Contextofase de execução
Contexto fase execução
Na execução ISAMadaptEngine
Subscrição no ISAMcontextServerConsulta de estados dos elementos de contexto Executa comandos de configuração do ISAMcontextServer
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 35
Abstração: Contextofase de execução
Contexto fase execução ISAMcontextServer
Monitora o contexto Notifica a aplicação (ISAMadaptEngine) (tupla de
natureza reativa)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 36
Abstração: adaptadoresfase programação
Adaptação: fase programaçãoRecursos
Adaptive beingAdaptive methodAdaptersComandos de adaptação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 37
Abstração: adaptadoresfase programação
Adaptação: fase programaçãoPontos no programa tem um comportamento
declarado como adaptativo a um elemento do contextoAdaptive being
Similar a uma classeAdaptive method
Pontos no programa implementam alternativas para os estados possíveis do elemento do contextoAdapters: para beings e métodos
Pontos no programa são estratégias de adaptaçãoComandos de adaptação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 38
Elementos de adaptação
Adaptive being Adaptive method Adapter: alternativas expressa a
adaptive being Display context deviceType : : (pda,desktop,laptop){ // adaptive method declarations adaptive go (host) context power; // shared methods definition ...}
adaptive being Display context deviceType : : (pda,desktop,laptop){ // adaptive method declarations adaptive go (host) context power; // shared methods definition ...}
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
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 39
Elementos de adaptação
Adaptive being Adaptive method adapter
adaptive being Display context deviceType : : (pda,desktop,laptop){ // adaptive method declarations adaptive go (host) context power; // shared methods definition ...}
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 deviceadapter 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() } } ....
}
display_pda.adp
display.holo
Exemplo de Ente Adaptativo Declarado (slide
anterior Adaptador Escolha durante
a carga de código
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 40
Elementos de adaptação
Adaptive being Adaptive method adapter
adaptive being Display context deviceType : : (pda,desktop,laptop){ // adaptive method declarations adaptive go (host) context power; // shared methods definition ...}
adaptive being Display context deviceType : : (pda,desktop,laptop){ // adaptive method declarations adaptive go (host) context power; // shared methods definition ...}
display.holo
//@context: deviceType::(desktop,laptop)//@description: it uses swing/J2SE APIs adapter being Display : : desktop{ // constructor display() { native Java { // use javax.swing... } enableSpellChecking(); }// methods definition insert { ...} transfer() { ... go (Home) ...}}
Display_desktop.adp
Segundo adaptador: para mesmo exemplo anterior
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 41
Abstração: adaptadoresfase execução
ISAMcontextServer
REGISTERSubscribe
UnSubscribeSuspendResume
ISAMbda
Class Loader
Control Command
Notifier
Start
ISAMadaptEngine
AdaptiveClasses
RECONFIGURATOR
TABconf
EO
package org.isam.adapt;public class IsamAdaptEngine{ Object getBeingImpl(String beingClass); Object getMethImpl(String beingClass, String methodName); void addContextListener(ContextListener l, Context ctx); void removeContextListener(ContextListener l); Context checkContext(Context ctx); Context getContext(Context ctx); void waitForContext(Context ctx); void runOnContext(Context ctx, Runnable action); void enableNotifications (boolean enable); ResorceDesc[] discoverResource(String description); }
package org.isam.adapt;public class IsamAdaptEngine{ Object getBeingImpl(String beingClass); Object getMethImpl(String beingClass, String methodName); void addContextListener(ContextListener l, Context ctx); void removeContextListener(ContextListener l); Context checkContext(Context ctx); Context getContext(Context ctx); void waitForContext(Context ctx); void runOnContext(Context ctx, Runnable action); void enableNotifications (boolean enable); ResorceDesc[] discoverResource(String description); }
Métodos disponíveis na IsamAdaptEngine: usados pela implementação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 42
Abstração: adaptadoresfase execução
ISAMcontextServer
REGISTERSubscribe
UnSubscribeSuspendResume
ISAMbda
Class Loader
Control Command
Notifier
Start
ISAMadaptEngine
AdaptiveClasses
RECONFIGURATOR
TABconf
EO
package org.isam.adapt;public class IsamAdaptEngine{ Object getBeingImpl(String beingClass);
Retorna objeto da classe Object getMethImpl(String beingClass, String methodName);
retorna objeto da classe/métodos void addContextListener(ContextListener l, Context ctx);
Se inscreve para receber mudanças de contexto void removeContextListener(ContextListener l);
desfaz inscrição ... Context checkContext(Context ctx);
consulta contexto forçando atualização Context getContext(Context ctx);
Idem sem atualização}
package org.isam.adapt;public class IsamAdaptEngine{ Object getBeingImpl(String beingClass);
Retorna objeto da classe Object getMethImpl(String beingClass, String methodName);
retorna objeto da classe/métodos void addContextListener(ContextListener l, Context ctx);
Se inscreve para receber mudanças de contexto void removeContextListener(ContextListener l);
desfaz inscrição ... Context checkContext(Context ctx);
consulta contexto forçando atualização Context getContext(Context ctx);
Idem sem atualização}
Métodos disponíveis na IsamAdaptEngine
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 43
Abstração: adaptadoresfase execução
ISAMcontextServer
REGISTERSubscribe
UnSubscribeSuspendResume
ISAMbda
Class Loader
Control Command
Notifier
Start
ISAMadaptEngine
AdaptiveClasses
RECONFIGURATOR
TABconf
EO
package org.isam.adapt;public class IsamAdaptEngine{ void runOnContext(Context ctx, Runnable action);
Cria thread para esperar evento de contexto void enableNotifications (boolean enable);
Habilita / desabilita notificações de eventos de contexto ResorceDesc[] discoverResource(String description); }
package org.isam.adapt;public class IsamAdaptEngine{ void runOnContext(Context ctx, Runnable action);
Cria thread para esperar evento de contexto void enableNotifications (boolean enable);
Habilita / desabilita notificações de eventos de contexto ResorceDesc[] discoverResource(String description); }
Métodos disponíveis na IsamAdaptEngine
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 44
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 }
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 45
Comandos de adaptaçãofase programação
Policies
Adaptive Command:
Default Policy apply: All
Never
Best-effort
GLOBAL
CreationDisconnectionDiscoveryFilterMigrationReconnectionReplicationScheduling
Policy composition:append
replace
undefinedState:
unavailable
restrict
Action:cachingreschedulingnoschedulingrerouting ….
Policy: Max sensorMin sensorMax indexMin indexanchor being
c:\
Handle Fail:
Element Context System Resource
undefinedState:
unavailable
restrict
Action:TimeoutBlockedreschedulingrerouting…..
Context conditioned
OK CANCEL
New Edit Delete
Trocável conforme comando de adaptação selecionado
Nome do sensor
Interface para definição de políticas sobre comandos:Políticas defaultEstratégia de escalonamentoProcedimentos em desconexãoOpções de locais para instanciação...
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 46
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
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 47
Abstração Políticas de Adaptação
Dois tipos:Geral (todos entes da aplicação)
disconnection migrate nextServer -> migrar tudo antes da desconexão
disconnection cache-> 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)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 48
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)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 49
Abstração Políticas de Adaptação
Menu POLICIES do IDE ISAMadapt XML
– Relativas aos comandos de adaptação– Separadas do código, permitem alterações
independentes
<scheduling> <policy> <allbeings /> <max index="CPU_POWER" /> </policy> <policy composition="append"> <!-- Exemplo de politica especifica --> <being name=“SpellCheck" /> <anchor resource=“Dictionary" /> </policy></scheduling>
<scheduling> <policy> <allbeings /> <max index="CPU_POWER" /> </policy> <policy composition="append"> <!-- Exemplo de politica especifica --> <being name=“SpellCheck" /> <anchor resource=“Dictionary" /> </policy></scheduling>
Exemplo de arquivo XML de política de adaptação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 50
Abstração Políticas de Adaptação
Menu POLICIES do IDE ISAMadapt XML
– Relativas aos comandos de adaptação– Separadas do código, permitem alterações
independentes
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); }}
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); }}
Relativas aos comandos
de adaptação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 51
O tradutor
Ações Semânticas
JAVACC
Interface EXEHDA,ISAMadaptEngine eISAMcontextServer
Gramática
Holo ISAMadapt
ISAMadaptTranslator
Javac
Entes.holo
Adaptadores.adp
GlobalPolicies.xml
Javac
EXEHDA
Java
SpecificPolicies.xml
Context.xml
ISAMcontextServer
ISAMadaptDevelopmentEnvironment
Parser XML
Parser XML
gera
armazena
ISAMadapt.java
fontes
gera
aplicação
aplicação.java
ISA
Mbda
adapters.xml
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 52
Trabalhos Relacionados
Projeto Aura (2002)aura de informação pessoal foco nas atividades do usuário (ênfase na
dimensão pessoal)novo modelo de programação baseado em
atividades (proposta)
Projeto Gaia (2002)active spacesFoco em gerenciamento de recursosFramework para suporte a adaptaçãoCorba e LuaOrb para configurar e criar espaços de
objetosAplicação: gerenciamento de apresentação
(slides)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 53
Trabalhos Relacionados
Linguagens para adaptaçãoSumatra (Java com mobilidade forte: migração de
threads)Klaim (conectividade)Timely (blocos de adaptação a variação de QoS)Police (regras para governar a mobilidade, quem
migra, quando e para onde)
Suporte para adaptação na computação móvelMiddlewares (comunicação: Corba, Lime (ET),
PeerWare (P2P)) Frameworks (MoLèNE, Timely)APIs (Context Toolkit, Odyssey, Cadmium)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 54
Trabalhos Relacionados
BrasilProjeto SIDAM – USP (desativado)Projeto SIAM – UFMG (redes ad-hoc)Projeto ISAM – UFRGS (context-aware grid mobile
applications)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 55
Conclusões preliminares
Interesse em mobilidade tem crescido exponencialmente
Computação pervasiva: impulso em 2002Tese da arquitetura ISAM (inovadora)
Context-aware x grid x mobile computing Organização integrada da solução arquitetura ampla, muitos pontos em aberto (futuras
pesquisas, consolidação do grupo)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 56
Conclusões preliminares
ISAMadapt Linguagem para aplicações conscientes do contexto no
ambiente pervasivo (inovadora)Metodologia de projeto embrionária
ISAMcontextServerAbordagem integrada dos serviços (inovadora)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 57
Contribuições
Projeto ISAM Edital 03/2001 FAPERGS www.inf.ufrgs.br/~isam arquitetura de suporte às aplicações pervasivas Possibilidades de integração com outros grupos Dissertações de mestrado (Luciano*, Rodrigo, Alberto,
Maurício) Trabalhos de Conclusão (graduação UFSM, UCPel)
Projeto contextS Edital CNPq-FINEP-SEPIN PDI&TI/2002 middleware para reconhecimento de contexto
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 58
Contribuições
Ferramentas para construir aplicações pervasivas Suporte à programação Suporte à execução
Publicações
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 59
Publicações
PUBLICAÇÕES 2003jHPCA 2003. YAMIN, Adenauer; AUGUSTIN, Iara;
BARBOSA, Jorge; SILVA, Luciano C.; REAL, Rodrigo; CAVALHEIRO, Gerson; GEYER, Cláudio. Towards Merging Context-aware, Mobile and Grid Computing. Journal of High Performance Computing Applications. London: Sage Publications. 30p, 2003.
Mobile Computing Handbook. ISAM, joing context-awareness and mobility to building pervasive applications. Iara Augustin, Adenauer Yamin, Luciano C. Silva, Rodrigo Real, Gustavo Frainer, Gerson Cavalheiro, Claudio Geyer. I. Mahgoub and M. Ilyas Ed. Florida. CRC Press. (to be published at December, 2003).
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 60
Publicações
PUBLICAÇÕES 2002PDCN 2002. Iara Augustin, Adenauer Yamin, Jorge
Barbosa, Cláudio Geyer, Towards Taxonomy for Mobile Applications with Adaptive Behavior. International Symposium on Parallel and Distributed Computing and Networks (PDCN 2002). Innsbruck, Austria. 18-21/feb, 2002.
CATA 2002. Iara Augustin, Adenauer Yamin, Cláudio Geyer, Distributed Mobile Applications with Dynamic Adaptive Behavior. 17th International Conference on Computer and their Applications(CATA 2002). San Francisco, CA. 4-6/april, 2002, R. Gantenbein and S. Shin Editors, ISCA Publishing, ISBN 1-880843-42-0, p.372-375.
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 61
Publicações
ISCC 2002. Iara Augustin, Adenauer Yamin, Jorge Barbosa, Cláudio Geyer, ISAM - a Software Architecture for Adaptive and Distributed Mobile Applications, 7th IEEE Symposium on Computers and Communications, Taormina, Italy, 1-4/july, 2002.
IDPT 2002. Rodrigo Reis, Carla Reis, Iara Augustin, Adenauer Yamin, Daltro Nunes, Cláudio Geyer, Towards a Software Process Model to Support the Design of Mobile Computing Applications, 6th World Conference on Integrated Design and Process Technology, Pasadena California, USA, June.
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 62
Publicações
NET-CON02. Adenauer Yamin, Iara Augustin, Jorge Barbosa, Cláudio F.R. Geyer. ISAM: a Pervasive View in Distributed Mobile Computing. Network Control and Engineering for QoS, Security and Mobility with focus on Policy-based Networking (IFIP and IEEE Conference). Paris, France, 21-25 oct. 2002.
SBAC/PAD 2002. Adenauer yamin, Iara Augustin, Jorge Barbosa, Luciano C. da Silva, Rodrigo A. Real, Gerson Cavalheiro, Cláudio F.R. Geyer. Multilevel Colaborative Adaptation in High Heterogeneous Distributed Processing. 14th Symp. Computer Architecture and High Performance Computing. Vitória - Brazil, October 28-30.
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 63
Agenda
Previsão: dezembro / 2003 Interface do ambiente de desenvolvimento: Ok ISAMadaptEngine: OkISAMcontextServer: existe um protótipo simplificado (aprofundamento das questões – projeto contextS)Tradutor ISAMadapt – Java: em implementação
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 64
Agenda
Validação Implementação de uma aplicação protótipo: walkEd; Identificação de aplicações que poderão se beneficiar
das abstrações ISAMadapt nos domínios– Mobile computing– Grid computing– Context-aware computing
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 65
Aplicação WalkEd
Aplicação WalkEd (editor pervasivo)semântica siga-meContexto: tipo de dispositivo, bateria, condições de acesso à
rede (conectado, desconectado)Dispositivos: PDA Zaurus 5600 da Sharp (J2ME/CDC) desktops (J2SE)Estratégia de adaptação
Ajuste aos recursos: alta fidelidade quando os recursos são plenos, baixa fidelidade quando são escassos
Carga dinâmica de código (sob demanda): intrínseca ao modelo ISAM
Decisões de localidade no comandos de criação dos entes a cargo do middleware
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 66
Aplicação WalkEd
Funcionalidades adaptativas ao contexto Variação nas opções de interface para os diferentes
dispositivos Migração da edição para outro equipamento quando
bateria está baixa ou por decisão do usuário Habilitação/desabilitação de tarefas de edição Ativação/desativação da verificação automática conforme
condições do acesso à redePolítica de adaptação
Criação de entes próximos aos recursos (Ex: ente verificação ortográfica próximo ao dicionário, ente Printer próximo à impressora)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
junho/2010 - Slide 67
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 68
Contribuições: taxonomia
context-basedadaptation
Situation
Context
Ap
plic
atio
n
SystemControl ofAdaptation
Resource
location-basedadaptation
resource-basedadaptation
pa
ram
ete
r-b
ase
da
da
pta
tion
con
ten
t-b
ase
da
da
pta
tion
fun
ctio
na
lity-
ba
sed
ad
ap
tatio
n
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 69
O processo de tradução
Fragmento de código
Fragmento traduzido
interface Display { void run();
void go(Symbol target); void print();
}interface DisplayMethod_Go { void invoke(Symbol target); }
Class DisplayAdapter implements Display, DisplayMethod_Go ContextListener, Migrable, Runnable{ private Display beingImpl; private DisplayMethod_Go methImpl; DisplayAdapter() // constructor { beingImpl=IsamAdaptEngine.getBeingImpl (“Display”); methImpl=IsamAdaptEngine.getMethImpl (“Display”, “Go”); IsamAdaptEngine.addContextListener (this,”deviceType”); } void run() { beingImpl.run(); } void go(Symbol target) { methImpl.invoke(this, target);} void contextChanged (Context ctx) { if (ctx.getType().equals(“power”)) methImpl=getMethImpl(“Display”, “Go”); else beingImpl=getBeingImpl(“Display”); }...}
interface Display { void run();
void go(Symbol target); void print();
}interface DisplayMethod_Go { void invoke(Symbol target); }
Class DisplayAdapter implements Display, DisplayMethod_Go ContextListener, Migrable, Runnable{ private Display beingImpl; private DisplayMethod_Go methImpl; DisplayAdapter() // constructor { beingImpl=IsamAdaptEngine.getBeingImpl (“Display”); methImpl=IsamAdaptEngine.getMethImpl (“Display”, “Go”); IsamAdaptEngine.addContextListener (this,”deviceType”); } void run() { beingImpl.run(); } void go(Symbol target) { methImpl.invoke(this, target);} void contextChanged (Context ctx) { if (ctx.getType().equals(“power”)) methImpl=getMethImpl(“Display”, “Go”); else beingImpl=getBeingImpl(“Display”); }...}
adaptive being Display() context deviceType : : (pda,desktop,laptop){ // adaptive method declarations adaptive go (target) context power; // shared methods definition print () { clone (Printer, impr); .... }}
adaptive being Display() context deviceType : : (pda,desktop,laptop){ // adaptive method declarations adaptive go (target) context power; // shared methods definition print () { clone (Printer, impr); .... }}
Class DisplayImplBase implements Display{ void print() { // translated code }
Class DisplayImplBase implements Display{ void print() { // translated code }
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 70
O processo de Tradução
Fragmento de código
Fragmento traduzido
//@context: deviceType::(desktop,laptop)//@description: it uses swing/J2SE APIs adapter being Display : : desktop() { // constructor display() { native Java { // use javax.swing... } enableSpellChecking(); }// methods definitionenableSpellChecking() { ... // menu set clone (SpellCheck); } insert (line) { ...}}
//@context: deviceType::(desktop,laptop)//@description: it uses swing/J2SE APIs adapter being Display : : desktop() { // constructor display() { native Java { // use javax.swing... } enableSpellChecking(); }// methods definitionenableSpellChecking() { ... // menu set clone (SpellCheck); } insert (line) { ...}}
/*** @context deviceType::(desktop,laptop)* @description it uses swing/J2SE APIs **/class DisplayImpl_desktop extends DisplayImplBase{ private Display adapter; DisplayImpl_desktop(Display adapter) { this.adapter=adapter; } void run() { // translated code of constructor display this.enableSpellChecking(); } void go( Symbol target) { adapter.go(target);} void enableSpellChecking() { ... // menu set exehda.lang.isamadapt.Runtime.createBeing (“SpellCheck”, null, null); } void insert(Symbol line) { // ...translated code }}
/*** @context deviceType::(desktop,laptop)* @description it uses swing/J2SE APIs **/class DisplayImpl_desktop extends DisplayImplBase{ private Display adapter; DisplayImpl_desktop(Display adapter) { this.adapter=adapter; } void run() { // translated code of constructor display this.enableSpellChecking(); } void go( Symbol target) { adapter.go(target);} void enableSpellChecking() { ... // menu set exehda.lang.isamadapt.Runtime.createBeing (“SpellCheck”, null, null); } void insert(Symbol line) { // ...translated code }}
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 71
O processo de tradução
Fragmento de código
Fragmento traduzido
//@context: power ::(low,high) //@description: it moves when power is insuficient
adapter DisplayMethod_Go (target)::Low { if (target=null) target := myHome; move (self, target); }}
//@context: power ::(low,high) //@description: it moves when power is insuficient
adapter DisplayMethod_Go (target)::Low { if (target=null) target := myHome; move (self, target); }}
Class DisplayMethod_Go_Low implements DisplayMethod_Go{ DisplayMethod_Go_Low(Display adapter, Symbol target) { // translated code of constructor if (target==null) target=exehda.lang.isamadapt.Runtime. getEnv(“myHome”); exehda.lang.Isamadapt.Runtime.moveBeing (adapter, target); } }
Class DisplayMethod_Go_Low implements DisplayMethod_Go{ DisplayMethod_Go_Low(Display adapter, Symbol target) { // translated code of constructor if (target==null) target=exehda.lang.isamadapt.Runtime. getEnv(“myHome”); exehda.lang.Isamadapt.Runtime.moveBeing (adapter, target); } }
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 72
O processo de tradução
Outros comandos são traduzidos para chamadas da isam.adapt.ISAMadaptEngine ou isam.exehda.lang.isamadapt.Runtime.
Por exemplo,
onContext network::connect { // ... comandos }
onContext network::connect { // ... comandos }
Fragmento de código
Fragmento traduzido
Runnable action = new Runnable { void run() { ... // command code }}IsamAdaptEngine.runOnContext (Context ctx, Runnable action);
Runnable action = new Runnable { void run() { ... // command code }}IsamAdaptEngine.runOnContext (Context ctx, Runnable action);
sync onContext processor_idle { // ... Comandos}
sync onContext processor_idle { // ... Comandos}
IsamAdaptEngine.waitForContext (Context ctx);// ... comandos
IsamAdaptEngine.waitForContext (Context ctx);// ... comandos
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 73
Ambiente de desenvolvimento
Menus definem os atributos de configuração
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 74
Menu Context
Context
c:\
Context Element
Insert Edit Delete
OK
Name:
Cancel
Type: System Catalog Application
Category: temporal
personal
spatial
social
FrequencyVariation: static
dynamic
Scale: local
global
Importance: 0 .. 9
Aggregator
CollectorSensor Predictor
Notifier Rules Translation
Name:
Description:
Interface Code:
Control Parameters:
Frequency:
Parameters:
rewritetimeout
Data Type: Unidade de medidaAgility: continuous
periodic Tempo do ciclo
Atributos: Parâmetroscadastrados
System Catalog
Application
New Edit Delete
New Edit Delete
Name:
Description:
c:\Code:
Agility: continuousperiodic Tempo do ciclo
System Catalog
Application
New Edit Delete
Name:
Description:
c:\Code:
Type:
New Edit Delete Save
operand1
Operand2
valueUp
Operators:
Valuei - valuef
trigger
valueDown
aroundTable-entry
Possibility List of Context Value:
Type:predictive
sensitive
Registry
Locations:
Information Type:relative
absolute
History: on
off
celular
Otherc:\c:\c:\ c:\
Save
Save
Parameters
historic dynamic
Table-search
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 75
Menu Adapters
Adapters
Nome do método genérico (arq. Method.txt)Adaptive Method:
Element Context:Seleciona o elemento do contexto(context_*.xml)
State of Context Element:
Bind Code
Insert Edit Delete
OK
Being:
Cancel
Possibilities number:
mneumônico
Search
Edit Alternative Code
Default Code
Adaptor Code: c:\
Seleciona o ente entre os entes daaplicação (beings.txt) Adaptive Being
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 76
Menu Policies
Policies
Adaptive Command:
Default Policy apply: All
Never
Best-effort
GLOBAL
CreationDisconnectionDiscoveryFilterMigrationReconnectionReplicationScheduling
Policy composition:append
replace
undefinedState:
unavailable
restrict
Action:cachingreschedulingnoschedulingrerouting ….
Policy: Max sensorMin sensorMax indexMin indexanchor being
c:\
Handle Fail:
Element Context System Resource
undefinedState:
unavailable
restrict
Action:TimeoutBlockedreschedulingrerouting…..
Context conditioned
OK CANCEL
New Edit Delete
Trocável conforme comando de adaptação selecionado
Nome do sensor
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 77
ISAMcontextServer
Register
History
Code
Code
Code
Registries
Descriptions
Context data
ISAMadaptEngine 1
EXEHDA
ISAMcomponents
sensor
sensor
sensorSensoreddata
ExternalSource
TRANSLATOR
subscribe
NOTIFIER
AGGREGATOR
EO
PREDICTOREO
ISAMcontextServer
Con trol
EXEHDAnode
(monitor)
Sensored data
DISCOVEREREXEHDAbase
EXEHDAnode
(monitor)
sensor
ISAMadaptEngineEXEHDA
TIPS
TIPSISAMadaptEngine n
DE
FLE
CT
OR
COLLECTOR
DEFLECTOR
ISAMcontextServer
EXEHDAbase
EO
. . . . .C
OLL
EC
TO
R
EO
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 78
Revisão
O que é ISAMAdapt?Qual a relação entre os 3 níveis de computação
móvel e no tempo?Móvel, Pervasiva, Ubíqua
Aspectos importantes da CM com relação à programação?
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 79
Revisão
O que é ISAMAdapt?R: Linguagem para CM/CP com adaptação ao contexto
Qual a relação entre os 3 níveis de computação móvel e no tempo?R:
Móvel: hoje; Pervasiva: futuro próximo Ubíqua: futuro distante
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 80
Revisão
Aspectos importantes das aplicações CM com relação à programação?R:
semântica Siga-me disponibilidade em qualquer lugar e tempo ambiente virtual
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 81
Revisão
Semântica Siga-me?Quais aspectos da computação (TI) são alvo do
ISAM?Arquitetura ISAM: tipo? níveis?Quais as diferenças entre ISAMAdapt e
Hololinguagem?Pervasividade X programação?Alguns aspectos dos mw atuais para CM/CP?3 pontos fundamentais da proposta ISAMAdapt?Tópicos a serem considerados na elaboração de uma
linguagem como ISAMAdapt?
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 82
Revisão
Semântica Siga-me?R: Independente de lugar Independente de tempo Independente de plataforma
Quais aspectos da computação (TI) são alvo do ISAM?R: ambientes de programação e de execução
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 83
Revisão
Arquitetura ISAM: tipo? níveis?R:
em camadas hw e SO: usuais programação: Hololinguagem e ISAMAdapt (Java) execução
– usuário, runtime de linguagem, servidor de contexto– módulos básicos: migração, replicação,
monitoração, ...
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 84
Revisão
Quais as diferenças/contribuições entre ISAMAdapt e Hololinguagem?R:
ISAMAdapt: adaptação, contexto, execução Holo: entes, blackboard, mobilidade
Pervasividade X programação?R:
Mobilidade do usuário (follow-me applications) Imprevisibilidade do ambiente de execução Adaptação ao contexto (consciência do contexto)
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 85
Revisão
Alguns aspectos dos mw atuais para CM/CP?R:
não consideram restrições, desconexões, variação na disponibilidade de recursos e serviços, dinamicidade,...
para aplicações específicas alguns aspectos isolados
– agentes móveis– contextos específicos: banda– adaptação específica– blackboard
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 86
Revisão
3 premissas fundamentais da proposta ISAMAdapt?R:
adaptação ao contexto via linguagem de programação colaboração entre programação e execução
Tópicos a serem considerados na elaboração de uma linguagem como ISAMAdapt?R:
modelo(s) de aplicação modelo de programação processo de adaptação suporte à adaptação processo de modelagem de aplicações
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 87
Revisão
Elementos e tipos da adaptação?Abstrações principais da ISAMAdapt?
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 88
Revisão
Elementos e tipos da adaptação?R:
elementos: usuário, aplicação, runtime aspectos: pessoal, temporal, espacial, social
Abstrações principais da ISAMAdapt?R:
contexto comandos e políticas adaptadores
Clique para editar os estilos do texto mestreSegundo nívelTerceiro nívelQuarto nívelQuinto nível
Maio /2008- Slide 89
Revisão
Relaçionamento entre aplicação e servidor de contextoR:
aplicação informa qual o contexto de interesse servidor de contexto informa a aplicação de mudanças
no contexto indicado