GENTe Sistemas Concorrentes com CSP e Java Srgio

  • Slides: 21
Download presentation
GENTe Sistemas Concorrentes com CSP e Java Sérgio Soares

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

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

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 z. Monitores ycomandos xsynchronized xwait xnotify, notify. All yqualificador xsynchronized

Concorrência em Java class Conta {. . . synchronized void credito(double v) { saldo

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

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

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

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)

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?

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

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

CSP-OZ

CSP-OZ

TTT Distribuído

TTT Distribuído

CSP-OZ → Jass z. CSP-OZ deve ter tipos de dados compatíveis com os de

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

CSP-OZ-Jass

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

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

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

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.

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.