Introdução a CSP
Alexandre Mota
(acm@cin.ufpe.br)
Objetivos
Apresentar a linguagem CSP
Destacar os principais elementos de CSP
Apresentar correspondência entre fluxo de eventos e CSP através de exemplo
Possíveis ligações entre CSP e UML
CSP
Hoare (1985) e Roscoe (1998)
Linguagem formal para modelar aspectos comportamentais
Estruturas de dados não muito abstratas
Troca de informações (interação) se dá via comunicação
Modelo de comunicação é síncrono
Elementos de CSP
Processo1 Processo2
Processon
...
EventosB
EventosD EventosF
EventosH Ambiente
Ambiente
Ambiente AmbienteEventosC EventosG
EventosE EventosA
Alfabeto =
EventosExemplo Simples
7 8 9
4 5 6
1 2 3
X Leitor Ótico
Caixa Automático
Terminal
Processos
Terminal
LeitorOtico
Interação CaixaAutomatico
Interação
Interação
Ambiente (Cliente)
Leitor: Modelagem Informal
LeitorOtico
1. Aguarda um cartão ser inserido 2. Tenta decodificar dados do cartão
3. Se decodificação não foi bem-sucedida 1. Avisa ao Terminal
2. Volta ao passo 1
4. Se decodificação foi bem-sucedida
1. Envia dados decodificados para Terminal 2. Volta ao passo 1
Leitor: Modelagem Formal
LeitorOtico = cartao?dados AnalisaDados(dados)
decodNOk LeitorOtico
< isDec(dados) > decodOk EnviaCA(dados) AnalisaDados(dados) =
EnviaCA(dados) = transf!dec(dados) LeitorOtico
Terminal: Modelagem Informal
Terminal
1. Aguarda sinal do leitor ótico
2. Se o sinal for de decodificação bem-sucedida 1. Recebe informações do cartão decodificadas 2. Interage com o cliente
3. Volta ao passo 1
3. Se o sinal for de decodificação mal-sucedida 1. Informa ao cliente que houve problema de
leitura do cartão 2. Volta ao passo 1
(Sub-Fluxo)
Terminal: Modelagem Formal
Terminal = decodOk transf?infoC Sistema(info)
decodNOk ProbLeitura
Sistema(info) = ...
ProbLeitura = tela!Leitura_Invalida._Favor_Repetir Terminal
Comportamento Interno
Sistema(info) = saque SAQUE(info)
transferencia TRANSF(info) ...
outros OUTROS(info) SAQUE(info) = cc TRANSAC(info, CC)
poup TRANSAC(info, P) ...
TRANSAC(info, op) = ... senha?s codigo?c (central!info!s!c
(ok ... nOk ...) )
Combinando as Partes ...
CaixaAutomatico = Terminal || LeitorOtico I
Onde I = {decodOk, decodNOk, transf}
CaixaAutomatico = ( Terminal || LeitorOtico ) \ I I
Principais Operadores de CSP
a P P Q P Q P || Q
P ||| Q P \ X
P < b > Q X
Processo Operadores Pré-fixo
Escolha Externa Escolha Interna Paralelismo
Interleaving Hiding
Se Então Senão
Nota: Alguns dos operadores acima possuem versões indexadas
Analisando CSP
Uma das vantagens da modelagem em CSP é obter análise automática
Existem duas abordagens para estudar um processo:
Propriedades padrão (deadlock, livelock, não- determinismo)
Refinamento entre processos
Oferecer pelo menos os mesmos serviços
Falhar menos
Divergir menos
CSP e UML
CSP poderia ser usada para representar:
Fluxo de Eventos em Casos de Uso
Diagramas de Interação
Diagramas de Atividade