170 likes | 279 Views
Especificação de Sistemas Distribuídos. Parte 2. Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco. Detalhes sobre o curso. http://www.di.ufpe.br/~phmb/CSPZ/. Revisando a motivação.
E N D
Especificação de Sistemas Distribuídos Parte 2 Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco
Detalhes sobre o curso • http://www.di.ufpe.br/~phmb/CSPZ/
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 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 Especificação Formal
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
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)
Especificação • 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 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 init Relogio Relogio’ min: Z min’ = 0 tictac cuco D Relogio D Relogio min < 60 min’ = min + 1 min = 60 min’ = 0
init State State’ min: N min’ = 0 com-tictac com-cuco D State D State min < 60 min’ = min + 1 min = 60 min’ = 0 Especificação em CSP-Z • Combina controle (CSP) com dados (Z) spec Relogio channel tictac, cuco: [] main = tictac -> main[] cuco -> main end_spec Relogio
Especificação • 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
Implementação class Conta { private double saldo; private Stringnumero; 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;} }
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