verificando propriedades de programas concorrentes em java

15
Verificando Propriedades de Programas Concorrentes em Java Sérgio Soares

Upload: ardith

Post on 23-Jan-2016

20 views

Category:

Documents


0 download

DESCRIPTION

Verificando Propriedades de Programas Concorrentes em Java. Sérgio Soares. Flavers - FLow Analysis for VERification of Systems. Sistemas concorrentes como um grafo de fluxo Análise de fluxo de dados. Flavers - FLow Analysis for VERification of Systems. Inicialmente implementado para Ada - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Verificando Propriedades  de Programas Concorrentes em Java

Verificando Propriedades de Programas Concorrentes em Java

Sérgio Soares

Page 2: Verificando Propriedades  de Programas Concorrentes em Java

Flavers - FLow Analysis for VERification of Systems

Sistemas concorrentes como um grafo de fluxo

Análise de fluxo de dados

Page 3: Verificando Propriedades  de Programas Concorrentes em Java

Flavers - FLow Analysis for VERification of Systems

Inicialmente implementado para Ada programas vistos como grafos de fluxo

de traces (TFG) componentes do programa vistos como

grafos de fluxo de controle (CFG) o TFG é a composição dos CFGs de cada

componente do sistema

Page 4: Verificando Propriedades  de Programas Concorrentes em Java

Criando CFGs

task body T1 isbegin p1; T2.E;end T1;

task body T2 isbegin p2; accept E; p3;end T2;

initialp2

E

finalp3

initialp1

Efinal

Page 5: Verificando Propriedades  de Programas Concorrentes em Java

Criando o TGF

initial

p2p1

E

final

p3

Fluxo de execução

MIP (interleaving)rendezvous

Page 6: Verificando Propriedades  de Programas Concorrentes em Java

Verificando propriedades

Propriedades descritas por FSA

1 2

3

p1 p3

p1p3 p1,p3

p1,p3

4

Page 7: Verificando Propriedades  de Programas Concorrentes em Java

Uma propriedade se verifica para um programa se: a projeção da linguagem do TFG no

alfabeto da propriedade está contida na linguagem da propriedade

Data Flow analysisverificar incrementalmente que autômatos

verificam propriedades de cada nó de execução do TFG.

Verificando propriedades

Page 8: Verificando Propriedades  de Programas Concorrentes em Java

Exemplo de trace inválido:

initial, p1, E, final

initial

p2p1

E

final

p3

Traces inválidos (infeasible paths )

Page 9: Verificando Propriedades  de Programas Concorrentes em Java

Definição de FSAs que modelem restrições semânticas na execução do programa, não contempladas pelo TFG remover infeasible paths (traces não

executáveis)

Removendo traces inválidos

Page 10: Verificando Propriedades  de Programas Concorrentes em Java

Feasibility constraint

1 3

v

p2 p3

E,p2E,p3 E,p2,p3

E,p2,p3

42E

p2,p3

Page 11: Verificando Propriedades  de Programas Concorrentes em Java

Flavers para Java

Modelos de comunicacao baseados em monitores (Java) rendezvous (Ada e CSP)

Feasibility constraints representam interações entre threads interações entre componentes (threads)

não estão representadas no TFG como em ADA

Page 12: Verificando Propriedades  de Programas Concorrentes em Java

Um CFG para cada thread Compor os CFGs com os possíveis

interleavings formando o TFGlabels na forma:

(object, method, thread)

(*, method, thread)

(object, *, thread)

(object, method, *)

Criando TFGs para programas em Java

Page 13: Verificando Propriedades  de Programas Concorrentes em Java

Criando TFGs para programas em Java

Page 14: Verificando Propriedades  de Programas Concorrentes em Java

Exemplo de Constraint

Page 15: Verificando Propriedades  de Programas Concorrentes em Java

Referências

Gleb Naumovich, George S. Avrunin, and Lori A. Clarke. Data Flow Analysis for Checking Properties of Concorrent Java Programs. In 21st International Conference on Software Engineering, pages 399-410. ACM press Los Angeles, California, USA, May 1999.