LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... ·...
Transcript of LABORATÓRIO PROMELA XSPIN - GTA / COPPE / UFRJ - …fabriciojorge/trabalhos/laboratorio... ·...
André Chaves MendesFabrício Jorge Lopes Ribeiro
Raphael Melo Guedes Profº: Aloysio de Castro Pinto Pedroza
LABORATÓRIOPROMELA XSPIN
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
12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes
PROMELA/XSPINLABORATÓRIO
Laboratório 1
Instalação Xspin
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
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
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
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
12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes
PROMELA/XSPINLABORATÓRIO
Laboratório 2
Operando a Ferramenta Xspin
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.
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
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
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
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.
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
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
12/08/2009COE819 - Tóp. Esp. Validação de Sistemas Concorrentes
PROMELA/XSPINLABORATÓRIO
Laboratório 3
Teste de Fórmula LTL
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
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
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.
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.
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.
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.