250 likes | 361 Views
Mapeamento de CSP em UML-RT. P. State of P. q : Q. a.in / createCapsule(r);. a. r : R. a.in / removeCapsule(r);. Características de UML-RT. Cápsulas Classes ativas e independentes Comunicam-se através de mensagens (sinais)
E N D
P State of P q : Q a.in / createCapsule(r); a r : R a.in / removeCapsule(r); Características de UML-RT • Cápsulas • Classes ativas e independentes • Comunicam-se através de mensagens (sinais) • Máquinas de estado modelam o comportamento da cápsula para cada ocorrência de sinal • Podem ser: • Fixas: criadas automaticamente quando o sistema é iniciado • Opcionais ou Plug-in: criadas e destruídas em runtime (como processos CSP)
a.in / createInstance(r); r : R a.in / removeInstance(r); Características de UML-RT • Cápsulas Fixas x Cápsulas Opcionais P q : Q a • Cápsulas opcionais ativas comportam-se exatamente como cápsulas fixas • Cápsulas opcionais inativas não produzem qualquer efeito
Características de UML-RT • Portas • Realizam protocolos • Usadas para enviar ou receber mensagens de dados • Podem ser: • Wired: explicitamente conectadas a outras portas, através de conectores • Unwired: conectadas dinamicamente, em runtime • Protocolos • Definem as regras de comunicação entre portas de um mesmo tipo • Definem o tipo das mensagens que podem ser transmitidas ou aceitas pelas portas das cápsulas (como canais CSP)
port.signal(data).send(); port.signal(data).send(Priority.High); port.signalIn(data).invoke(); Características de UML-RT • Mensagens • Podem ser: • Assíncronas • Síncronas (como eventos CSP) port.signalOut(data).reply();
Mapeamento de CSP em UML-RT • Deve considerar: • tipos de dados como classes básicas de negócio • processos como cápsulas • canais como portas de comunicação • Parâmetros como atributos de cápsulas • funções e expressões lógicas como expressões, métodos de cápsulas ou classes auxiliares
Mapeamento de Tipos de Dados T datatype T = v0 | .. | vn $ v0 : T $ v1 : T T x : T1 y : T2 datatype T = T1.T2 getX() : T1 getY() : T2
Mapeamento de Processos • Processos são representados como cápsulas • As transições da máquina de estados refletem o fluxo de controle (traces) do processo • Comunicação entre cápsulas deve atender o modelo de comunicação de CSP P a2 a1 P = a1?x → a2!x → Stop SP a1.in?x / a2.out!x; S1 S2
Mapeamento do Modelo de Comunicação de CSP • CSP possui • Modelo de comunicação síncrono • Sincronização simples (2 processos em paralelo) • Multi-sincronização (3 ou mais processos em paralelo) • UML-RT possui • Comunicação síncrona e assíncrona
a.request(1) true Mapeamento do Modelo de Comunicação de CSP • Mensagens síncronas de UML-RT são suficientes para implementar sincronismo simples P = a!{1,2,3} → STOP Q = a?{1,2} → STOP P |{a}| Q Q P A semântica do operador de paralelismo foi atendida
a.request(1) a.request(1) true Mapeamento do Modelo de Comunicação de CSP • Mensagens síncronas de UML-RT não são suficientes para implementar multi-sincronismo de CSP P = a!{1,2,3} → STOP Q = a?{1,2} → STOP R = a?{2,3} → STOP P |{a}| Q |{a}| R Q P R A semântica do operador de paralelismo não foi atendida
a.rollback true a.request(1) a.request(1) Mapeamento do Modelo de Comunicação de CSP • Mensagens síncronas de UML-RT não são suficientes para implementar multi-sincronismo de CSP P = a!{1,2,3} → STOP Q = a?{1,2} → STOP R = a?{2,3} → STOP P |{a}| Q |{a}| R Q P R A semântica do operador de paralelismo foi atendida
a.commit a.request(2) a.request(2) true true a.commit Mapeamento do Modelo de Comunicação de CSP • Mensagens síncronas de UML-RT não são suficientes para implementar multi-sincronismo de CSP P = a!{1,2,3} → STOP Q = a?{1,2} → STOP R = a?{2,3} → STOP P |{a}| Q |{a}| R Q P R A semântica do operador de paralelismo foi atendida
Mapeamento do Modelo de Comunicação de CSP • Por se tratar de uma regra de comunicação entre portas, podemos representar a causalidade entre eventos através de protocolos de comunicação
Mapeamento do Modelo de Comunicação de CSP Q = a?x:{1,2} -> STOP Q a
Mapeamento de Processos • Operadores de CSP podem ser representados por cápsulas de controle, que contêm outras cápsulas • Ex: construa um modelo UML-RT a partir do código CSP abaixo channela P = a?m:{1,2} -> P Q = a?m:{2,3} -> Q Parallel = P [|{|a|}|] Q
Mapeamento de Processos SParallel S0 Sc a.commit / aP.commit!invoke(); aQ.commit!invoke(); a.request?m /; F T a.rollback/ aP.rollback!invoke(); aQ.rollback!invoke(); / a.agreement!reply(); locked boolean r = False; rP = ap.request(m).invoke(); rQ = aq.request(m).invoke(); if (rp == true and rq == true) { r = True; } else { if (rp == true) aP.rollback; if (rq == true) aQ.rollback; r = False; } return r; Parallel a : CSPMessageProtocol p : P aP : CSPMessageProtocol q : Q aQ : CSPMessageProtocol
Mapeamento de Processos • Em CSP, processos podem comportar-se como outros processos • P = Q • P = a -> (R[]W) • P = a -> P\{a} • Em UML-RT isto implicaria em cápsulas reaproveitarem ou serem substituídas por outras cápsulas • UML-RT não admite recursão mútua entre cápsulas P = a -> Q Q = b -> P
Mapeamento de Processos • A recursão mútua é resolvida por uma cápsula controladora, que contém as demais • As cápsulas de processo: • São sub-cápsulas opcionais da cápsula controladora • Contêm uma porta específica para informar novos comportamentos à cápsula controladora
Cápsula controladora deve: Receber as mensagens de dados enviadas pelo ambiente externo e repassá-las para as sub-cápsulas ativas. Receber as mensagens de novos comportamentos enviadas pelas sub-cápsulas ativas, e mudar sua configuração interna. Cápsula controladora interpreta o comportamento associado aos operadores de CSP P [|{|a|}|] Q P;Q STOP ... Mapeamento de Processos
Mapeamento daSemântica Comportamental P = a?x:{1,2} → R Q = a?x:{2,3}→ W R = a?x → P W = c?x→ Q SystemController = P [|{|a|}|] Q SystemController c : CSPMessageProtocol a : CSPMessageProtocol p : P a : CSPMessageProtocol aP : CSPMessageProtocol b : CSPBehaviorProtocol bP : CSPBehaviorProtocol q : Q a : CSPMessageProtocol aQ : CSPMessageProtocol b : CSPBehaviorProtocol bQ : CSPBehaviorProtocol r : R a : CSPMessageProtocol aR: CSPMessageProtocol b : CSPBehaviorProtocol bR : CSPBehaviorProtocol w : W c : CSPMessageProtocol cW : CSPMessageProtocol b : CSPBehaviorProtocol bW : CSPBehaviorProtocol
bP.term?N / removeCapsule(p); createCapsule(N); bQ.term?N / removeCapsule(q); createCapsule(N); Mapeamento daSemântica Comportamental SSystemController Sc a.request?x / if (pRef.status = active) aP.request(x).invoke(); if (qRef.status = active) aQ.request(x).invoke(); if (rRef.status = active) aR.request(x).invoke(); SystemController c : CSPMessageProtocol a : CSPMessageProtocol p : P a : CSPMessageProtocol aP : CSPMessageProtocol b : CSPBehaviorProtocol bP : CSPBehaviorProtocol q : Q a : CSPMessageProtocol aQ : CSPMessageProtocol b : CSPBehaviorProtocol bQ : CSPBehaviorProtocol P [|{|a|}|] Q
bW.term?N / removeCapsule(w); createCapsule(N); bR.term?N / removeCapsule(r); createCapsule(N); Mapeamento daSemântica Comportamental SSystemController Sc c.request?x / if (wRef.status = active) cW.request(x).invoke(); SystemController c : CSPMessageProtocol a : CSPMessageProtocol r : R a : CSPMessageProtocol cR: CSPMessageProtocol b : CSPBehaviorProtocol bR : CSPBehaviorProtocol w : W a : CSPMessageProtocol cW : CSPMessageProtocol b : CSPBehaviorProtocol bW : CSPBehaviorProtocol R [|{|a|}|] W
Mapeamento de CSP em UML-RT • Ferramenta para Geração automática de Modelos UML-RT • Cria modelos UML-RT no Rose RealTime • Expressões lógicas e funções não são traduzidas. É necessário codificá-las • Versão beta ...