Notação Z - Decoração

Documentos relacionados
Métodos Formais. Notação Z - Revisão

Notação Z - Predicados. Formas de montar predicados em Z

Login na VM VirtualBox

Modelo Relacional Wendel Melo

P R O J E T O: C A R N A V A L. 2. Informações Básicas sobre o Sistema a ser Desenvolvido

Revisando Banco de Dados. Modelo Relacional

Sistemas de Informação e Bases de Dados 2012/2013. Modelo Relacional. Alberto Sardinha 2012 IST

Grupo de Usuários Java do Noroeste Paulista. Tópicos Avançados em Java

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

Computação Eletrônica. Tipos de dados, constantes, variáveis, operadores e expressões. Prof: Luciano Barbosa

Conceitos, Arquitetura e Design

Especificações de Casos de Uso e Regras de Negócio

08/05/2012. Tipos de dados. Tipos de dados. Elementos Básicos. Tipos de dados. Elementos Básicos Tipos de dados. Dados e seus tipos:

INE5416 Paradigmas de Programação. Ricardo Azambuja Silveira INE CTC UFSC E Mail: URL:

Behaviour-Driven Development BDD. Cristian Mathias Felipe Foliatti

IPS 7.X: Autenticação de login de usuário usando ACS 5.X como o exemplo da configuração de servidor RADIUS

Organização e Arquitetura de Computadores I

Projeto Banco de Dados

Programa Integração AABB Comunidade Manual do Siga Coordenador pedagógico

Fundamentos 1. Lógica de Predicados

Banco de Dados Modelagem e Normalização

Revisão de Bancos de Dados

Introdução à Programação. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

Modelo Relacional. Banco de Dados 2º trimestre Prof. Patrícia Lucas

CINEMAN.ULTRA. Manual de usuário

Modelos de Sistemas Casos de Uso

TRANSFORMADA DE LAPLACE E PVI

BCD29008 Banco de dados

Modelo Entidade-Relacionamento

ALGORITMOS E APLICAÇÕES. FATEC IPIRANGA ADS Noturno 1º semestre de 2012 Prof. Luiz Carlos de Jesus Junior

Banco de Dados I Modelagem Conceitual

Introdução à Programação

Modelagem de dados usando MER. Andre Noel

MATA60 BANCO DE DADOS Aula 3- Modelo de Entidades e Relacionamentos. Prof. Daniela Barreiro Claro

Métodos Computacionais. Operadores, Expressões Aritméticas e Entrada/Saída de Dados

BANCO DE DADOS I/MODELAGEM DE DADOS Prof. Ricardo Rodrigues Barcelar

Se a senha tem de 2 a 30 caracteres. Se tiver mais ou menos caracteres, ela não será válida e deve mostrar a mensagem de erro abaixo:

ADMINISTRAÇÃO DE BANCOS DE DADOS MÓDULO 8

Padrão para Especificação de Requisitos de Produto de Multimídia

Sistemas de Banco de Dados

Capítulo 2 Operadores. A função scanf()

Modelagem de dados usando o modelo Entidade- Relacionamento (ER)

Manual de instalação do Microsoft SQL Server 2008 R2 Express no Windows 10

INTRODUÇÃO A ENGENHARIA DE SOFTWARE

Aula 4 Oficina de Programação Algoritmos - Parte 3. Profa. Elaine Faria UFU

CONCEITOS DE ALGORITMOS

ESCORPIÃO

Introdução. Conceitos Básicos. Conceitos Básicos. Conceitos Básicos

MANUAL DE PROCEDIMENTOS

Manual Converte-MV S_Line

Capítulo 11 Sistemas de Arquivos

O que é um banco de dados? Banco de Dados. Banco de dados

Procedimento Configuração Dispositivos Android Procedimento para Configuração do Office365 em Dispositivos Android

TECNOLOGIAS DA INFORMAÇÃO E COMUNICAÇÃO SISTEMAS DE GESTÃO DE BASE DE DADOS O MODELO RELACIONAL

Programa Institucional de Bolsa de Iniciação à Docência PIBID MANUAL DE OPERAÇÃO

Cadastro Nacional de Produtos - CNP

Matéria Introdutória. Banco de Dados Profa. Dra. Cristina Dutra de Aguiar Ciferri

Algoritmos. Algoritmos e Linguagem de Programação - Prof Carlos Vetorazzi

CONJUNTO DE INSTRUÇÕES

