Sistemas Concorrentes com CSP e Java

Slides:



Advertisements
Apresentações semelhantes
UML Visões – Parte 2.
Advertisements

Prentice Hall Engenharia de Software: Teoria e Prática Shari Lawrence Pfleeger Capítulo 8 Defeitos e falhas de software Especificação errada: pode não.
O Essencial sobre Linguagens de Programação Luís Caires Maio 2005.
Introdução a UML.
Tópicos em Engenharia de Software II
Sistemas Distribuídos
Integração de modelos formais e semi- formais: o caso de UML e VDM++
Métodos Programação II 1 Métodos de Programação II (Mestrado Integrado em Engenharia de Comunicações) 1º Ano, 2º Semestre Elementos de Classe, class wrappers.
dbCheck! uma ferramenta para teste de banco de dados
Middleware e Sistemas Distribuídos
Monitores.
Locks.
Concorrência em Java Threads em Java.
Concorrência em Java Threads em Java.
JAVA Linguagem Ambiente de Desenvolvimento
Matemática Discreta I BCC101
Desenvolvimento de Sistemas Orientados a Aspectos
Detalhes sobre o curso
DI UFPE Semântica de Java Java and the Java Virtual Machine - Definition, Verification, Validation Robert Stark, Joachim Schmid, and Egon Borger Wolfram.
Alexandre Mota/Augusto Sampaio {acm,
Jass - Java with assertions Sérgio Soares. zAssertions descrevem propriedades que devem ser verdadeiras em determinados pontos da execução do programa.
Verificando Propriedades de Programas Concorrentes em Java
CSP: Semântica e Refinamento
Cristiano Soares Rafael di Lego Roberto Nemirovsky Thiago Nascimento
Introdução à Programação Orientada a Objetos com Java Paulo Borba Centro de Informática Universidade Federal de Pernambuco Conceitos Básicos de Concorrência.
Professor: Márcio Amador
Paulo Borba Centro de Informática Universidade Federal de Pernambuco
Matemática Discreta I BCC101 Introdução. 2 Bibliografia, Slides, Exercícios etc Bibliografia: Richard Hammack: Book of Proof Velemann: How to Prove it.
CSP-Z Disciplina: Especificação de Sistemas Distribuídos Mestrado em Ciências da Computação Aleciano Jr. Leonilson Barbosa
Iteração – Capítulo 5 Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Integrantes: Alex Motta Carlos Nascimento Paulo Maia.
Transações Concorrentes
Paulo Borba e Augusto Sampaio Centro de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos.
Métodos Formais.
Removing Unnecessary Synchronization in Java Sérgio Soares Gente.
Programação Lógica com Prolog
Desenvolvimento de Jogos e Entretenimento Digital
Refinamento Motivação e Objetivos –Tornar especificações mais concretas (mais próximas de uma implementação) que as desenvolvidas inicialmente –Aumentar.
Concorrência em LI2 Monitor e Rendezvous Projeto de PLP – 2 a fase Daniel Pereira – {dtvp} Petrus Bastos – {prb} Rafael Ribeiro – {rar}
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Semântica de Linguagens de Programação
Sistemas Distribuídos Aula 05 – Programação Multithread/Paralela
Linguagem de Modelagem Unificada
Gerência de Grupos de Semáforos de Trânsito Especificação de Sistemas Distribuídos Recife, 12 de dezembro de 2007 Daniel Thiago V. Pereira
Copyright 2000, Departamento de Informática, UFPE. Todos os direitos reservados sob a legislação em vigor. Orientação a Objetos e Java.
JR: Flexible Distributed Programming in an Extended Java Elmário Gomes Dutra Jr. Gustavo Romano.
Métodos e Classes para Sincronização no JDK 5.0 Vitor Hugo Becker
Concorrência em LF1 Paradigmas de Linguagens de Programação 20 de junho de 2006 Aline Timóteo Carlos Rodrigues Flávia Falcão Tiago Rolim.
Verificação de Programas O projeto Bandera José Amancio.
LightWeight Extraction of Object Models from Bytecode.
E-Commerce, Systems Performance Evaluation, and Experimental Development Laboratory A Model Checking Methodology for E-commerce Systems Adriano Machado.
Métodos Formais Juan Andrés Mussini.
1 Hiding, Renomeação, Composição Seqüencial e Refinamento Alexandre Mota
Paralelismo Alexandre Mota Paralelismo Representam a execução paralela de dois ou mais processos: fluxos de controles independentes.
Estudo de caso: Insertion Sort Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Capítulo 10.
Semântica em Linguagens de Programação Semântica Denotacional
Desenvolvimento Progressivo de Programas Concorrentes Orientados a Objetos Aluno: Sérgio Soares Orientador: Paulo Borba.
Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos Parte 2.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Infra-Estrutura de Comunicação (IF678) Aula Prática 03 – CIn/UFPE Davi Duarte Cynthia Raphaella Ivan França Jéssica Barbalho Larissa Paz Paulo Fernando.
OCLE Object Constraint Language Environment Fábio Moura CIn-UFPE.
Sistemas Distribuídos Prof. Marcus Rodrigues
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Padrões de Projeto Aula 9 – Padrão Adapter.
Abstração de Processos Infinitos em CSP Z : Tratando Comunicação e Instabilidade Aluno: Adalberto Cajueiro de Farias Orientador: Alexandre Mota Co-Orientador:
Especificação de Sistemas Distribuídos Alexandre Mota/Augusto Sampaio {acm,
Uma Extensão do Fluxo de Análise e Projeto do RUP com suporte a Desenvolvimento Baseado em Componentes Eduardo Almeida
CURSO JAVA BÁSICO Módulo 9 – slide 1 Módulo 10 Threads.
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Transcrição da apresentação:

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

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

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.

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

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;

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

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

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?  dom contas contas’ = contas  {c?  ((contas c?)+v?) }

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

CSP-OZ

CSP-OZ

TTT Distribuído

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

CSP-OZ → Jass

CSP-OZ-Jass

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

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

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

Referências Jass: 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.