Refinamento Motivação e Objetivos –Tornar especificações mais concretas (mais próximas de uma implementação) que as desenvolvidas inicialmente –Aumentar.

Slides:



Advertisements
Apresentações semelhantes
ESTRUTURA DE DADOS Professor: Marcelo Mendes Turma: MBI-1
Advertisements

Introdução a Algoritmos
Introdução à Ciência da Computação Linguagens de Programação.
Algoritmo Exemplo: faça um algoritmo para tocar todas as músicas de um cd. Após o usuário apertar o play Algoritmo Para as músicas de 1 até última música.
Aula 8 Contratos.
Amintas engenharia.
Especificação de Processos
Engenharia de Software
Sinais e Sistemas – Capítulo 4
Lógicas em Dedução Natural
INE Fundamentos de Matemática Discreta para a Computação
1 MergeSort Seja uma lista A de n elementos. O algoritmo consiste das seguintes fases Dividir A em 2 sub-listas de tamanho n/2 Conquistar: ordenar cada.
Lógica de Programação Módulo II
Padrões GoF – Factory Method
Estruturas de Controle
SIMULAÇÃO EM COMPUTADOR: O PENSAMENTO COMO PROCESSAMENTO DE INFORMÇÕES
Complexidade de Algoritmos
Noções de Estrutura de Dados Logica de Programação
Comandos condicionais
DEDUÇÃO NO CÁLCULO PROPOSICIONAL
Linguagem de 1ª ordem da teoria de conjuntos
INF 1771 – Inteligência Artificial
3 - Equações Lineares de Segunda Ordem
Introdução a Programação
RELAÇÕES.
Estabilidade e Estacionariedade em Séries Temporais
Diagrama de Atividades
PROGRAMAÇÃO I UNIDADE 1.
Paradigma de Divisão e Conquista
Universidade Federal de Alagoas – UFAL Centro de Tecnologia – CTEC
Desenvolvimento de Jogos e Entretenimento Digital
Linguagem de programação
Modelos Matemáticos Usados como tipos em especificações baseadas em modelos Apresentados como teorias ou sistemas formais Uma teoria é definida em termos.
Refinamento de Dados Estende o refinamento de operações –O estado da especificação abstrata pode ser diferente do concreto –Viabiliza a troca de tipos.
Curso Prático de Métodos Formais Refinamentos de Especificações em Z (Alexandre Mota e Augusto Sampaio)
CSP: Semântica e Refinamento
Curso Prático de Métodos Formais
Erick Luis Moraes de Sousa
Inteligência Artificial
PROPRIEDADES DA ADIÇÃO
Prof. Mateus Raeder Professor.unisinos.br/mraeder
ALGORITMOS Intensivo Janeiro e Fevereiro de 2011
Controle de Concorrência Locks. Conceito de Transação Transações podem ser vistas como um grupo de operações combinadas em uma unidade lógica de trabalho.
Princípios da Programação em Prolog
Iteração – Capítulo 5 Programming from Specifications Carroll Morgan Prentice-Hall, 1994 Integrantes: Alex Motta Carlos Nascimento Paulo Maia.
Programação de PIC em C Exposição das funções básicas para
ANÁLISE ESTATÍSTICA II
Métodos Formais.
Cálculo Relacional.
Algoritmos e Estrutura de Dados I
Redução.
Resolução de Problemas de Busca
Decidibilidade, Corretude, Completude, Consistência
A Linguagem Formal de Especificação VDM-SL
Fundamentos de linguagens de programação
Curso Prático de Métodos Formais Revisando Pré-Condições e Provando Refinamentos de Especificações em Z (Alexandre Mota e Augusto Sampaio)
Decidibilidade, Corretude, Completude, Consistência, Monotonicidade
Programas e Refinamento Programming from Specifications Carroll Morgan Prentice-Hall, 1994 [Capítulo 1] Equipe: Klaus Cavalcante Tarcísio Quirino Raquel.
Algoritmos em Grafos Celso C. Ribeiro Caroline T. Rocha.
Paulo Borba e Augusto Sampaio Departamento de Informática Universidade Federal de Pernambuco Especificação de Sistemas Distribuídos Parte 2.
Trabalho Cálculo Numérico º Trabalho 1) Implementar um programa em linguagem C que converta números binários (inteiros e fracionários) para a.
Professora: Kelly de Paula Cunha
Computador Simplificado
Influencias sobre o Projeto da Linguagem
Computadores vs. Programas / Algoritmos Computadores vs. Programas -> Algoritmos O tratamento de problemas através do computador geralmente envolve uma.
Linguagem de Programação
Fundamentos de Engenharia de SW Diagramas da UML Usados no Projeto de Software.
1 Estruturas de Controle Algoritmos Algoritmos –Série de ações em uma ordem específica As ações executadas Ordem na qual as ações são executadas.
Introdução a Programação Aula 02 Jackson Eduardo
Conteúdo de Laços de Repetição para os alunos do 7º ano EVL.
Transcrição da apresentação:

