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 )
Download

Modelos e Linguagens de POO para aplicações Tempo Real