Portal de Sistemas Integrados. Manual do Usuário. Versão: 1.0

Lógica de Programação, Algoritmos e Estruturas de Dados

Linguagem de Maquina II. Visão Geral

Nome: Login: CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA

SISCOP Sistema de Controle Pedidos RT003 Incluir Produto Estratégia de Testes

Capítulo 10: Interface de Sistemas de Arquivos. Operating System Concepts 8 th Edition

Tabelas. Banco de Dados I MySQL

Análise Estruturada. Modelagem de Software Prof. Flávio de Oliveira Silva, Ph.D.

2. Conceitos e Arquiteturas de um SGBD

Banco de dados. Objetivo: Reter os dados de forma que possam ser utilizados em outros momentos

ara entender os Sistemas Gerenciadores de Banco de Dados é importante conhecer

USUÁRIO: TÉCNICO REVISÃO

Desenvolvimento de Software Baseado em Componentes. Paulo C. Masiero

Conhecendo e editando o seu perfil

Transcrição:

Notação Z - Decoração Z é uma linguagem que estrutura um conjunto de teorias matemáticas Convenções são utilizadas para permitir o uso desta teoria matemática estruturada na descrição de programas O uso destas convenções permite-nos descrever espaço de estados e operações

Notação Z - Decoração Espaço de estados: Conjunto de estados iniciais Operações Cada operação possui variáveis de entrada e saída As operações são especificadas pela relação entre as variáveis de entrada e saída e um par de estados (o estado antes e depois da operação)

Notação Z - Decoração Em Z, um esquema especifica um espaço de estados sobre um tipo abstrado Contador valor, limite : N valor < limite O espaço de estados aqui é formado por todas as instâncias do contador que obedecem a invariante 0 valor < limite do relacionamento entre os atributos valor e limite

Notação Z - Decoração Para uma especificação descrever sistemas é necessário um estado inicial IniciaContador Contador valor = 0 limite = 100 Teorema: Contador IniciaContador

Notação Z - Decoração Uma operação especifica um estado anterior e posterior sobre um espaço de estados O símbolo ' identifica o estado final Incrementa Contador Contador ' valor ' = valor + 1 limite ' = limite As invariantes de relacionamentos devem ser mantidas antes e depois da operação

Notação Z - Decoração Uma operação pode conter valores de entrada e saída Valores de entrada são decorados no esquema que descreve a operação com o símbolo '?' Add Contador Contador ' incr? : N valor ' = valor + incr? limite' = limite

Notação Z - Decoração Valores de saída são decorados no esquema que descreve a operação com o símbolo '!' AddComRetorno Contador Contador ' incr? : N retorno! : N valor ' = valor + incr? limite' = limite retorno! = valor '

Notação Z - Decoração O símbolo é usado para abreviar a escrita de operações em que há mudança de estado É apenas uma convenção, não é uma operação Contador valor, limite : N valor < limite Incrementa Contador valor ' = valor + 1 limite ' = limite Incrementa valor, limite : N valor ', limite ' : N valor < limite valor ' < limite ' valor ' = valor + 1 limite ' = limite

Notação Z - Decoração O símbolo Ξ é usado para abreviar a escrita de operações em que não há mudança de estado Como, é apenas uma convenção, não é uma operação Contador valor, limite : N valor < limite Incrementa Contador valor ' = valor + 1 limite ' = limite RetornaAposIncrementa Ξ Incrementa retorno! : N retorno! = valor ' RetornaAposIncrementa valor, limite : N valor ', limite ': N retorno! : N valor < limite valor ' < limite ' valor ' = valor + 1 limite ' = limite retorno! = valor '

Notação Z - Exemplo Exemplo do livro de aniversário Uma agenda para armazenar nomes e datas de aniversário [NOME, DATA] Livro lnome : P NOME aniverisario : lnomes DATA lnome = dom aniversario

Notação Z - Exemplo Adicionar um novo nome no livro AdicionaNoLivro Livro nome? : NOME data? : DATA nome? lnome aniversario ' = aniversario {nome? data?}

Notação Z - Exemplo Encontrar uma data de aniversário EncontrarAniversario Ξ Livro nome? : NAME data! : DATA nome? lnome data! = aniversario(nome?)

Notação Z - Exemplo Lembrete Lembrete Ξ Livro dia? : DATA aniversariantes! : P NOME aniversariantes! = {a : lnome aniversario(a) = dia?}

Notação Z - Exemplo Estado inicial Inicializacao Livro lnome =

