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 )