A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programas e Refinamento Programming from Specifications Carroll Morgan Prentice-Hall, 1994 [Capítulo 1] Equipe: Klaus Cavalcante Tarcísio Quirino Raquel.

Apresentações semelhantes


Apresentação em tema: "Programas e Refinamento Programming from Specifications Carroll Morgan Prentice-Hall, 1994 [Capítulo 1] Equipe: Klaus Cavalcante Tarcísio Quirino Raquel."— Transcrição da apresentação:

1 Programas e Refinamento Programming from Specifications Carroll Morgan Prentice-Hall, 1994 [Capítulo 1] Equipe: Klaus Cavalcante Tarcísio Quirino Raquel Monteiro

2 Visão Tradicional Programa x Especificação Programas são executáveis, mas de difícil compreensão. Especificações são legíveis, de fácil entendimento, mas não são executáveis.

3 Uma Nova Visão Não há distinção entre especificações e programas Tudo é programa Nem todos os programas são executáveis Hierarquia de programação Programas abstratos Programas executáveis (código) Nível intermediário Projetos Mistura de construtores abstratos e concretos

4 Programas como Contratos: Refinamento Cliente Programador  Negociação Cliente -> Deseja: programas com maior precisão, rapidez e aplicabilidade em diferentes contextos. Programador -> Deseja: maior liberdade na implementação, bem como folga na seleção e apresentação de resultados; deseja ainda, mais informação sobre condições de execução do programa, além do acesso a técnicas de implementação, baratas e padronizadas.

5 Se para o cliente, o programa prog2 é melhor do que o programa prog1, então nós dizemos prog1  prog2 ou seja, prog2 “refina” prog1. Visão do cliente Exemplos: saída de 220V  saída de 220/110V resistente a chuva  resistente a 50m de profundidade precisa de 4Mb  precisa de 2Mb Programas como Contratos: Refinamento

6 Programas Abstratos Estados inicial e final Estado variáveis são nomes valores mapeamentos de variáveis para valores Um programa imperativo realiza modificações de estado estado final ação do programa estado inicial

7 Programas Abstratos Descrições de estado Exemplo de estado Variáveis x, y, e z Nós descrevemos estados ao invés de desenhá-los Dizemos que uma fórmula descreve um estado quando ela se faz verdadeira pelos mapeamentos do estado x = 2  x + z < y  z  4  x = 2  y = 17  z = 3 Um estado satisfaz uma fórmula se aquela fórmula o descreve xyzxyz 2 17 3

8 Cálculo de predicados Usamos o cálculo de predicados como linguagem de nossas formulas. Isto inclui: Termos ( variáveis, constantes, e funções ) Formulas atômicas ( uma composição entre termos e operadores relacionais, Ex.: =, =) Formulas proposicionais (uma composição entre formulas atômicas e conectivos proposicionais, Ex.: , , ¬, ,  ) Quantificadores ( ,  ) Quantificadores tipados [ (  x:T · A), (  x:T · A)]

9 Cálculo de predicados Os Operadores Vínculo A declaração F1 F2, significa: em qualquer estado, se F1 é verdade então F2 é verdade A declaração F1 F2, significa: em qualquer estado, F1 é verdade se F2 é verdade O Operador Equivalência A declaração F1 F2, significa: F1 verdadeiro SSE F2 verdadeiro

10 Programas Abstratos Especificações: A especificação é a principal característica dos programas abstratos w: [ pre, pos ] quadro ( w ): valores que podem ser modificados pré-condição ( pre ): descreve estados iniciais pós-condição ( pos ): descreve estados finais Exemplo: faça y a raiz quadrada de x desde que 0  x  9 y : [0  x  9, y ^ 2 = x ] (1.1) Uma especificação captura a intenção sem dar o método

11 Programas Abstratos Lei 1.1 Fortalecimento da pós-condição Se pos’ pos, então w :[ pre, pos]  w :[ pre, pos’]

12 Programas Abstratos Refinamento de especificações Uma especificação é melhorada pelo fortalecimento de sua pós-condição Exemplo: A especificação y : [0  x  9, y ^ 2 = x  y  ] (1.2) refina y : [0  x  9, y ^ 2 = x] (1.1)  (1.2) é melhor do que (1.1) pela lei 1.1

13 Programas Abstratos Lei 1.2 Enfraquecimento da pré-condição Se pre  pre’, então w :[ pre, pos]  w :[ pre’, pos]

14 Programas Abstratos Refinamento de especificações: Uma outra forma de melhoria é conseguida pelo enfraquecimento da pré-condição Exemplo: A especificação y : [x  0, y ^ 2 = x  y  ] (1.3) refina y : [0  x  9, y ^ 2 = x  y  ] (1.2)  (1.3) é melhor do que (1.2) pela lei 1.2

15 Exercício 1.Quais destes refinamentos são válidos? (Use enfraquecimento da pré-condição e fortalecimento da pós-condição)

16 Programas Executáveis Código Linguagem de especificação é muito expressiva Nenhum computador pode executar especificações Construtores executáveis (código) O Comando de Atribuição w := E Lei 1.3 Atribuição Se pre  pos[w\E], então w,x:[ pre, pos]  w := E O refinamento total, da especificação para o código; é feito em passos, cada qual introduzindo um pouco mais de executabilidade ou eficiência

17 Programas Viáveis Definição 1.4 Viabilidade A especificação w :[pre,pos] é viável se e somente se pre  w:T  pos) onde T é o tipo da variável w. Exemplo: y : [ true, y ^ 2 = x  y  ] (1.4) Isso seria como tentar provar que: true (  y:R ·  (y ^ 2 = x  y  Especificações inviáveis não podem ser implementadas

18 Algumas abreviações comuns Abreviação 1.5 Pré-condição default w :[pos] é uma abreviação para w :[ true, pos] Abreviação 1.6 Suposição (Assumption) {pre} é uma abreviação para :[ pre, true ]

19 Programas Executáveis Abreviação Exemplo: A especificação {0  x  9} y := sqr(x) (1.5) refina y : [0  x  9, y ^ 2 = x  y  ] (1.2)  (1.5) é melhor do que (1.2) pela Abreviação 1.6 Lei 1.7 Especificação simples w := E = w :[w = E]

20 Algumas abreviações comuns Lei 1.8 Absorção de suposição {pre’} w :[pre, pos] = w :[ pre’  pre, pos] Assim, uma suposição antes de uma especificação pode ser absorvida diretamente na pré-condição desta

21 Programas Extremos Abort w :[ false, true ] abort Choice w :[ true, true ] choose w Skip :[ true, true ] skip Mágica (inexequível) w :[ true, false ] magic A maioria destes programas não são escritos deliberadamente

22 Programas e Refinamento Programming from Specifications Carroll Morgan Prentice-Hall, 1994 [Capítulo 1] Equipe: Klaus Cavalcante Tarcísio Quirino Raquel Monteiro


Carregar ppt "Programas e Refinamento Programming from Specifications Carroll Morgan Prentice-Hall, 1994 [Capítulo 1] Equipe: Klaus Cavalcante Tarcísio Quirino Raquel."

Apresentações semelhantes


Anúncios Google