A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe.

Apresentações semelhantes


Apresentação em tema: "Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe."— Transcrição da apresentação:

1 Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe

2 Objetivos zAproximar especificações de programas ygerar código automaticamente a partir de especificações

3 Motivação zObject-Z ylinguagem de especificação de alto nível zCSP yoferece poderosos suportes formais para projeto de sistemas distribuídos, logo concorrentes zJava ydifundida linguagem de implementação que da suporte à distribuição e concorrência.

4 Concorrência em Java zMonitores ycomandos synchronized wait notify, notifyAll yqualificador xsynchronized

5 class Conta {... synchronized void credito(double v) { saldo = saldo + v; notifyAll(); } synchronized void debito(double v) { while (saldo < v) wait(); saldo = saldo - v; } Concorrência em Java

6 CSP zInteração e comunicação entre processos por meio de eventos zDescrição da ordem de processamento ysincronização total, parcial e interleaving zAutomatic model checking yFDR zEspecificação formal de processos concorrentes e/ou distribuídos

7 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) CSP

8 Jass - Java with assertions zAssertions descrevem propriedades que devem ser verdadeiras em determinados pontos da execução do programa yEspecificação formal como parte da linguagem yEspecificação documentada no código yPré e pós condições, invariantes e variantes...

9 class Conta {... public void debito(double v) { /** require saldo >= v; **/ //... /** ensure changeonly{saldo}; Old.saldo == saldo + v; **/ } Jass - Java with assertions

10 Z Banco contas: NUMERO VALOR Credito Banco c?: NUMERO v?: VALOR c? dom contas contas = contas {c? ((contas c?)+v?) }

11 Especificação zCSP-OZ / CSP-Z yZ xdados, alterações no estado yCSP xcomunicação entre processos/sistemas, concorrência, ordem de execução

12 CSP-OZ

13

14 TTT Distribuído

15 CSP-OZ Jass zCSP-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) yO corpo dos métodos deve ser implementado manualmente

16 CSP-OZ Jass

17 CSP-OZ-Jass

18 zNão garante corretude (matemática) da implementação yimplementação não é automática CSP-OZ-Jass-Java

19 Limitações zNúmero limitado de canais de comunicação yNão descreve sistemas com estruturas de comunicação dinâmicas zDeve 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

20 Trabalhos futuros zUma extensão de UML ylinguagem de predicados como Object-Z ysemântica formal precisa substituindo CSP- OZ yUma ligação mais próxima de especificações em UML com programas yPode solucionar a limitação de CSP-OZ em não lidar com estruturas de comunicação dinâmicas zTornar Jass parte da linguagem Java oficial

21 Referências zJass: Java with assertions, May oldenburg.de/~jass. zA. W. Roscoe. The Theory and Practice of Concurrency. Prentice-Hall, zClemens Fischer. Software Development with Object-Z, CSP and Java: A Pragmatic Link from Formal Specifications to Programs. zDoug Lea. Concurrent Programming in Java.


Carregar ppt "Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe."

Apresentações semelhantes


Anúncios Google