150 likes | 263 Views
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)
E N D
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 Ambiente EventosA EventosB Processo1 EventosH Processo2 Ambiente Ambiente ... EventosC EventosG EventosF EventosD Processon EventosE Ambiente Alfabeto = Eventos
Exemplo Simples Caixa Automático 7 8 9 4 5 6 Terminal 1 2 3 Leitor Ótico X
Processos CaixaAutomatico Terminal Interação Ambiente (Cliente) Interação Interação LeitorOtico
Leitor: Modelagem Informal LeitorOtico • Aguarda um cartão ser inserido • Tenta decodificar dados do cartão • Se decodificação não foi bem-sucedida • Avisa ao Terminal • Volta ao passo 1 • Se decodificação foi bem-sucedida • Envia dados decodificados para Terminal • Volta ao passo 1
Leitor: Modelagem Formal LeitorOtico = cartao?dados AnalisaDados(dados) AnalisaDados(dados) = decodNOk LeitorOtico < isDec(dados) > decodOk EnviaCA(dados) EnviaCA(dados) = transf!dec(dados) LeitorOtico
Terminal: Modelagem Informal Terminal • Aguarda sinal do leitor ótico • Se o sinal for de decodificação bem-sucedida • Recebe informações do cartão decodificadas • Interage com o cliente • Volta ao passo 1 • Se o sinal for de decodificação mal-sucedida • Informa ao cliente que houve problema de leitura do cartão • 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 Processo Operadores a P P Q P Q P || Q P ||| Q P \ X P < b > Q Pré-fixo Escolha Externa Escolha Interna Paralelismo Interleaving Hiding Se Então Senão X 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 • Máquinas de Estados (StateCharts)