Upload
charlotte-vance
View
25
Download
3
Embed Size (px)
DESCRIPTION
A Linguagem de Especificação Z. Conteúdo. Linguagens de especificação Definição Exemplos Linguagem Z Histórico Vantagens de Uso Operadores básicos Exemplo prático Referências. Linguagens de Especificação. Definição. - PowerPoint PPT Presentation
Citation preview
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