Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco
description
Transcript of Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco
Paulo Borba e Augusto Sampaio
Departamento de Informática
Universidade Federal de Pernambuco
Especificação de Sistemas Distribuídos
Parte 2
• http://www.di.ufpe.br/~phmb/CSPZ/
Detalhes sobre o curso
Revisando a motivação
• A modelagem de aplicações reais pode exigir o uso de vários paradigmas/linguagens/formalismos– Exemplo: sistemas embarcados
• “Linking Theories and Tools” é uma tendência – Convergência e complementaridade de abordagens
• Verificação de modelos (model-checking)– verificação totalmente automática é largamente aceita,
na prática, pela indústria
Contexto e escopo
• Uma modelagem pode incluir vários aspectos ortogonais:– controle (possivelmente envolvendo concorrência)
– dados
– tempo real
– probabilidade
• O curso aborda controle (CSP), dados (Z) e a integração destes (CSP-Z)
• Z• Especificação dos
aspectos sequencias• Quais são as
operações e o que elas fazem?
• Implementação detalha como a operação é realizada
Especificação Formal• CSP• Especificação dos
aspectos concorrentes• Quando as operações
podem ser executadas e em que ordem?
• Implementação garante que a ordem de execução é satisfeita
Integação (CSP-Z)
• Extensão conservativa de CSP e (parcial) de Z– sintaxe
– semântica
– refinamento
• Ferramentas– Z-Eves
• verificação sintática e prova de propriedades e refinamento da parte em Z
– FDR• com extensão da estratégia de verificação para CSP-Z
• Uma especificação pode ser vista como uma classe, com atributos (componentes de estado) e métodos (operações) – Z é Baseada em teoria de conjuntos e lógica de
primeira ordem (cálculo de predicados)– Modelos (tipos) como conjuntos, relações, funções
e seqüências permitem capturar entidades de forma abstrata e concisa
– A descrição de operações usando predicados permite foco nas propriedades
– Mas não há como capturar aspectos de controle (ordem de execução das operações)
Z
• Qual o fluxo de controle (em que ordem as operações são executadas)? CSP
• Qual o estado (atributos e tipos) e qual o efeito de cada operação no estado? Z
Especificação
Relógio
tictac()cuco()
Especificação em CSP
• A cada minuto, o relógio faz tictac e, a cada 60 minutos, o cuco aparece
Relogio (60) = cuco -> Relogio (0)
Relogio (min) = tictac -> Relogio (min + 1)
• Mas nem sempre a estrutura de dados é tão trivial assim e CSP dispõe de tipos de dados muito restritos
Especificação em CSP
• Uma possível estratégia é especificar apenas a parte de controle em CSP
Relogio = tictac -> Relogio
[] cuco -> Relogio
• Mas como escolher entre os eventos tictac e cuco baseado no valor da hora (minutos)?
Implementação
• A estrutura de dados do exemplo pode ser implementada, por exemplo, como uma classe em Java ...
class Relogio { int min; void tictac() {if (min < 60) min = min + 1;} void cuco() {if (min == 60) min = 0;} Relogio() {min = 0};}
Especificação em Z
• ... Ou especificada em uma linguagem como Z
Relogiomin: Z
tictacRelogio
min < 60min’ = min + 1
cucoRelogio
min = 60min’ = 0
initRelogio’
min’ = 0
Especificação em CSP-Z
• Combina controle (CSP) com dados (Z)
com-tictacState
min < 60min’ = min + 1
com-cucoState
min = 60min’ = 0
initState’
min’ = 0
Statemin: N
spec Relogio channel tictac, cuco: [] main = tictac -> main [] cuco -> main
end_spec Relogio
• Qual o fluxo de controle (em que ordem as operações são executadas)? CSP
• Qual o estado (atributos e tipos) e qual o efeito de cada operação no estado? Z
Especificação
Conta
credito(valor) : voiddebito(valor) : voidsaldo() : doublenumero() : String
class Conta { private double saldo; private String numero; Conta (String n) {numero = n; saldo = 0;} void credito(double valor) {saldo = saldo + valor;} void debito(double valor) {saldo = saldo - valor;} String numero() {return numero;} double saldo() {return saldo;}}
Implementação
Exercício
• Especifique Conta primeiro em CSP, considerando tanto controle quanto dado
• Em seguida, ignore a parte de dados e refaça a especificação em CSP
• A partir da implementação dada em Java, especifique a parte de dados em Z
• Combine as duas partes em uma especificação CSP-Z
Bibliografia
Todas disponíveis na WEB, veja:
http://www.di.ufpe.br/~phmb/CSPZ/Referencias.htm
• The Z Notation, A Reference Manual, J. M. Spivey, Prentice Hall
• Using Standard Z: Specification, Refinement and Proof, J. Woodcock & J. Davies, Prentice Hall
• The Z/Eves Reference Manual, M. Saaltink, Ora Canada
• Combining CSP and Z, C. Fischer, University of Oldenburg
• Model-Checking CSP-Z, A. Mota & A. Sampaio
• homepage do curso da graduação
– http://www.di.ufpe.br/~acas/mf