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

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

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

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

Sistemas Concorrentes com CSP e Java

Sérgio Soares

GENTe

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

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.

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.

Concorrência em Java

Monitores comandos

synchronizedwaitnotify, notifyAll

qualificadorsynchronized

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

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.

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.

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.

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.

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.

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.

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.

CSP-OZ

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

CSP-OZ

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

TTT Distribuído

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

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.

CSP-OZ → Jass

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

CSP-OZ-Jass

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

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.

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.

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.

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.