Notação Z - Exemplo A especificação está correta, mas não considera entrada de dados não esperados Adição de nomes que já existem Busca de nomes que não existem O sistema deve parar? Deve continuar operando e desconsiderar entrada de dados não esperadas?

Notação Z - Exemplo Especificação adicional Identificação de possíveis erros/exceções Cada operação vai possuir uma saída resultado! Operações com sucesso retornam ok Os outros retornos são entrada_existente ou entrada_nao_existente RETORNO = {ok, entrada_existente,entrada_nao_existente}

Notação Z - Exemplo Retorno de sucesso para a opreação AdicionaNoLivro O retorno é ok AdicionaNoLivro Livro nome? : NAME data? : DATA Sucesso resultado! : RETORNO resultado! = ok nome? lnome aniversario ' = aniversario {nome? data?} AdicionaNoLivro Sucesso

Notação Z - Exemplo Para completar a operação AdicionaNoLivro falta considerar o caso de que uma entrada existir EntradaExistente Ξ Livro nome? : NOME resultado! : RETORNO nome? lnome resultado! = entrada_existente

Notação Z - Exemplo Um esquema AdicionarNoLivro mais robusto NovoAdicionarNoLivro = ^ AdicionaNoLivro Livro nome? : NAME data? : DATA nome? lnome aniversario ' = aniversario {nome? data?} Sucesso resultado! : RETORNO resultado! = ok EntradaExistente Ξ Livro nome? : NOME resultado! : RETORNO nome? lnome resultado! = entrada_existente (AdicionaNoLivro Sucesso) EntradaExistente NovoAdicionarNoLivro Livro nome? : NOME data? : DATA resultado! : RETORNO (nome? lnome aniversario ' = aniversario {nome? data?} resultado! = ok) (nome? lnome aniversario ' = aniversario resultado! = entrada_existente)

Notação Z - Exemplo No caso da operação EncontrarAniversario o nome pode não existir EncontrarAniversario Ξ Livro nome? : NAME data! : DATA nome? lnome data! = aniversario(nome?) EntradaNaoExistente Ξ Livro nome? : NOME resultado! : RETORNO nome? lnome resultado! = entrada_nao_existente NovoEncontrarAniversario = ^ (EncontrarAniversario Sucesso) EntradaNaoExistente

Notação Z - Exemplo No caso da operação Lembrete não há erro a ser registrado Se não existe aniversariante na data passada, o retorno é um conjunto vazio Lembrete Ξ Livro dia? : DATA aniversariantes! : P NOME aniversariantes! = {a : lnome aniversario(a) = dia?} Sucesso resultado! : RETORNO resultado! = ok NovoLembrete = ^ Lembrete Sucesso

Exemplo - Login Conta de usuário Criar operação para adicionar usuário Criar operação para excluir usuário Criar operação para listar senha de usuário Caracter = {a, b, c, d,..., z} Login nome : seq1 Caracter senha : seq1 Caracter nome senha #senha < 8

Exemplo - Login Conta de usuário Criar operação para adicionar usuário Caracter = {a, b, c, d,..., z} Login nome : seq1 Caracter senha : seq1 Caracter nome senha #senha < 8 ListaLogins llogins : P Login AddLogin ListaLogins l? : Login l1,l2 : Login l1 llogins l2 llogins l1.nome = l2.nome l1 = l2 l : Login l llogins l.nome l?.nome llogins ' = llogin {l?}

Exemplo - Login Conta de usuário Criar operação para excluir usuário Caracter = {a, b, c, d,..., z} Login nome : seq1 Caracter senha : seq1 Caracter nome senha #senha < 8 ListaLogins llogins : P Login DelLogin ListaLogins nome? : seq1 Caracter l1,l2 : Login l1 llogins l2 llogins l1.nome = l2.nome l1 = l2 llogins ' = llogins \ {l : Login l llogin l.nome = nome? l}

Exemplo - Login Criar operação para listar senha de usuário Caracter = {a, b, c, d,..., z} Login nome : seq1 Caracter senha : seq1 Caracter nome senha #senha < 8 ListaLogins llogins : P Login l1,l2 : Login l1 llogins l2 llogin l1.nome = l2.nome l1 = l2 ListSenha Ξ ListaLogins nome? : seq1 Caracter lsenhas! : P (seq1 Caracter) lsenhas! = {s : seq1 Caracter l Login l.nome = nome? l.senha}