Refinamento Motivação e Objetivos –Tornar especificações mais concretas (mais próximas de uma implementação) que as desenvolvidas inicialmente –Aumentar a aplicabilidade das operações das especificações (enfraquecimento da pré-condição) –Reduzir o não-determinismo de especificações abstratas (fortalecimento da pós-condição)

Etapas de Refinamento: Uma Abordagem Especificação Abstrata Inicial (em Z) Especificação Concreta (em Z) Algoritmo (Descrição Lógica) Código Intermediário (Comandos com Guarda) Implementação (PASCAL, C, Java,...) Refinamento de Dados Traduz-se no “Cálculo de Refinamentos” Refinamento de Operações Traduz-se numa Linguagem Destino

Refinamento entre Especificações Refinar uma especificação até obter um programa usualmente envolve uma série de passos intermediários O refinamento é estabelecido como uma relação entre especificações A relação de refinamento permite que o refinamento seja feito passo a passo Especificação Inicial SD1D1 DnDn P... Etapas de Projeto Programa

Refinamento entre Especificações A relação de refinamento deve ser uma ordem parcial, possuindo as seguintes propriedades: 1.  S  S S(Reflexiva) 2.  S, T  S T  T S  S = T(Anti-Simétrica) 3.  S, T, U  S T  T U  S U(Transitiva) 4.  S, T  S T  C[S] C[T](Monotônica)

A propriedade de reflexividade é importante para o auto referenciamento das operações A propriedade de anti-simetria é importante para simplificar as provas necessárias: A propriedade de transitividade é importante para que o programa final seja um refinamento da especificação original (refinamento passo a passo) Refinamento entre Especificações STTSTS abbaba      

A propriedade monotonicidade nos permite realizar refinamentos por etapas Refinamento é usualmente dividido em: –Refinamento de operações –Refinamento de dados SRS SSP SSSS PS    3;2;1 3;2;1 11

Refinamento de Operações Programas e especificações formais podem ser vistos como dentro da mesma categoria –A diferença é que um executa num computador (código) e outro não (design). –Torna-se necessário então desenvolver uma maneira de, a partir de uma especificação abstrata, chegar numa especificação implementável –O número de etapas depende do tipo de especificação em questão

Refinamento de Operações Operações descritas como predicados na especificação deverão ser mapeadas para algoritmos na linguagem de programação escolhida O fundamental nisso tudo é que o resultado dessa alteração não modifique as propriedades da especificação original

Refinamento de Operações Seja COP uma operação concreta que refinada uma operação abstrata AOP –Para que isso seja verdade, precisamos provar que: A pré-condição de COP precisa ser mais flexível ou igual a pré de AOP. Isto é, COP estará habilitada ao menos sempre que AOP esteja (pré-condição mais fraca) COP precisa ser mais determinística ou igual a AOP. Isto é, o número de estados gerados por COP deve ser menor ou igual aos estados gerados por AOP (pós-condição mais forte) –Note que como conseqüência das hipóteses acima, temos que COP tem que terminar com sucesso sempre que AOP terminar com sucesso

Refinamento de Operações: Obrigações de Prova Expressemos então essas condições formalmente através do uso de predicados: A segunda obrigação de prova é análoga à seguinte fórmula do cálculo de refinamento AOPCOPpre AOP pre COPpre AOP   pos AOPpos COP 

Refinamento de Operações Temos que provar esses dois predicados como teoremas para todas as operações definidas –Um caso particular é o da inicialização do estado Referências –The Z notation. Capítulo 5 –Z/Eves User’s Guide. Capítulo 3