A Linguagem de Especificação Z
-
Upload
charlotte-vance -
Category
Documents
-
view
25 -
download
3
description
Transcript of A Linguagem de Especificação Z
![Page 1: A Linguagem de Especificação Z](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/1.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/2.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/3.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/4.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/5.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/6.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/7.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/8.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/9.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/10.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/11.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/12.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/13.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/14.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/15.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/16.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/17.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/18.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/19.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/20.jpg)
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](https://reader036.fdocumentos.com/reader036/viewer/2022062314/5681368c550346895d9e1600/html5/thumbnails/21.jpg)
ReferênciasReferênciasReferênciasReferências