26
Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Embed Size (px)

Citation preview

Page 1: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Redes de Petri

Modelo de Especificação Formal

Alessandra Guaracy de Oliveira

Patrick Henrique da Silva Brito

Page 2: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Sumário

Introdução Variantes de Redes de PetriFerramentas disponíveisEstudo de Caso (Elevador)Conclusões

Page 3: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Referências BibliográficasMaciel, Lins e Cunha. Introdução às Redes de Petri, 10ª Escola de Computação, 1996

Petri Nets Tool Database -http://www.daimi.au.dk/PetriNets/tools/db.html

Barros, João Paulo M. P. Introdução à Modelagem de Sistemas utilizando Redes de Petri, 2001. Disponível em http://www.estig.ipbeja.pt/~jpb/textos/pc/pn.pdf

Page 4: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Definição

“Redes de Petri é uma técnica de especificação de sistemas que possibilita uma representação matemática e possui mecanismos de análise poderosos, que permitem a verificação de propriedades e verificação da corretude do sistema especificado.”

Page 5: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Estrutura das Redes de Petri

LugarTransiçãoArcoMarcaArco Inibidor

1 22

21

2

Page 6: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Características Redes de Petri

Não-determinísticas Podem ser mapeadas em máquinas de estados Várias formas de representação:– Gráfica– Bag (conjuntos e funções matemáticas)– Matrizes– Definição por relações

Page 7: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Variantes de Redes de Petri

Rede Temporal, Rede Hierárquica;Rede Colorida

d

c

b

a

MarcasCores

t1

t0<a>

<c><a>

<[a,b]>

<a>

<c>

t1

t0<a>

<c><a>

<[a,b]>

<a>

<c>

Após o disparo transição t1

Page 8: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Propriedades das Redes de Petri

Alcançabilidade (Reachability)

Limitação (Boundedness)Liveness

Cobertura

Page 9: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Ferramentas

Ferramentas para verificação da corretude do modelo (checa deadlock)– ferramenta utilizada HPSim

Ferramentas para checar propriedades das redes de Petri (alcançabilidade, cobertura)– INA (

Page 10: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

HPSim

Suporte a redes lugar-transição (sem marcas coloridas), redes com lugares com diferentes capacidades e rede temporal.

Page 11: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Problema do ElevadorRede de Petri Temporal e com arco inibidor

Page 12: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Modelagem utilizando Rede Colorida

nova_dir

dirmuda_dir

(dir,lista)

Subir|descer

dir

(dir,nova_lista)(dir,lista)

(dir,lista)(dir,nova_lista)

Lista de paradas

Lista subidasLista descidas

andar

v

(novo_mov,novo_u)(mov,u)

(mov,u)

pos

dir

i

subir|descer|parado

Page 13: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Funções e VariáveisOs pedidos são mantidos em quatro listas: lista_subida, lista_subida_prox (ordenadas em ordem crescente), lista_descida e lista_descida_prox (ordenadas em ordem descrecente).n - (número de andares)pos {0,...,n-1} posição do elevadorandar {0,...,n-1} (botões pressionados dentro do elevador)bot_sub,bot_des {0,...,n-1}

Page 14: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Funções e Variáveis

dir {subir, descer, parado}ordena_sub(par,lista) | ordena_des(par,lista) coloca o valor par na lista em ordem crescente|descrente, respectivamente

Page 15: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Lógica - Movimento Subida

(dir == subir) ^(andar > pos) lista_subida = ordena_sub(andar,lista_subida)(andar < pos) lista_descida_prox = ordena_des(andar,

lista_descida_prox)(bot_sub > pos) lista_subida = ordena_sub(bot_sub,lista_subida)(bot_sub < pos) lista_subida_prox =

ordena_sub(bot_sub,lista_subida_prox)(bot_des != pos) lista_descida_prox =

ordena_des(bot_des,lista_descida_prox)

Page 16: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Lógica - Movimento Descida

(dir == descer) ^(andar < pos) lista_descida = ordena_des(andar,lista_descida)(andar > pos) lista_subida_prox = ordena_sub(andar,

lista_subida_prox)(bot_des < pos) lista_descida =

ordena_des(bot_des,lista_descida)(bot_des > pos) lista_descida_prox =

ordena_des(bot_des,lista_descida_prox)(bot_sub != pos) lista_subida_prox =

ordena_sub(bot_sub,lista_subida_prox)

Page 17: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Mudando direção

quando está subindo e lista_subida fica vazia

(dir == subir) ^empty(lista_subida) ^ not_empty(lista_descida_prox) ^ (head(lista_descida_prox) >

pos){ lista_subida = cons(head(lista_descida_prox) >

pos),lista_subida) lista_descida_prox = tail(lista_descida_prox) }

Page 18: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Mudando direção

quando está subindo e lista_subida fica vazia

(dir == subir) ^empty(lista_subida) ^ not_empty(lista_descida_prox) ^ (head(lista_descida_prox) <= pos){ dir = descer; lista_descida = lista_descida_prox; clear(lista_descida_prox); }

Page 19: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Mudando direção

quando está subindo e lista_subida fica vazia

(dir == subir) ^empty(lista_subida) ^ empty(lista_descida_prox) ^ not_empty(lista_subida_prox){ dir = descer; lista_descida =

cons(head(lista_subida_prox),lista_descida); }

Page 20: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Mudando direçãoquando está subindo e lista_subida fica vazia

(dir == subir) ^empty(lista_subida) ^ empty(lista_descida_prox) ^empty(lista_subida_prox)

dir = parado;

Page 21: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Mudando direção

quando está descendo e lista_descida fica vazia

(dir == descer) ^ empty(lista_descida) ^not_empty(lista_subida_prox) ^(head(lista_subida_prox)

<= pos) { lista_descida =

cons(head(lista_subida_prox),lista_descida); lista_subida_prox = tail(lista_subida_prox);}

Page 22: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Mudando direção

quando está descendo e lista_descida fica vazia

(dir == descer) ^ empty(lista_descida) ^empty(lista_subida_prox) ^ not_empty(lista_descida_prox){ dir = subir; lista_subida =

cons(head(lista_descida_prox),lista_subida); lista_descida_prox = tail(lista_descida_prox);}

Page 23: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Mudando direção

quando está descendo e lista_descida fica vazia

(dir == descer) ^ empty(lista_descida) ^empty(lista_subida_prox) ^empty(lista_descida_prox) dir = parado;

Page 24: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Atualizando a lista de subida durante o movimento de subida

(dir == subir) { if (head(lista_subida) == pos) lista_subida = tail(lista_subida); pos = pos + 1;}

Page 25: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Atualizando a lista de descida durante o movimento de descida

(dir == descer) { if (head(lista_descida) == pos) lista_descida = tail(lista_descida); pos = pos - 1;}

Page 26: Redes de Petri Modelo de Especificação Formal Alessandra Guaracy de Oliveira Patrick Henrique da Silva Brito

Conclusões

Rede de Petri é um modelo dinâmico, não-determinístico e seu formalismo possibilita a verificação da existência de deadlocks

A rede de Petri simples possui muitas limitações, como por exemplo: não permite passagem de parâmetros e eventos temporais (Solução: uso de variantes do modelo)