LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... ·...

22
André Chaves Mendes Fabrício Jorge Lopes Ribeiro Raphael Melo Guedes Profº: Aloysio de Castro Pinto Pedroza LABORATÓRIO PROMELA XSPIN

Transcript of LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... ·...

Page 1: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

André Chaves MendesFabrício Jorge Lopes Ribeiro

Raphael Melo Guedes Profº: Aloysio de Castro Pinto Pedroza

LABORATÓRIOPROMELA XSPIN

Page 2: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPININDICE

Laboratório 1 – Instalação Xspin

• Obtenção dos arquivos

• Verificação de Pacotes do Linux

Laboratório 2 – Operando a Ferramenta Xspin

• Verificação

• Simulação

Laboratório 3 – Teste de Fórmula LTL

Page 3: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO

Laboratório 1

Instalação Xspin

Page 4: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

Laboratório 1 – Instalação XSPIN

A versão mais atualizada e a documentação da ferramenta XSPIN

estão disponíveis respectivamente nos links:

http://spinroot.com/

http://spinroot.com/spin/Man/README.html

PROMELA/XSPINLABORATÓRIO 1

Page 5: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

Passos para instalação ( usada a distribuição Linux Fedora ):

1 - Baixe o arquivo spin*.tar.gz (http://spinroot.com/)‏

2 - Descompactar o arquivo spin*.tar.gz em um local de sua escolha

comando: tar -xvf spin*.tar.gz

3 - Execute:

cd Spin/Src*

make

4 - Se der algum problema com a falta do Yacc, torne-se root e instale o pacote

byacc

Execute o make novamente.

Obs.: * conterá o número da versão do SPIN

PROMELA/XSPINLABORATÓRIO 1

Page 6: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

5 - Verifique se os seguintes pacotes estão instalados:

• Tk version 4.2 - Tcl version 7.6 ou

• Tk version 8.4 - Tcl version 8.4

• Graphviz (www.graphviz.org) ‏

6 - Caso queira inclua o executável spin e a interface gráfica Xspin no path.

Se estiver usando o bash shell,

export PATH=$PATH:/<local da sua escolha>/Spin/Src5.2.0

export PATH=$PATH:/<local da sua escolha>/Spin/Xspin5.2

7 - Faça o teste de sanidade, seguindo as instruções contidas no arquivo README.tests,

que está na pasta Test

PROMELA/XSPINLABORATÓRIO 1

Page 7: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

8 - Verifique se existe o binário wish

comando: which wish

Se retornar um caminho é porque o executável está instalado.

Se não retornar um caminho, instale o wish

9 - Altere a primeira linha do arquivo xspin*.tcl, substituindo a linha

#!/bin/sh

pelo caminho do executável wish

#!/<caminho do wish>/wish -f

PROMELA/XSPINLABORATÓRIO 1

Page 8: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO

Laboratório 2

Operando a Ferramenta Xspin

Page 9: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO 2

Laboratório 2 – Operando a Ferramenta Xspin

Para o laboratório usaremos como exemplo o protocolo de Transferência de

Custódia em DTNs.

Descrição - Protocolo de Transferência de Custódia em DTNs

Um nó receptor após receber um pedido de custódia de um nó emissor,

responde se aceita ou não a este pedido. Caso o pedido seja aceito o nó

emissor pode deletar esta mensagem de seu buffer e, a responsbalidade de

entrega da mensagem passa ao nó receptor. Caso o pedido seja

negado, o nó emissor deve permanecer com a mensagem armazenada.

Page 10: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

1 - Abrir a Ferramenta Xspin

2 - No terminal executar ./xspin520.tcl

PROMELA/XSPINLABORATÓRIO 2

Page 11: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

3 - Abrir o protocolo de Transferência de Custódia em DTNs (TCustodia)‏

Menu: File -> Open -> TCustodia

4 - Verificar a sintaxe ‏

Menu: Run -> Run Syntax Check

PROMELA/XSPINLABORATÓRIO 2

Page 12: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

5 - Adequar os parâmetros de Verificação (pode-se utilizar o default) ‏

Menu: Run -> Set Verification Parameters

Janela : Basic Verifications Options -> Ativar Run ou Acessar as Opções Avançadas

PROMELA/XSPINLABORATÓRIO 2

Page 13: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

XSPINSequência de Simulação

6 – Opções Avançadas de Verificação – podemos alterar a profundidade de busca, por padrão

o valor é 10000.

Page 14: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

7 - Simular o protocolo Transferência de Custódia DTNs (TCustodia) ‏

8 - Adequar os parâmetros da Simulação (pode-se utilizar o default) ‏

Menu: Run -> Set Simulations Parameters

Janela : Simulation Options -> Ativar Start

PROMELA/XSPINLABORATÓRIO 2

Page 15: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

9 - Na janela de simulação:

Pressionando o botão Run – ativará a simulação contínua

Pressionando o botão Single Step – ativará a simulação por passo a passo

PROMELA/XSPINLABORATÓRIO 2

Page 16: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO

Laboratório 3

Teste de Fórmula LTL

Page 17: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO 3

1 - Executar ./xspin520.tcl -> open: Tcustodia

Menu: Run -> LTL property manager

Page 18: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

• Formula: indica onde os operadores LTL serão inseridos.

• Symbol Definitions: onde declaramos todas as variáveis que irão compor os testes, assim como, as próprias condições de teste.

• Never claim: temos o equivalente do teste LTL em PROMELA.

PROMELA/XSPINLABORATÓRIO 3

Page 19: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO 3

Laboratório 3 – Teste de Fórmula LTL

Descrição:

As fórmulas LTL inseridas no primeiro campo, em conjunto com as declarações em Symbol

Definitions serão traduzidas em código PROMELA e posteriormente testadas.

No exemplo utilizado, temos no código um variável denominada times cujo valor deve ser <= 30

desde o início até o fim da simulação.

Logo, o comportamento a se verificar é:

"sempre" a variável "times" será <= 30

Porém este teste deve ser informado em linguagem LTL. Assim, o primeiro passo é declarar a

nossa condição de teste e depois montarmos a fórmula LTL relativa a este teste.

Page 20: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO 3

2 - Declarar a condição de teste‏ no campo Symbol Definitions

A sintaxe é a seguinte:‏

#define <variavel> <condição>

No nosso caso a condição é: times <= 30

Basta apenas atribuírmos uma variável que represente esta condição, por exemplo:

#define p (times <= 30)

Logo definimos p como sendo times <=30. Assim quando quisermos nos referir a times <=30, na

formulação LTL, usaremos apenas a variável p.

Page 21: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO 3

3 - Montar a fórmula LTL.

O segundo passo é montar a fórmula LTL. Como queremos testar

"sempre" a variável "times" será <= 30

e a condição de teste já foi declarada no passo anterior, falta apenas informar a representação

temporal de “sempre” em LTL

Em LTL “sempre” é representado por []

Assim, nosso teste resume-se em:

[] p

Esta fórmula deve ser escrita no campo Fórmula.

Page 22: LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... · COE819 - Tóp. Esp. Validação de Sistemas Concorrentes 12/08/2009 PROMELA/XSPIN INDICE

12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes

PROMELA/XSPINLABORATÓRIO 3

4 - Gerar a tradução da fórmula em PROMELA e testá-la

Para tal, apenas iremos em generate, e o campo never claim será preenchido com o

equivalente em PROMELA da fórmula LTL.

Depois, iremos em Run verification - > run.

O resultado será impresso em Verification Result

Caso Verification Result seja invalid, o próprio xspin abrirá uma janela oferecendo a opção de

realizar uma simulação guiada, mostrando onde o não cumprimento do teste foi verificado.