Aula Prtica de ESD (cin.ufpe.br/~acm/esd)

  • View
    78

  • Download
    12

Embed Size (px)

DESCRIPTION

Aula Prática de ESD (www.cin.ufpe.br/~acm/esd). Usando FDR e Probe Sidney Nogueira ( scn@cin.ufpe.br ). Roteiro. FDR e Probe Rodando ferramentas Exemplos e dicas de uso At é Aula 3 Aulas 4 e 5. FDR e Probe. FDR (Failures Divergence Refinement) Verificador de modelos de CSP - PowerPoint PPT Presentation

Text of Aula Prtica de ESD (cin.ufpe.br/~acm/esd)

Slide 1

Aula Prtica de ESD(www.cin.ufpe.br/~acm/esd)Usando FDR e ProbeSidney Nogueira (scn@cin.ufpe.br) RoteiroFDR e ProbeRodando ferramentasExemplos e dicas de usoAt Aula 3Aulas 4 e 5

FDR e ProbeFDR (Failures Divergence Refinement)Verificador de modelos de CSPVerifica em um processo a presena de deadlocklivelockno determinismoVerifica refinamentos entre processos (traces, falhas e falhas e divergencias)ProbeNavegador de processos CSPPermite o usurio simular o sistema e ver a progresso da especificaoAntes de rodarBaixar de www.cin.ufpe.br/~scn/esd/roteiro_aula_pratica.pptx (este arquivo)sample1.cspputty.exeprobe (executvel para linux)Ter Xming instaladoTer permisso para logar no sevidor altinho.cin.ufpe.br (linux)

Rodando FDRFDR (Failures Divergence Refinement)Executar XmingExecutar e configurar putty adicionar altinho.cin.ufpe.br no campo servidormarcar SSH -> forward the X11salvar configurao para no ter que repetir os 2 passos anterioresLogar em altinho.cin.ufpe.brUsuario/senha do windowsDepois de logar chamar comando fdr2 &Verificar se o diretrio remote est mapeado para sua conta (drive h: )Para usar de casa preciso estar na VPN

Tela do FDR

Rodando ProbeProbecopiar o arquivo excutvel (probe) da sua conta para o local em altinho. Considere dir o diretrio em h: onde foi baixado o arquivocp /remote/dir/probe . chamar pela linha de comando ./probe &diferente de FDR, tem verso para windows

Tela de Probe

Basico da interface de FDRFile (Load, Reload)Lista de verificaes (assertions)Lista de processos do arquivo carregadoJanela de MensagensMostrar: Options -> Show statusDetalhes da janela: Messages -> ...

Usar processo W2 para mostrar (deadlock, deterministic, evaluate)9Deadlock, deterministic, evaluateProcesso W2Especificao de canal restritaVerificar deadlockContra exemplosExpandir com ProbeEvaluate {|ch|}Processo WCanal do tipo inteiroFalha ao rodar no FDR (cardinalidade infinita)

Deadlock de Stop vs deadlock de SkipProcessos P0 e P0_Incluindo assert no .cspEx: assert P0 :[deadlock free [F]]Diferenciando SKIP de STOP na verificao de deadlock de P0 e P0_Evento tick

Processo parametrizadoCOUNT(n)Problema ao verificar no FDRExpanso ilimitadaProbe permite expandir por demandaCOUNT2(n)Ok para FDR e ProbeLimites superiores e inferioresBusca no ProbeProcesso ATM1Navegar no ProbeBuscar evento no probe (search -> Event)Comando print, exs print { PIN.c | c 3, c < 7})print member(100, WA)print head()

Analisando determinismoProcessos P1, P2 e P3Analisar determinismo com FDREx: assert P1 :[ deterministic [FD] ] Em que ponto P2 no determinstico? e P3? Porque?Use o probe para debugar

TypecheckerFDR e Probe s encontram problemas nos tipos quando expandindo processosTypechecker detecta problemas de tipos varrendo estaticamente a especificao a mensagem de erro mais completaDisponvel em www.fsel.comRoda pela linha de comando ex: checker sample1.cspComparando processosEm FDR possvel analisar se um processo P equivale a Q se as verificaes que seguem so verdadeirasassert P [FD= Qassert Q [FD=PSe alguma delas falha os processos no so equivalentesIsto pode ser feito em T, F ou FDExemplos de ComparaoQ1 igual a Q2?Confirmar com FDR

P4 igual a P1?Dica: leis algebricas P [] Q = Q [] P e P [] P = PConfirmar com FDR

Exemplos de Refinamentosinclude sample1.cspUse FDR para responder as perguntas a seguirIgualdade de tracesP1 =T P2 ?P2 =T P3 ?Refinamento de falhasP1 e P2, quem tem menos falhas?P2 e P3, quem tem menos falhas?

Exemplo de RefinamentosP1 downP2tauupdownupP3 downupupNavegando no Probe chegamos a estes LTSsExemplo Paralelismo SncronoEspecifique em CSPM o processo REPEAT e Sigma = {up,down}Navegue com o Probe pelo processoREPEATup = (up -> up -> REPEAT) [|Sigma|] REPEATSejaAS1 = up -> up -> REPEATUse FDR para responderAS1 =T REPEATup ?

Exemplo Paralelismo SncronoEspecifique em CSPM o processo REPEAT e Sigma = {up,down}Navegue com o Probe pelos processoREPEATupdown = (up -> down -> REPEAT) [|Sigma|] REPEATSejaAS2 = up -> STOPUse FDR para responderAS2 =T REPEATupdown ?

Exemplo Paralelismo AlphabetizadoConsidere a seguinte especificao CSPMT = {0,1}channel aa,m,cc:TCOPY'(a,b) = a?x -> b!x -> COPY'(a,b)CC0 = COPY'(aa,m) [{|aa,m|}||{|m,cc|}] COPY'(m,cc)Escreva uma especificao sequencial equivalente a CC0