sistemas concorrentes com csp e java sérgio soares gente
TRANSCRIPT
![Page 1: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/1.jpg)
Sistemas Concorrentes com CSP e Java
Sérgio Soares
GENTe
![Page 2: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/2.jpg)
Objetivos
Aproximar especificações de programas gerar código automaticamente a partir
de especificações
![Page 3: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/3.jpg)
Motivação
Object-Z linguagem de especificação de alto nível
CSP oferece poderosos suportes formais para
projeto de sistemas distribuídos, logo concorrentes
Java difundida linguagem de implementação que
da suporte à distribuição e concorrência.
![Page 4: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/4.jpg)
Concorrência em Java
Monitores comandos
synchronizedwaitnotify, notifyAll
qualificadorsynchronized
![Page 5: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/5.jpg)
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
![Page 6: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/6.jpg)
CSP
Interação e comunicação entre processos por meio de eventos
Descrição da ordem de processamento sincronização total, parcial e interleaving
Automatic model checking FDR
Especificação formal de processos concorrentes e/ou distribuídos
![Page 7: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/7.jpg)
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
![Page 8: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/8.jpg)
Jass - Java with assertions
Assertions descrevem propriedades que devem ser verdadeiras em determinados pontos da execução do programa Especificação formal como parte da
linguagem Especificação documentada no código Pré e pós condições, invariantes e
variantes...
![Page 9: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/9.jpg)
class Conta { ...
public void debito(double v) { /** require saldo >= v; **/ // ... /** ensure changeonly{saldo}; Old.saldo == saldo + v; **/ }}
Jass - Java with assertions
![Page 10: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/10.jpg)
Z
Bancocontas: NUMERO VALOR
CreditoBancoc?: NUMEROv?: VALORc? dom contascontas’ = contas {c? ((contas c?)+v?) }
![Page 11: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/11.jpg)
Especificação
CSP-OZ / CSP-Z Z
dados, alterações no estado
CSPcomunicação entre processos/sistemas,
concorrência, ordem de execução
![Page 12: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/12.jpg)
CSP-OZ
![Page 13: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/13.jpg)
CSP-OZ
![Page 14: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/14.jpg)
TTT Distribuído
![Page 15: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/15.jpg)
CSP-OZ → Jass
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) O corpo dos métodos deve ser
implementado manualmente
![Page 16: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/16.jpg)
CSP-OZ → Jass
![Page 17: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/17.jpg)
CSP-OZ-Jass
![Page 18: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/18.jpg)
Não garante corretude (matemática) da implementação implementação não é automática
CSP-OZ-Jass-Java
![Page 19: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/19.jpg)
Limitações
Número limitado de canais de comunicação Não descreve sistemas com estruturas de
comunicação dinâmicasDeve trabalhar com fully synchronized
threads (dois threads não executam um mesmo método ao mesmo tempo) o mecanismo de comunicação de CSP é
síncrono
![Page 20: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/20.jpg)
Trabalhos futurosUma extensão de UML
linguagem de predicados como Object-Z semântica formal precisa substituindo CSP-OZ Uma ligação mais próxima de especificações
em UML com programas Pode solucionar a limitação de CSP-OZ em não
lidar com estruturas de comunicação dinâmicas
Tornar Jass parte da linguagem Java oficial
![Page 21: Sistemas Concorrentes com CSP e Java Sérgio Soares GENTe](https://reader035.vdocuments.net/reader035/viewer/2022062318/552fc0f8497959413d8b48cf/html5/thumbnails/21.jpg)
ReferênciasJass: Java with assertions, May 1999.
http://semantik.informatik.uni-oldenburg.de/~jass.
A. W. Roscoe. The Theory and Practice of Concurrency. Prentice-Hall, 1997.
Clemens Fischer. Software Development with Object-Z, CSP and Java: A Pragmatic Link from Formal Specifications to Programs.
Doug Lea. Concurrent Programming in Java.