Carregar apresentação
A apresentação está carregando. Por favor, espere
PublicouMirela Cerda Alterado mais de 9 anos atrás
1
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)
2
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
3
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
4
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)
5
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
6
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
7
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
8
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
9
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
10
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
11
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
Apresentações semelhantes
© 2024 SlidePlayer.com.br Inc.
All rights reserved.