21
A Linguagem A Linguagem de de Especificação Especificação Z Z

A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Embed Size (px)

Citation preview

Page 1: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

A LinguagemA Linguagemde Especificação Zde Especificação Z

A LinguagemA Linguagemde Especificação Zde Especificação Z

Page 2: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

ConteúdoConteúdoConteúdoConteúdo• Linguagens de especificaçãoLinguagens de especificação– DefiniçãoDefinição– ExemplosExemplos

• Linguagem ZLinguagem Z– HistóricoHistórico– Vantagens de UsoVantagens de Uso– Operadores básicosOperadores básicos– Exemplo práticoExemplo prático

• ReferênciasReferências

Page 3: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

DefiniçãoDefiniçãoDefiniçãoDefinição• Linguagens de especificação usam notação Linguagens de especificação usam notação

matemática para descrever o que um matemática para descrever o que um programa deve fazer, sem descrever como programa deve fazer, sem descrever como fazê-lo.fazê-lo.

Linguagens de EspecificaçãoLinguagens de EspecificaçãoLinguagens de EspecificaçãoLinguagens de Especificação

Page 4: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

ExemplosExemplosExemplosExemplosLinguagens de EspecificaçãoLinguagens de EspecificaçãoLinguagens de EspecificaçãoLinguagens de Especificação

Métodos de Especificação FormalMétodos de Especificação Formal

Linguagens OrientadasLinguagens Orientadasao Modeloao Modelo

Linguagens OrientadasLinguagens Orientadasás Propriedadesás Propriedades

Linguagens AxiomáticasLinguagens Axiomáticas Linguagens AlgébricasLinguagens Algébricas

{VDM, Z}{VDM, Z}

{OBJ, Anna, Larch}{OBJ, Anna, Larch} {Clear, Act One}{Clear, Act One}

Page 5: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

HistóricoHistóricoHistóricoHistórico• Proposta em 1977 por Jean-Raymond Abrial, Proposta em 1977 por Jean-Raymond Abrial,

com a ajuda de Steve Schuman e Bertrand com a ajuda de Steve Schuman e Bertrand Meyer.Meyer.

• O nome Z (pronuncia-se “zed”) vem da teoria O nome Z (pronuncia-se “zed”) vem da teoria de Zermelo-Fraenkel.de Zermelo-Fraenkel.

Linguagem ZLinguagem ZLinguagem ZLinguagem Z

Page 6: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Vantagens de UsoVantagens de UsoVantagens de UsoVantagens de Uso• Amplamente utilizadaAmplamente utilizada• Possui um padrão internacional para sua Possui um padrão internacional para sua

sintaxe, semântica e sistema de tipos.sintaxe, semântica e sistema de tipos.• Fácil percepção de erros durante a Fácil percepção de erros durante a

especificação formal e implementação.especificação formal e implementação.

Linguagem ZLinguagem ZLinguagem ZLinguagem Z

Page 7: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Conceitos BásicosConceitos BásicosConceitos BásicosConceitos Básicos• TiposTipos• EsquemasEsquemas• ConjuntosConjuntos• PropriedadesPropriedades• EstadoEstado

Linguagem ZLinguagem ZLinguagem ZLinguagem Z

Page 8: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Conceitos BásicosConceitos BásicosConceitos BásicosConceitos Básicos• Notações:Notações:– operação’: indica o resultado da operação sobre o operação’: indica o resultado da operação sobre o

estado inicial, ou seja, o estado final.estado inicial, ou seja, o estado final.– Δ Esquema: Indica mudança no estado. Δ Esquema: Indica mudança no estado. – Ξ Esquema: Indica que o estado não muda.Ξ Esquema: Indica que o estado não muda.– variável?: Indica que “variável” receberá entrada.variável?: Indica que “variável” receberá entrada.– variável!: Indica que “variável” gerará saída.variável!: Indica que “variável” gerará saída.

Linguagem ZLinguagem ZLinguagem ZLinguagem Z

Page 9: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Exemplo da agenda de aniversários:Exemplo da agenda de aniversários:Primeiro, especificamos que lidaremos com nomes e datas:Primeiro, especificamos que lidaremos com nomes e datas:

Então, definimos seu Então, definimos seu espaço de estadosespaço de estados::

Page 10: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Agora podemos especificar a primeira operação, para Agora podemos especificar a primeira operação, para adicionar um nome:adicionar um nome:

Page 11: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Em seguida, a operação para encontrar o aniversário de uma Em seguida, a operação para encontrar o aniversário de uma dada pessoa:dada pessoa:

Page 12: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Agora, encontrar as pessoas que fazem aniversário em uma Agora, encontrar as pessoas que fazem aniversário em uma certa data:certa data:

Page 13: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Por fim, especificamos qual é o estado do sistema quando ele Por fim, especificamos qual é o estado do sistema quando ele é iniciado pela primeira vez:é iniciado pela primeira vez:

Page 14: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Agora, podemos considerar erros de entrada. Para isso, Agora, podemos considerar erros de entrada. Para isso, precisamos de uma saída precisamos de uma saída result!result!, que dirá se a entrada é , que dirá se a entrada é válida ou não. Então definimos um tipo válida ou não. Então definimos um tipo INFOINFO, que é um , que é um conjunto com os seguintes valores:conjunto com os seguintes valores:

Pode-se definir um esquema Pode-se definir um esquema SucessoSucesso, que especifica que o , que especifica que o resultado é resultado é okok, sem definir como o sistema muda:, sem definir como o sistema muda:

Page 15: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Para o caso de o usuário entrar, em Para o caso de o usuário entrar, em AddNomeAddNome, um nome que , um nome que já faz parte de já faz parte de pessoapessoa: :

Page 16: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

E para o caso de o usuário entrar, em E para o caso de o usuário entrar, em AcharNiverAcharNiver, um nome , um nome que não faz parte de que não faz parte de pessoapessoa: :

Page 17: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Porém, os três últimos esquemas não fazem sentido sozinhos. Porém, os três últimos esquemas não fazem sentido sozinhos. Então, podemos relacioná-los com os outros esquemas:Então, podemos relacioná-los com os outros esquemas:

onde o “R” antes do nome do esquema indica que esta é uma onde o “R” antes do nome do esquema indica que esta é uma versão “robusta” do esquema.versão “robusta” do esquema.

Seguem especificações dessas uniões em um só esquema:Seguem especificações dessas uniões em um só esquema:

Page 18: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Page 19: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

Page 20: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

Exemplo PráticoExemplo PráticoExemplo PráticoExemplo PráticoLinguagem ZLinguagem ZLinguagem ZLinguagem Z

Agenda de AniversáriosAgenda de AniversáriosAgenda de AniversáriosAgenda de Aniversários

E, juntando todos os tipos e esquemas, a especificação está E, juntando todos os tipos e esquemas, a especificação está completa.completa.

Page 21: A Linguagem de Especificação Z. ConteúdoConteúdo Linguagens de especificação Linguagens de especificação – Definição – Exemplos Linguagem Z Linguagem

ReferênciasReferênciasReferênciasReferências