A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Modelo de Especificação Formal

Apresentações semelhantes


Apresentação em tema: "Modelo de Especificação Formal"— Transcrição da apresentação:

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

2 Sumário Introdução Variantes de Redes de Petri Ferramentas disponíveis
Estudo de Caso (Elevador) Conclusões

3 Referências Bibliográficas
Maciel, Lins e Cunha. Introdução às Redes de Petri, 10ª Escola de Computação, 1996 Petri Nets Tool Database - Barros, João Paulo M. P. Introdução à Modelagem de Sistemas utilizando Redes de Petri, Disponível em

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

5 Estrutura das Redes de Petri
Lugar Transição Arco Marca Arco Inibidor 1 2 2 1

6 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

7 Variantes de Redes de Petri
Rede Temporal, Rede Hierárquica; Rede Colorida d c b a Marcas Cores t1 t0 <a> <c> <[a,b]> t1 t0 <a> <c> <[a,b]> Após o disparo transição t1

8 Propriedades das Redes de Petri
Alcançabilidade (Reachability) Limitação (Boundedness) Liveness Cobertura

9 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 (

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

11 Problema do Elevador Rede de Petri Temporal e com arco inibidor

12 Modelagem utilizando Rede Colorida
nova_dir dir muda_dir (dir,lista) Subir|descer (dir,nova_lista) Lista de paradas Lista subidas Lista descidas andar v (novo_mov,novo_u) (mov,u) pos i subir|descer|parado

13 Funções e Variáveis Os 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 elevador andar  {0,...,n-1} (botões pressionados dentro do elevador) bot_sub,bot_des  {0,...,n-1}

14 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

15 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)

16 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)

17 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) }

18 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); }

19 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); }

20 Mudando direção quando está subindo e lista_subida fica vazia
(dir == subir) ^empty(lista_subida) ^ empty(lista_descida_prox) ^empty(lista_subida_prox)  dir = parado;

21 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); }

22 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); }

23 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;

24 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; }

25 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; }

26 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)


Carregar ppt "Modelo de Especificação Formal"

Apresentações semelhantes


Anúncios Google