Upload
others
View
1
Download
0
Embed Size (px)
Citation preview
Mapeamento de CSP em UML-RT
Página 1
Características de UML-RT
• Cápsulas– Classes ativas e independentes– Comunicam-se entre si 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)
q : Q
r : R
P
a.in /createCapsule(r);
a.in /removeCapsule(r);
a
State of P
Página 2
Características de UML-RT
• Cápsulas Fixas x Cápsulas Opcionais
q : QP
a.in /createInstance(r);
a.in /removeInstance(r);
a
r : R
• Cápsulas opcionais ativas comportam-se exatamente como cápsulas fixas• Cápsulas opcionais inativas são apenas apontadores vazios
Página 3
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)
Página 4
Características de UML-RT• Mensagens
– Podem ser:• Assíncronas
• Síncronas
port.signal(data).send();port.signal(data).send(Priority.High);
port.signalIn(data).invoke();
port.signalOut(data).reply();
(como alguns eventos CSP)
Página 5
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
Página 6
Mapeamento de CSP em UML-RT
datatype X : x1 | x2
P(s) = a?x → P(f(x))
f(x) = x + 1
Datatype
X
$ x1 : X$ x2 : X
Página 7
Mapeamento de Tipos de Dados
T
$ v0 : T$ v1 : T
datatype T = v0 | .. | vn
T
x : T1y : T2
getX() : T1getY() : T2
datatype T = T1.T2
Página 8
Mapeamento de Processos
• Processos são representados como cápsulas• As transições da máquina de estados refletem os eventos do processo• Comunicação entre cápsulas deve atender o modelo de comunicação
de CSP
a1
a2P
P = a1?x → a2!x → StopSP
S1
S2
a1.in?x /a2.out!x;
Página 9
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)
– Causalidade entre eventos
• UML-RT possui– Comunicação síncrona e assíncrona– Semântica run-to-completion (um evento só ocorre após a
conclusão do anterior)
Página 10
Mapeamento do Modelo de Comunicação de CSP
• Mensagens síncronas de UML-RT são suficientes para implementar sincronismo simples
Qa.request(1)
true
P = a!{1,2,3} → STOPQ = a?{1,2} → STOPP |{a}| Q
P
A semântica do operador de paralelismo foi atendida
Página 11
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
Q
R
a.request(1)
a.request(1)
true
P = a!{1,2,3} → STOP
Q = a?{1,2} → STOPR = a?{2,3} → STOPP |{a}| Q |{a}| R
P
A semântica do operador de paralelismo não foi atendida
Página 12
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
Qa.request(1)
a.request(1)
true
a.rollback
P
P = a!{1,2,3} → STOP
Q = a?{1,2} → STOPR = a?{2,3} → STOPP |{a}| Q |{a}| R
R
A semântica do operador de paralelismo foi atendida
Página 13
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
Q
R
a.request(2)
a.request(2)
true
true
a.commit
a.commit
A semântica do operador de paralelismo foi atendida
P
P = a!{1,2,3} → STOP
Q = a?{1,2} → STOPR = a?{2,3} → STOPP |{a}| Q |{a}| R
Página 14
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
Página 15
Mapeamento do Modelo de Comunicação de CSP
Q = a?x:{1,2} -> STOP
Qa
Página 16
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
channel a
P = a?m:{1,2} -> P
Q = a?m:{2,3} -> Q
Parallel = P [|{|a|}|] Q
Página 17
Mapeamento de ProcessosSParallel
locked
S0
a.request?m /;
/ a.agreement!reply();
Sc
F T
a.commit /aP.commit!invoke();aQ.commit!invoke();
a.rollback/aP.rollback!invoke();aQ.rollback!invoke();
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
aP : CSPMessageProtocol
p : P
q : Q
a : CSPMessageProtocol
aQ : CSPMessageProtocol
Página 18
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ápsulasP = a -> QQ = b -> P
Página 19
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 de cápsula controladora– Contém uma porta específica para informar novos
comportamentos à cápsula controladora
Página 20
Mapeamento de Processos• 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
Página 21
Mapeamento daSemântica Comportamental
P = a?x:{1,2} → RQ = a?x:{2,3} → WR = a?x → PW = c?x → QSystemController = P [|{|a|}|] Q
SystemController
aP : CSPMessageProtocol
a : CSPMessageProtocol
p : P
a : CSPMessageProtocol
bP : CSPBehaviorProtocol
b : CSPBehaviorProtocol
q : Q
bQ : CSPBehaviorProtocol
b : CSPBehaviorProtocol
aQ : CSPMessageProtocol
a : CSPMessageProtocol
c : CSPMessageProtocol
aR: CSPMessageProtocol
a : CSPMessageProtocol
r : R
bR : CSPBehaviorProtocol
b : CSPBehaviorProtocol
w : W
bW : CSPBehaviorProtocol
b : CSPBehaviorProtocol
cW : CSPMessageProtocol
c : CSPMessageProtocol
Página 22
Mapeamento daSemântica Comportamental
SSystemController
Sc
bP.term?N / removeCapsule(q);createCapsule(N);
bQ.term?N / removeCapsule(p);createCapsule(N);
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
aP : CSPMessageProtocol
a : CSPMessageProtocol
p : Pa : CSPMessageProtocol
bP : CSPBehaviorProtocol
b : CSPBehaviorProtocol
q : Q
bQ : CSPBehaviorProtocol
b : CSPBehaviorProtocol
aQ : CSPMessageProtocol
a : CSPMessageProtocol
P [|{|a|}|] Q
c : CSPMessageProtocol
Página 23
Mapeamento daSemântica Comportamental
SSystemController
Sc
bW.term?N / removeCapsule(w);createCapsule(N);
bR.term?N / removeCapsule(r);createCapsule(N);
c.request?x / if (wRef.status = active) cW.request(x).invoke();
SystemController
cR: CSPMessageProtocol
a : CSPMessageProtocol
r : Ra : CSPMessageProtocol
bR : CSPBehaviorProtocol
b : CSPBehaviorProtocol
w : W
bW : CSPBehaviorProtocol
b : CSPBehaviorProtocol
cW : CSPMessageProtocol
a : CSPMessageProtocol
R [|{|a|}|] W
c : CSPMessageProtocol
Página 24
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– Disponível a partir da próxima aula