Modelos e Linguagens de POO
para aplicações Tempo Real
Necessidade de Modelos
Uso de OO e Reflexão Computacional
Modelos e Ling. OO e Reflexivos
O Modelo RTR
A Linguagem Java/RTR
Introdução
Sistemas Tempo Real (STR)
Aplicações tempo real
Tamanho, complexidade e criticalidade (hard x soft)
Necessidade de correção temporal
Desenvolvimento de STR
Correção lógica + temporal
Req. específicos: correção temporal e previsibilidade
Req. emergentes: distribuição, flexibilidade e integração
Fator Tempo deve ser considerado em todos os estágios e
suportado pelo hardware, S.O., modelo e ling. programação
Programação de STR
Inadequação de modelos e linguagens convencionais
Soluções propostas:
Extensões tempo real : RTCC, RT-Modula2, Ada95
Linguagens tempo real novas : Pearl, HI-Pearl, RT-Euclid
Introdução
Problemas encontrados:
Gerenciamento da complexidade / Falta de
flexibilidade
Representação/Controle dos aspectos temporais
Dependência de ambientes operacionais
específicos
Dificuldade de reuso, manutenção e integração
Busca de novos mecanismos
Estruturação de STR / Representação aspectos
temporais
Orientação a objetos
Reflexão Computacional
Propostas recentes
RTC++, FLEX, RTT, RT-Java, RTSJ, R2,
DRO/DROL e RT-MOP, Modelo RTR, Java/RTR
Orientação a Objetos e Reflexão
Computacional no contexto Tempo Real
Orientação a Objetos
Sucesso do paradigma
Uso de Objetos é Atrativo
Gerenciamento da complexidade
Características básicas favorecem reuso.
flexibilidade e Manutenção
Concorrência e distribuição
Problemas
Não suporta representação e controle das
Restrições Temporais
Ineficiência e Imprevisibilidade
STR Hard x STR Soft
Orientação a Objetos e Reflexão
Computacional no contexto Tempo Real
Reflexão Computacional
Raciocinar e atuar sobre sí próprio
Monitorar e Modificar
Estrutura e Comportamento do Sistema
Qualquer Paradigma, OO em particular
Abordagem de Meta-Objetos
Separa Aspectos Funcionais de Aspectos
não-funcionais
Ajustes dinâmicos de estrutura e
comportamento
Torre reflexiva
Orientação a Objetos e Reflexão
Computacional no contexto Tempo Real
Vantagens do uso de Reflexão
Simplificação da programação
Modularização
Reuso e Manutenção
Incremento da Flexibilidade
Controle do usuário sobre o sistema
Extensibilidade e evolução
Áreas de aplicação
SO, SD, Projeto de Linguagens, Tolerância
a Falhas, Concorrência, Trabalho
Cooperativo e Tempo Real
Reflexão Computacional e
Tempo Real
Abordagem promissora
Flexibilidade e gerenciamento
Adequação à questões correlatas a TR
Potencialidades
Adição/modificação de construções
temporais
Definição de comportamento
alternativo
Adequação do algoritmo de
escalonamento
Reflexão Computacional e
Tempo Real
Potencialidades
Ajustar Tempo de Execução
Análise de escalonabilidade dinâmica
Implementar protocolos TR
Independência entre aplicação e ambiente
operacional
Incrementar a portabilidade
Problemas
Desempenho e previsibilidade
Informações a serem refletidas
Modelos de Programação TR OO
STR devem satisfazer:
Correção Temporal
Previsibilidade
Segurança de Funcionamento
STR também devem satisfazer:
Modularidade, Reusabilidade,
Manutenibilidade, Distribuição,
Flexibilidade e Integração com
Sistemas não-TR
Modelos de Programação TR OO
Caracterização
Sistema computacional de controle e
Ambiente a ser controlado
Estrutura e semântica de
funcionamento deve representar
integralmente aspectos funcionais e de
controle temporal
Aspecto central no desenvolvimento
Base para Metodologias e LPTR
Modelos de Programação TR OO
Modelo RTO.K (Kim e Kopetz, 92, 94, 96)
Extensão do modelo de Objetos
Introduz
Métodos Espontâneos (ativados por tempo)
Associação de deadlines às ativações
Dados de tempo real (duração máxima de
validade)
Restrição básica de concorrência
Unidade de armazenamento atômica
Comunicação
Intervalo, Frequência, Start e Deadline
chamadas podem ou não ser bloqueadas
Independência de plataforma e linguagem
Modelos de Programação TR OO
Modelo RTC++ (Ishikawa 92)
Modelo implícito à LTR RTC++
Objetos ativos (com rest. Temporais)
Executam concorrentemente
RT – métodos e comandos
Exceções temporais
Concorrência
Regiões criticas (c/ RT)
Comunicação síncrona
Reply – sender continua
Filosofia de programação – Ling. RTC++
Modelos de Programação TR OO
Modelo DRO (Takashio e Tokoro, 93)
Extensão distribuida do modelo OO
Best-effort e least-suffering
Invocação polimórfica
Métodos com RT
Restrições Temporais
Tarefas Periódicas (métodos ativos)
Tempo de execução dos métodos
Controle reflexivo
Concorrência – estados habilitados
Comunicação – polimorfismo temporal
Linguagem DROL
Modelos de Programação TR OO
Outros Modelos
RTT – RealTimeTalk
Framework para Modelagem e Projeto de STR
Modelo R2 (Real-Time Reflective)
OO e Reflexão Computacional
STR soft
Linguagem ABCL
RT-MOP
Baseado em grupos de escalonamento
Meta-objetos
Modelo RTR
Objetivos
Estruturação e programação de STR
Favorecendo correção temporal
Flexibilizando representação/controle dos
aspectos temporais
Facilitando gerenciamento da complexidade
Reuso/manutenção de software tempo
real
Extensão/evolução de sistemas
Independência de linguagem e de
ambiente operacional
Caracterização
Objetos, Concorrência, Reflexão e Tempo
Real
Modelo RTR
Reflexão no modelo RTR
Monitorar / Modificar - Estrutura / Comportamento
Abordagem de meta-objetos
Vantagens potenciais
Simplificação, flexibilidade
políticas de controle a nível de aplicação
capacidade de reuso e manutenção
Focos de utilização
objetos-base - questões funcionais
meta-objetos - questões de controle
Adição/modificação de construções temporais
Alteração/substituição de algoritmos de escalonamento
Manipulação de exc. temporais, concorrência e sincronização
Controle do comportamento : tempo, carga, QoS,...
Tempo Real
representação/controle de restrições temporais
Escalonamento tempo real : meta-nível da aplicação
Abordagem de melhor esforço (“best-effort”)
Modelo RTR
Estrutura geral /Dinâmica de funcionamento
M E T A -O B J E T O
E SC A L O N A D O R
M E T A -O B J E T O
RELÓGIO
Meta-Objeto
Gerenciador
Meta-Objeto
Gerenciador
Objeto-Base
Objeto-Base
Meta-Objeto
Gerenciador
Nível-Meta
Nível-Base
Objeto-Base
Modelo RTR
Descrição detalhada
Objetos-base de tempo real (OBTR)
Similar aos objetos convencionais
Representação de restrições temporais
Declaração de novos tipos de restrições temporais
RT-Type ActivationInterval = (StartTime,
EndTime)
Associação de restrições temporais e manipuladores de
exceções aos métodos do objeto
void Metodo1(...), ActivationInterval (T1,
T2),Exceçao1(...)
Ativação de métodos com atributos temporais
ObjetoX.Metodo1(...), (300, 1000)
Cláusula Timeout
Exemplo de um OBTR
OBTR class ClasseExemplo
begin
// definição de novos tipos de restrições temporais
RT-Type Start-at = (StartTime, Deadline, MET);
// declaração das variáveis da classe
...
// declaração dos métodos:
void Met1 ( ... ), Aperiodic (D, MET=20), ExcMet1( );
begin ... end;
void Met2 ( ... ), Periodic (P, Fim, MET=10),ExcMet2( );
begin ... end;
void Met3 ( ... ), Aperiodic(D, MET=15), ExcMet3 ( );
begin ... end;
void Met4 ( ... ), Start-at (Tinicio,D,MET=10),ExcMet4;
begin ... end;.
end
Meta-objetos gerenciadores (MOG)
Funções básicas
Gerenciamento de pedidos de ativação
Controle de concorrência
Especificação/controle de sincronização
Controle das restrições temporais
Interação com MO Escalonador e MO Relógio
Manipulação de exceções temporais
Ativação de métodos dos objetos-base
Estrutura geral
MOG class id-meta-classe
begin
<Seção de gerenciamento>
<Seção de sincronização>
<Seção de exceções temporais>
<Seção de restrições temporais>
end
Exemplo de um MOG
MOG class MetaClasseExemplo;
begin
// Declaração das variáveis ...
// *** seção de gerenciamento ***
void RecebePedido (MetId, ... ) begin ... end;
void ProcessaPedidoSRT (MetId, ... ) begin ... end;
void LiberaPedidoDeAtivacao (MetId) begin ... end;
void FimDeExecucao(MetId) begin ... end;
// *** seção de sincronização ***
Path 2 : (Met1 ; Met3) end;
bool VerificaSincronizacao(MetId) begin ... end;
void AtualizaEstSincronizacao (MetId) begin ... end;
// *** seção de exceções temporais ***
void ExcMet1 ( ... ) begin ... end; ...
// *** seção de restrições temporais ***
void Periodic(MetId, ExcId, P, Fim, MET) begin ... end;
void Aperiodic (MetId, ExcId, D, MET) begin ... end;
void Start-at (MetId, ExcId, Tinicio, D, MET) begin ... end;
end;
RT Aperiodic
void Aperiodic (MetId, ExcId, D, MET)
begin
id-MOE.Escalona (id-MOG, MetId, D)
if D > (current-time + MET) then
id-MOG.LiberaPedidoDeAtivação (MetId);
if D > (current-time + MET) then
id-OBTR.MetId ( ... );
id-MOG.AtualizaEstadoSincronizacao(MetId)
else
id-MOG.ExcId ( ... )
end if
id-MOG.FimDeExecução ( ... )
else
id-MOG.ExcId ( ... );
id-MOE.LiberaProximoPedido ( )
end;
end if
Meta-objeto escalonador (MOE)
Funções básicas
Recebe, ordena e libera pedidos de ativação
Implementa a política de escalonamento
Mapeia decisões de escalonamento para
suporte subjacente
Vantagens
Flexibilidade na escolha da política de
escalonamento
Independência de ambiente operacional
adequação às especificidades das aplicações
Meta-objeto relógio (MOR)
Funções
básicas
Fornecer
uma base de tempo
Programar ativações para um
tempo futuro
Efetuar ativações time-trigger
Controlar passagem do tempo
detectar violações temporais
Potencialidade / Expressividade
do Modelo RTR
Facilidades básicas inerentes
Suporte a facilidades avançadas
Reflexão de aspectos não temporais
Ajuste dinâmico dos atributos das restrições
temporais
Política de admissão de tarefas
Escalonamento tempo real
Tempo máximo de execução, Período, Deadline, ...
Análise de escalonabilidade dinâmica
Cláusula “CATEGORIA”
Mudança dinâmica da política
uso simultâneo de diferentes políticas
Controle reflexivo da disponibilidade de memória
Criação de objetos - operação reflexiva
gerenciador de memória determinista
Polimorfismo Temporal
Computação imprecisa - N-versões
Exemplo:
RT-Type TimingPolymorphic = (Deadline, <MethodList>);
...
void DisplayImagem( ... ), TimingPolymorphic (D, Met1=”DIqA”,
Met2=” DI-qB”, Met3=” DIqC”),
IdExcecaoTemporal ( )
...
void DI-qA ( ... ) // MET = 150
begin ... end;
void DI-qB ( ... ) // MET = 100
begin ... end;
void DI-qC ( ... ) // MET = 50
begin ... end;
Escalonamento “task-pair”
versão hard, versão soft
sincronização multimídia
Aspectos temporais
questão de sincronização
tratamento “best-effort”
Relações de sincronização
Modelo de intervalos (Allen 83) - 13 relações
Modelo de intervalos estendido (Wahl 94)
29 relações - 10 operadores
Representação dos operadores no modelo RTR
Restrições temporais básicas
ActivationInterval,
Aperiodic, Periodic,
Start-at
Exemplo : Representação de uma animação
parcialmente comentada por um vídeo
“Animation while (d1, d2) Audio”
1
Audio
2
Animation
T1
T2
t
void Animation ( ... ), ActivationInterval
(StartTime, EndTime), Exc1() begin ... end;
void Audio ( ... ), ActivationInterval (StartTime,
EndTime), Exc2() begin ... end;
...
@Animation ( ... ), (T1, T2);
@Audio ( ... ), (T1 + D1, T2 - D2);
Extensão distribuída do modelo RTR
Adoção da arquitetura CORBA
Meta-objetos de Comunicação
Interoperabilidade, transp.de distribuição e
heterogeneidade
MetaStub / MetaDII e MetaSkeletons
Comportamento tempo real
Adoção de políticas “best-effort”
Restrições temporais controladas localmente
timeouts (cliente) e deadlines (servidor)
<id-objeto>.<id-método> (<args>),(<args-temp>)
Timeout ( <valor-timeout> ),
Exception
begin
case reject : <manipulador de exceção>
case abort
: <manipulador de exceção>
case timeout : <manipulador de exceção>
end
Estrutura do modelo RTR distribuído
META-OBJETO
ESCALONADOR
META-OBJETO
RELÓGIO
CLIENTE
M
eta Stub
/ DII
M
Meta
etaStub
Stub//DII
DII
Meta-Objeto
Gerenciador
Nível-Meta
Nível-Base
Objeto-Base
M
Stub
//DII
Meta
eta
Stub
DII
Stub
/ DII
META-OBJETO
ESCALONADOR
META-OBJETO
RELÓGIO
MetaStub
Stub//DII
DII
M
Meta
eta Skeleton
SERVIDOR
Meta-Objeto
Gerenciador
Meta
etaStub
Stub / DII
M
Skeleton/ DII
OBJECTREQUESTBROKER
Objeto-Base
Exemplo de aplicação
Composição de um documento multimídia
Estação A
Servidor
de Som
Estação B
Estação C
Servidor
de Imagem
Servidor
de Texto
Cliente
de Imagem
Cliente
de Texto
Estação X
Cliente
de Som
Composição do
Documento M ultimídia
Protótipo da extensão distribuída
Mapeamento do modelo RTR para SOLARIS 2.4
Implementação usando ORBLINE 1.0
Estrutura básica de um
cliente de mídia
OBTR Class ClienteMídia
begin
...
RequisitaMídia (...), Periodic (StartTime, Period, EndTime , MET),
ExceçãoRequisitaMídia ()
begin
...
end
ServidorDeMídia.RecuperaMídia(Buffer[I], ...), (ValorDeadline)
Timeout (ValorTimeout),
Exception
begin
case reject : < manipulador de exceção reject >
case abort
: < manipulador de exceção abort >
case timeout : < manipulador de exceção timeout >
...
end
ApresentaMidia (...), Periodic (... ), ExceçãoApresentaMidia()
begin ... end;
// outros métodos do objeto-base ...
end;
MOG Class ClienteMídia
begin ... end;
Estrutura básica de um
servidor de mídia
OBTR Class ServidorDeMídia
begin
...
RecuperaMídia (...), Aperiodic (Deadline, MET=30),
ExceçãoRecuperaMídia ()
begin ... end;
// Outros métodos do servidor
...
end;
MOG Class ServidorDeMídia
begin
...
// seção de exceções :
ExceçãoRecuperaMídia ()
begin ... end;
...
// seção de restrições temporais :
Aperiodic (...)
begin ... end;
end;
Java / RTR
Caracterização
Objetivos
Viabilizar programação de STR segundo o modelo RTR
Uso da tecnologia Java no desenvolvimento de STR
Extensões básicas
Extensão da linguagem Java (TM Sun Microsystems Inc.)
Implementação explícita do modelo RTR
Definição de um esquema reflexivo
Representação / controle dos aspectos temporais
Pré-processador Java/RTR - Java
Análise léxica, sintática e semântica das extensões RTR
Mapeamento das extensões para construções Java
Estrutura reflexiva de Java/RTR
Objetos e meta-objetos
Representados por diferentes tipos de classes
Estrutura geral de classes e meta-classes
[<ClassModifiers>] [<RTRoption>] class
<Identifier> [extends <TypeName>]
[implements <TypeNameList>]
<ClassBody>
onde <RTRoption> identifica o tipo de classe Java/RTR
RTBC - Real-Time Base-Class
MMC - Manager Meta-Class
SMC - Scheduler Meta-Class
CMC - Clock Meta-Class
classe-base convencional, assumida por default
Classes RTBC
Alteram classes Java convencionais com as
seguintes extensões / proibições:
Declaração de tipos de restrições temporais
RT-Type <RTIdentifier> = [<RTType> , ] (<RTAtributesList>)
Associação de restrições temporais, manipuladores de exceções
e categorias
[<M-Modifiers>] <ResultType> <M-Identifier> ([<ParameterList>])
[throws <TypeNameList>]
[,<TimingConstraint >]
[,<TimingExceptionHandler>]
[, category = <CategoryIdentifier>]
<MethodBody>
Associação de par. temporais / timeout à ativação de métodos
Proibição criação/manipulação explícita de threads de controle
Introdução de mensagens assíncronas
Meta-classes MMC
Todas as facilidades Java
Especificação da sincronização via
“path-expression”
Implementam interface padrão
(Protocol-MMC)
MMC padrão (Standard-MMC)
Programadas pelo usuário (uma por
RTBC da aplicação)
Novos tipos de restrições temporais
Manipuladores de exceções
Procedimentos de controle (categorias)
Classes Scheduler e Clock
Meta-classes SMC e CMC
Todas as facilidades Java
Interface padrão / Meta-classe padrão
Classes convencionais
Funções auxiliares
Tarefas não tempo real (RTBC’s
especiais)
Java / RTR
Criação de objetos/meta-objetos
MO manager - criados implicitamente sempre
que um objeto-base tempo real for criado
MO scheduler / MO clock - criados implicitamente
Ativação de mét. de obj. tempo real
Forma reflexiva
ativação desviada para MO manager correspondente
mensagens síncronas ou assíncronas (@)
parâmetros temporais / cláusula timeout
Concorrência / sincronização
Esquema misto
Meta-classes - mecanismos padrão de Java
Classes RTBC - comportamento proposto no modelo
RTR
controle via meta-objeto manager
necessidade de controle explícito sobre as threads ativas
Análise do modelo RTR
Vantagens
Limitações
Facilidades relativas a estruturação
Flexibilidade para representação / controle aspectos
temporais
Reuso/manutenção na presença do tempo
Aberto a novas técnicas e mecanismos tempo real
Extensibilidade
Independência de ambiente operacional
Previsibilidade não inerente
Overhead devido a reflexão
Comparando com outros modelos
tempo real
Expressividade, no mínimo, eqüivalente
Reúne características dispersas nos demais modelos
+ Flexível, + Adaptável e + Independente
Análise da linguagem Java/RTR
Vantagens
Expressividade/Flexibilidade - representação de
asp. temporais
Facilidade no entendimento / gerenciamento da
complexidade
Capacidade de reuso / manutenção
Independência de ambiente operacional
Tratamento reflexivo das questões temporais
Independência de arquitetura de Java
Redução do “Gap”semântico entre projeto e
implementação
Tratamento integrado concorrência x tempo real
Análise da linguagem Java/RTR
Limitações
Esquema misto de concorrência /
sincronização
Previsibilidade
presença de mecanismos / construções
não deterministas
limitação comum às demais LTROO
Necessidade de disciplina de
programação, substituição de
mecanismos
Análise Comparativa
Java
RTR
RT
Java
RTC
++
Drol
Análise de
escalonabilidade
*
*
*
-
Construções com TME
previsível
0
1
0
Flexibilidade
3
2
Suporte a concorrência
3
Reuso e manutenção
R2 +
ABCL
Flex
Ada
9x
RTT
-
*
*
3
0
0
0
0
3
1
2
2
2
1
0
3
2
-
2
0
3
-
3
2
2
2
2
1
1
2
Exceções temporais
3
3
3
3
2
2
2
2
Robustez
2
2
2
2
2
2
3
3
Ger. da complexidade
3
2
2
2
2
1
1
2
Acesso às políticas
3
1
0
1
3
0
1
0
Rest. temp. explícitas
3
2
3
3
3
3
1
2
Novas rest. temporais
3
1
0
0
2
1
0
0
Novos alg. escalonam.
3
1
0
0
3
0
1
0
Adequação a STR Hard
1
2
2
2
1
2
2
3
Adequação a STR Soft
3
2
1
2
3
2
2
1
Independência de
ambiente operacional
3
3
0
0
-
2
2
2
Trabalhos correlatos
Extensão distribuida
Simulação em Java
Tratutor Java/RTR – Java
Tradutor Java-RTR – RTSJ (Eclipse)
Mecanismo de Adaptação para TR
usando Computação Imprecisa
Sincronização Multimidia
Sincronização em Java
class Buffer
{
private int contents;
private boolean avaliable = false;
public synchronized int get ()
{
while (avaliable == false)
wait ();
avaliable = false;
notify ();
return contents;
}
public synchronized void put (int value)
{
while (avaliable == true)
wait ();
contents = value;
avaliable = true;
notify ();
}
}
Sincronização em Java/RTR
RTBC class Buffer
{
private int contents;
public int get ();
{
return contents;
}
public void put (int value)
{
contents = value;
}
}
MMC class Meta_Buffer extends Standard-MMC
{
...
// seção de sincronização
path put ; get end;
protected boolean VerifySynchronization (...)
{ ... };
protected void UpdateSynchronizationState (...)
{ ... };
...
}
Operadores do modelo de intervalo
A
A
A
1
1
B
B efor e (1 )
A
1
1
B
A
B
C obeg in (1 )
2
1
A
2
1
B
E n d in ( 1 ,2 )
C oen d (1 )
A
1
2
B
W h ile (1 ,2 )
B
D ela yed (1 , 2 )
S ta r tin (1 , 2 )
A
2
1
B
C r oss (1 ,2 )
1
B
B
B efor een d of (1 )
2
A
A
1
3
2
B
O ver la p s (1 ,2 )