a linguagem de especificação z. conteúdoconteúdo linguagens de especificação linguagens de...

Post on 17-Apr-2015

205 Views

Category:

Documents

55 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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

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

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

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

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}

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

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

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

Linguagem ZLinguagem ZLinguagem ZLinguagem Z

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

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::

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:

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:

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:

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:

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:

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: :

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: :

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:

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

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

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.

ReferênciasReferênciasReferênciasReferências

top related