150 likes | 232 Views
Aula Prática: A Ferramenta Possum. Métodos Formais Augusto Sampaio. Roteiro. Características gerais Escrevendo especificações em LaTeX Exemplo Como utilizar o sistema Executando especificações. Características gerais. Animador de especificações escritas em SUM (padrão) ou na notação Z
E N D
Aula Prática:A Ferramenta Possum Métodos Formais Augusto Sampaio
Roteiro • Características gerais • Escrevendo especificações em LaTeX • Exemplo • Como utilizar o sistema • Executando especificações
Características gerais • Animador de especificações escritas em SUM(padrão) ou na notação Z • As seguintes facilidades são oferecidas: • Análise sintática, incluindo vários sintaxes : sum, zed.sty, oz.sty, email lexis; • Checagem de tipos • tradutor entre as sintaxes; • Avaliação de expressões e predicados;
Escrevendo especificações Z em LaTeX • LaTeX é uma linguagem para criar documentos, tal como a linguagem implícita do WORD • Especificações Z usam símbolos gráficos especiais:D, X, Þ, etc • LaTeX substitui os símbolos por macros: \Delta, \Xi, \implies, etc. • Arquivo LaTeX pode ser processado por ferramentas para visualizar e/ou imprimir a especificação
\begin{zed} \forall x, y, z: \nat @ \\ \t1 x>y \land y>z \implies x>z \end{zed} º " x, y, z: IN · x>y ^ y>z Þ x>z \begin{axdef} C:T \where P(C) \end{axdef} C:T º P(C) \begin{schema}{Nome[Par]} \Delta Estado \where var1’=exp1 \\ var2’=var2 \end{schema} Nome[Par] DEstado º var1’=exp1 var2’=var2 Elementos de Z em LaTeX
Esqueleto Básico de Especificação(geração de Postscript) \documentstyle[zed]{article} % Ajustes do documento: margens, topo, etc. \begin{document} \section{Tipos} Os {\sl given sets} abaixo representam o conjunto de valores e s\’{\i}mbolos usados pela especifica\c{c}\~{a}o da tabela de s\’{\i}mbolos. \begin{zed} [VAL,SYM] \end{zed} \end{document}
Resultado de um Documento LaTeX Pode-se processar (compilar) um documento LaTeX para obter um documento de visualização. Por exemplo: ulysses>latex espec.zed Do comando acima obtém-se o arquivo espec.dvi, que pode ser visualizado da seguinte forma: ulysses>xdvi espec Pode-se gerar espec.ps de espec.dvi para imprimir ou visualizar: Visualização ulysses>ghostview espec.ps Conversão ulysses>dvips espec Impressão ulysses>lpr -Pxerox espec.ps
s : |P Pessoa # s limite D Estado p?: Pessoa #s < limite p? Ï s s’ = s U {p?} Consulta X Estado p?: Pessoa ap!: Msg (p? Î s ^ ap! = PRESENTE) v (p? Ï s ^ ap! = AUSENTE) Exemplo: Controle de Acesso ESTADO INICIALIZAR [Pessoa] Estado’ limite == 3 s’ = {} INCLUSAO Msg ::= AUSENTE | PRESENTE EXCLUSAO D Estado p?: Pessoa p? Î s s’ = s \ {p?}
Especificação modo Possum • Possível inclusão de cabeçalhos, e.g. • \section {Nome da seção} • \subsection {Nome da subseção} • \subsubsection {Nome da subsubseção} • Dispense o uso de ajustes de documento para impressão PostScript • Na ferramenta apenas declarações e/ou cabeçalhos
Esqueleto Básico de Especificação(Possum) \section{Tipos} \begin{zed} [VAL,SYM] \end{zed} \section{Estado do Sistema} \begin{schema}{ESTADO} s_1 : X \\ s_2 : Y \where Predicado \end{schema}
Como utilizar o sistema • Programa executado no Linux. • A especificação a ser processada deverá ser escrita em LaTeX (com as macros definidas no estilo zed.sty). • No menu Dialogs selecione a operação Parameters. Na janela que se abrirá modifique o campo Syntax de sum(padrão) para o formato zed • Para abrir um arquivo(leitura/edição) escolha o menu Files/Open e selecione o arquivo • O menu Files/Read Spec... carrega um arquivo no interpretador Possum
Condições de Executabilidade • É preciso indicar explicitamente o esquema que representa o estado e a inicialização na janela Possum Parameters campo State Schema: nome do esquema - estado campo Init Schema: nome do esquema de inicialização • Valores atribuídos a variáveis do tipo Given Set devem ser colocados entre aspas • Voltar a sintaxe para sum, para melhor visualização • Após carregar o arquivo, invocar a operação de inicialização do esquema-estado
Executando Especificações • Como executar um esquema: • menu Dialogs/Compound: escolher o esquema • escolher opção Invoke para executar o esquema • Os esquemas delta: as varíáveis de entrada recebem valores, não importando a ordem: • NomeDoEsquema (sem váriáveis de entrada) • NomeDoEsquema {Valor1/var1?, Valor2/var2?} • O esquema operação de consulta(produz uma saída) : • NomeDoEsquema >> (sem variáveis de entrada) • NomeDoEsquema {Valor1/var1?, Valor2/var2?} >>
Executando Especificações • Os comandos correspondentes são exibidos na linha de comando do interpretador • O comando Ctrl Enter envia a consulta(declaração/ predicado/operação/expressão). Ctrle Ctrl permitem recuperar os últimos comandos • Ao avaliar uma declaração de um arquivo zed, se declaração for bem sucedida, passa com Yes. • Caso contrário emite uma mensagem apontando o erro na notação, ou a mensagem Whatever(falha na interpretação). No solution: predicado foi quebrado, resultou false
Exercícios 1) Incluir os seguintes elementos no conjunto: “joao”, “maria”, “pedro” executando a INCLUSAO 2) Tentar incluir mais um elemento 3) Verificar se “maria” está presente executando a operação CONSULTA 4) Deletar “joao” executando EXCLUSAO 5) Deletar “carla” executando EXCLUSAO 6) Especificar uma nova operação para remoção randômica 7) Carregar a especificação e tentar executar esta operação 8) Definir PESSOA como um registro, com atributos matrícula, nome, redefinir as operações de inclusão, exclusão e consulta