A Linguagem
de Especificação Z
Conteúdo
• Linguagens de especificação
–
–
•
Linguagem Z
–
–
–
–
•
Definição
Exemplos
Histórico
Vantagens de Uso
Operadores básicos
Exemplo prático
Referências
Linguagens de Especificação
Definição
• Linguagens de especificação usam notação
matemática para descrever o que um
programa deve fazer, sem descrever como
fazê-lo.
Linguagens de Especificação
Exemplos
Métodos de Especificação Formal
Linguagens Orientadas
ao Modelo
Linguagens Orientadas
ás Propriedades
{VDM, Z}
Linguagens Axiomáticas Linguagens Algébricas
{OBJ, Anna, Larch}
{Clear, Act One}
Linguagem Z
Histórico
• Proposta em 1977 por Jean-Raymond Abrial,
com a ajuda de Steve Schuman e Bertrand
Meyer.
• O nome Z (pronuncia-se “zed”) vem da teoria
de Zermelo-Fraenkel.
Linguagem Z
Vantagens de Uso
• Amplamente utilizada
• Possui um padrão internacional para sua
sintaxe, semântica e sistema de tipos.
• Fácil percepção de erros durante a
especificação formal e implementação.
Linguagem Z
Conceitos Básicos
•
•
•
•
•
Tipos
Esquemas
Conjuntos
Propriedades
Estado
Linguagem Z
Conceitos Básicos
• Notações:
– operação’: indica o resultado da operação sobre o
estado inicial, ou seja, o estado final.
– Δ Esquema: Indica mudança no estado.
– Ξ Esquema: Indica que o estado não muda.
– variável?: Indica que “variável” receberá entrada.
– variável!: Indica que “variável” gerará saída.
Linguagem Z
Exemplo Prático
Exemplo da agenda de aniversários:
Primeiro, especificamos que lidaremos com nomes e datas:
Então, definimos seu espaço de estados:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Agora podemos especificar a primeira operação, para
adicionar um nome:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Em seguida, a operação para encontrar o aniversário de uma
dada pessoa:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Agora, encontrar as pessoas que fazem aniversário em uma
certa data:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Por fim, especificamos qual é o estado do sistema quando ele
é iniciado pela primeira vez:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Agora, podemos considerar erros de entrada. Para isso,
precisamos de uma saída result!, que dirá se a entrada é
válida ou não. Então definimos um tipo INFO, que é um
conjunto com os seguintes valores:
Pode-se definir um esquema Sucesso, que especifica que o
resultado é ok, sem definir como o sistema muda:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Para o caso de o usuário entrar, em AddNome, um nome que
já faz parte de pessoa:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
E para o caso de o usuário entrar, em AcharNiver, um nome
que não faz parte de pessoa:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Porém, os três últimos esquemas não fazem sentido sozinhos.
Então, podemos relacioná-los com os outros esquemas:
onde o “R” antes do nome do esquema indica que esta é uma
versão “robusta” do esquema.
Seguem especificações dessas uniões em um só esquema:
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Linguagem Z
Exemplo Prático
Agenda de Aniversários
Linguagem Z
Exemplo Prático
Agenda de Aniversários
E, juntando todos os tipos e esquemas, a especificação está
completa.
Referências
Download

A Linguagem de Especificação Z