![Page 1: Verificando Propriedades de Programas Concorrentes em Java](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/1.jpg)
Verificando Propriedades de Programas Concorrentes em Java
Sérgio Soares
![Page 2: Verificando Propriedades de Programas Concorrentes em Java](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/3.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/4.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/5.jpg)
Criando o TGF
initial
p2p1
E
final
p3
Fluxo de execução
MIP (interleaving)rendezvous
![Page 6: Verificando Propriedades de Programas Concorrentes em Java](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/13.jpg)
Criando TFGs para programas em Java
![Page 14: Verificando Propriedades de Programas Concorrentes em Java](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/14.jpg)
Exemplo de Constraint
![Page 15: Verificando Propriedades de Programas Concorrentes em Java](https://reader035.vdocuments.com.br/reader035/viewer/2022081817/568151b6550346895dbfe4a7/html5/thumbnails/15.jpg)
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.