GENTe Sistemas Concorrentes com CSP e Java Srgio






![CSP Conta(n, s) = credito. n? v -> Conta(n, s+v) [] debito. n? v CSP Conta(n, s) = credito. n? v -> Conta(n, s+v) [] debito. n? v](https://slidetodoc.com/presentation_image_h/18fb88d65bb88382650183db248a4232/image-7.jpg)














- Slides: 21
GENTe Sistemas Concorrentes com CSP e Java Sérgio Soares
Objetivos z. Aproximar especificações de programas ygerar código automaticamente a partir de especificações
Motivação z. Object-Z ylinguagem de especificação de alto nível z. CSP yoferece poderosos suportes formais para projeto de sistemas distribuídos, logo concorrentes z. Java ydifundida linguagem de implementação que da suporte à distribuição e concorrência.
Concorrência em Java z. Monitores ycomandos xsynchronized xwait xnotify, notify. All yqualificador xsynchronized
Concorrência em Java class Conta {. . . synchronized void credito(double v) { saldo = saldo + v; notify. All(); } synchronized void debito(double v) { while (saldo < v) wait(); saldo = saldo - v; } }
CSP z. Interação e comunicação entre processos por meio de eventos z. Descrição da ordem de processamento ysincronização total, parcial e interleaving z. Automatic model checking y. FDR z. Especificação formal de processos concorrentes e/ou distribuídos
CSP Conta(n, s) = credito. n? v -> Conta(n, s+v) [] debito. n? v -> if(s > v) then Conta(n, s-v) else Conta(n, 0) [] saldo. n!s -> Conta(n, s) Banco = Conta(1, 1000) ||| Conta(2, 500)
Jass - Java with assertions z. Assertions descrevem propriedades que devem ser verdadeiras em determinados pontos da execução do programa y. Especificação formal como parte da linguagem y. Especificação documentada no código y. Pré e pós condições, invariantes e variantes. . .
Jass - Java with assertions class Conta {. . . public void debito(double v) { /** require saldo >= v; **/ //. . . /** ensure changeonly{saldo}; Old. saldo == saldo + v; **/ } }
Z Banco contas: NUMERO VALOR Credito Banco c? : NUMERO v? : VALOR c? dom contas’ = contas {c? ((contas c? )+v? ) }
Especificação z. CSP-OZ / CSP-Z y. Z xdados, alterações no estado y. CSP xcomunicação entre processos/sistemas, concorrência, ordem de execução
CSP-OZ
CSP-OZ
TTT Distribuído
CSP-OZ → Jass z. CSP-OZ deve ter tipos de dados compatíveis com os de Java para automatizar a geração de código (assertions e assinatura dos métodos) y. O corpo dos métodos deve ser implementado manualmente
CSP-OZ → Jass
CSP-OZ-Jass
CSP-OZ-Jass-Java z. Não garante corretude (matemática) da implementação yimplementação não é automática
Limitações z. Número limitado de canais de comunicação y. Não descreve sistemas com estruturas de comunicação dinâmicas z. Deve trabalhar com fully synchronized threads (dois threads não executam um mesmo método ao mesmo tempo) yo mecanismo de comunicação de CSP é síncrono
Trabalhos futuros z. Uma extensão de UML ylinguagem de predicados como Object-Z ysemântica formal precisa substituindo CSPOZ y. Uma ligação mais próxima de especificações em UML com programas y. Pode solucionar a limitação de CSP-OZ em não lidar com estruturas de comunicação dinâmicas z. Tornar Jass parte da linguagem Java
Referências z. Jass: Java with assertions, May 1999. http: //semantik. informatik. unioldenburg. de/~jass. z. A. W. Roscoe. Theory and Practice of Concurrency. Prentice-Hall, 1997. z. Clemens Fischer. Software Development with Object-Z, CSP and Java: A Pragmatic Link from Formal Specifications to Programs. z. Doug Lea. Concurrent Programming in Java.