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

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

Sistemas Concorrentes com CSP e Java

Apresentações semelhantes


Apresentação em tema: "Sistemas Concorrentes com CSP e Java"— Transcrição da apresentação:

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

2 Objetivos Aproximar especificações de programas
gerar código automaticamente a partir de especificações

3 Motivação Object-Z CSP Java linguagem de especificação de alto nível
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.

4 Concorrência em Java Monitores comandos qualificador synchronized wait
notify, notifyAll qualificador

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

6 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

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

8 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...

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

10 Z Banco contas: NUMERO  VALOR Credito Banco c?: NUMERO v?: VALOR
c?  dom contas contas’ = contas  {c?  ((contas c?)+v?) }

11 Especificação CSP-OZ / CSP-Z Z CSP dados, alterações no estado
comunicação entre processos/sistemas, concorrência, ordem de execução

12 CSP-OZ

13 CSP-OZ

14 TTT Distribuído

15 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

16 CSP-OZ → Jass

17 CSP-OZ-Jass

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

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

20 Trabalhos futuros Uma 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

21 Referências Jass: Java with assertions, May 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.


Carregar ppt "Sistemas Concorrentes com CSP e Java"

Apresentações semelhantes


Anúncios Google