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

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

Lógica para Computação (IF61B) Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng.

Apresentações semelhantes


Apresentação em tema: "Lógica para Computação (IF61B) Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng."— Transcrição da apresentação:

1 Lógica para Computação (IF61B) Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng.

2 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner2 Especificação de programas Engenharia de Requisitos: como entender e modelar um problema real para obter uma solução computacional; Engenharia de Software: é uma área da Computação voltada à especificação, desenvolvimento e manutenção de sistemas de software, com aplicação de tecnologias e práticas de gerência de projetos e outras disciplinas, visando organização, produtividade e qualidade.

3 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner3 Especificação de programas Uma tarefa típica em Computação: problema real computacional Modelagem

4 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner4 Especificação de programas Especificações em linguagem natural exigem que se assuma o significado de diversos termos, e por isto são imprecisas / vagos / inconsistentes permitindo diversas interpretações; Este é um problema amplamente estudado em Engenharia de Software, que busca de métodos e formalismos tenta eliminar / reduzir este problema.

5 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner5 Especificação de programas Visão operacional de um programa: dados de dados de entrada saída Programas como transformadores de estados:... programa 1 = {v 1 1,v v 1 m } = {v 2 1,v v 2 m } = {v n 1,v n 2...v n m }

6 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner6 Especificação de programas Especificação de propriedades de programas: Exemplo: dados dois valores (x e y) inteiros maiores ou iguais a 10 calcular sua soma (z); Especificação 1: –sobre o estado inicial: x 10 y 10 –sobre o estado final: z = x + y

7 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner7 Especificação de programas Especificação de propriedades de programas: Exemplo: dados dois valores (x e y) inteiros maiores ou iguais a 10 calcular sua soma (z); Especificação 2 (superespecificação): –sobre o estado inicial: x 10 y 10 (x + y) 0 –sobre o estado final: z = x + y z 20

8 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner8 Especificação de programas Especificação de propriedades de programas: Exemplo: dados dois valores (x e y) inteiros maiores ou iguais a 10 calcular sua soma (z); Especificação 3 (especificação pouco clara): –sobre o estado inicial: x 10 (x + y) (10 + x) –sobre o estado final: z = x + y

9 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner9 Especificação de programas Especificação de propriedades de programas: Exemplo: dados dois valores (x e y) inteiros maiores ou iguais a 10 calcular sua soma (z); Especificação 4 (especificação incompleta): –sobre o estado inicial: x 10 –sobre o estado final: z = x + y

10 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner10 Especificação de programas Especificação de propriedades de programas: Exemplo: dados dois valores (x e y) inteiros maiores ou iguais a 10 calcular sua soma (z); Especificação 5 (não é especificação...): –sobre o estado inicial: x 10 y 10 –sobre o estado final: z = x + y z < 10

11 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner11 Especificação de programas Vantagens de se ter uma especificação definida por formalismo matemático: 1.Precisão: a linguagem matemática é precisa e identifica um significado único para cada propriedade; 2.Verificação de consistência: a linguagem matemática nos possibilita verificar inconsistências nas especificações quando há propriedades contraditórias sobre um mesmo objeto;

12 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner12 Especificação de programas 3.Simulação: especificações em algumas linguagens matemáticas podem ser parcialmente executáveis, auxiliando a verificação; 4.Verificação de programas: após a construção de um programa é possível – de forma automática ou semiautomática – verificar se esta é uma solução (ou satisfaz) a especificação do problema.

13 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner13 Especificação de programas Pode-se usar o Lógica Matemática como linguagem de especificação; Ver na referência (da Silva, Finger, de Melo) às páginas 165 a 169 o uso da Lógica Matemática como linguagem de especificação.

14 Lógica para Computação (IF61B) 7/4/2014Prof. Celso A A Kaestner14 Especificação de programas Sistematização das propriedades de programas: 1.Pré-condições: válidas sobre os dados de entrada; 2.Pós-condições: válidas sobre os dados de saída; 3.Invariantes: válidas sempre, durante toda a execução do programa.

15 Lógica para Computação (IF61B) Especificação de programas Exemplo: fatorial. 1 se n=0 n! =1sen=1 n*(n-1)! se n>1 PRE: n 0 POS: fat = n! fat > 0 INV: fat > 0 7/4/2014Prof. Celso A A Kaestner15

16 Lógica para Computação (IF61B) Verificação de Programas Os erros são comuns em programação; O funcionamento correto de um programa depende também dos dados fornecidos ao programa, isto é, se sua variação foi corretamente prevista; Deseja-se verificar se o programa desenvolvido atende à especificação e corrigi-lo se for o caso. 7/4/2014Prof. Celso A A Kaestner16

17 Lógica para Computação (IF61B) Verificação de Programas Exemplo: (Merge) dadas duas seqüências ordenadas de inteiros produzir nova seqüência ordenada que entrelace os números das duas seqüências: Entradas: V1 = {1,3,6,9} e V2 = {2,3,3,7,10} Saída: V3 = {1,2,3,3,6,7,9,10} 7/4/2014Prof. Celso A A Kaestner17

18 Lógica para Computação (IF61B) Verificação de Programas void merge(int V1[],V2[],V3[],t1,t2) {int p1=0,p2=0,p3=0; while(t1+t2>0) {if (V1[p1] > V2[p2]) {V3[p3]=V2[p2]; p2=p2+1; t2=t2-1;} else {V3[p3]=V1[p1]; p1=p1+1; t1=t1-1;} p3++;} } 7/4/2014Prof. Celso A A Kaestner18

19 Lógica para Computação (IF61B) Verificação de Programas Erro: se uma das seqüências for vazia há uma comparação indevida: if (v1[p1] > V2[p2]) Numa execução real haveria erro. Para a correção... Novo programa 7/4/2014Prof. Celso A A Kaestner19

20 Lógica para Computação (IF61B) Verificação de programas void merge(int V1[],V2[],V3[],t1,t2) {int p1=0,p2=0,p3=0; while(t1>0 && t2>0) {if (V1[p1] > V2[p2]) {V3[p3]=V2[p2]; p2=p2+1; t2=t2-1;} else {V3[p3]=V1[p1]; p1=p1+1; t1=t1-1;} p3++;} } 7/4/2014Prof. Celso A A Kaestner20

21 Lógica para Computação (IF61B) Verificação de programas Agora a comparação só ocorre se houver elementos nas listas; Porém: quando uma lista termina deixa-se de colocar os elementos restantes da outra lista na lista de saída. Um novo erro é introduzido ao se corrigir o erro inicial. Para a correção... Novo programa 7/4/2014Prof. Celso A A Kaestner21

22 Lógica para Computação (IF61B) Verificação de Programas void merge(int V1[],V2[],V3[],t1,t2) {int p1=0,p2=0,p3=0; while(t1>0 && t2>0) {if (V1[p1] > V2[p2]) {V3[p3]=V2[p2]; p2=p2+1; t2=t2-1;} else {V3[p3]=V1[p1]; p1=p1+1; t1=t1-1;} p3++;} ;(continua) 7/4/2014Prof. Celso A A Kaestner22

23 Lógica para Computação (IF61B) Verificação de Programas while (t1>0) {V3[p3]=V1[p1]; p1=p1+1; t1=t1-1; p3++;} while (t2>0) {V3[p3]=V2[p2]; p2=p2+1; t2=t2-1; p3++;} } O programa agora está OK. 7/4/2014Prof. Celso A A Kaestner23

24 Lógica para Computação (IF61B) Verificação de Programas Se tantos erros ocorrem em um programa tão simples, como proceder no caso de sistemas complexos ? Como determinar se um programa está correto ? Solução: minimizar os erros, por meio de alguns procedimentos. 7/4/2014Prof. Celso A A Kaestner24

25 Lógica para Computação (IF61B) Verificação de Programas Procedimentos utilizados para verificação: 1.Inspeção: segue-se a lógica do programa em busca de situações incorretas ou não previstas; 2.Teste de programas: alguns casos de teste são selecionados, em conjunto com dados de teste, sobre os quais o programa é executado e os resultados são verificados; não garante a correção total do programa. 7/4/2014Prof. Celso A A Kaestner25

26 Lógica para Computação (IF61B) Verificação de Programas Estratégias para produzir programas corretos (pg. 183): 1.Síntese: dada um especificação, um programa P é construído de forma automática ou semi- automática, por meio de transformação da especificação em P; 2. Verificação: Dada uma especificação e um programa P, mostrar que P é um modelo para (P satisfaz ). 7/4/2014Prof. Celso A A Kaestner26

27 Lógica para Computação (IF61B) Verificação de Programas Uso da verificação formal na prática: 1)Análise: Dado um programa P, encontrar uma especificação que defina o problema para o qual P é a solução; 2)Otimização: Dada uma especificação e um programa P que satisfaz, obter P equivalente a P que seja ótimo sob determinada medida de complexidade. 7/4/2014Prof. Celso A A Kaestner27

28 Lógica para Computação (IF61B) Verificação de Programas Exemplo de uma linguagem de programação (pg. 186); Um programa seqüencial é basicamente um transformador de dados do estado inicial ao estado final; Semântica operacional: indica o funcionamento de cada comando como transformador de estados; 7/4/2014Prof. Celso A A Kaestner28

29 Lógica para Computação (IF61B) Verificação de Programas Semântica operacional (notação): A execução de C sobre o estado produz o estado ; Exemplo: [m/x] 7/4/2014Prof. Celso A A Kaestner29

30 Lógica para Computação (IF61B) Verificação de Programas Tripla de Hoare: P para todo estado que satisfaz, se a execução de P sobre termina produzindo um estado que satisfaz ; Prova de programas: construir um sistema de provas para asserções do tipo |- P ? 7/4/2014Prof. Celso A A Kaestner30

31 Lógica para Computação (IF61B) Verificação de Programas Correção parcial: P é satisfeita sob correção parcial se para todos os estados que satisfazem o estado resultante da execução de P satisfaz, se P parar; Correção total: P é satisfeita sob correção total se para todos os estados que satisfazem o estado resultante da execução de P satisfaz e é garantido que P pára. 7/4/2014Prof. Celso A A Kaestner31

32 Lógica para Computação (IF61B) Verificação de Programas Correção parcial de programas (pg. 195); Sistema de inferência com regras de Hoare para a linguagem de programação apresentada, sob a forma de uma lógica e suas regras de inferência (pg. 196); Exemplos de provas (pg. 200 em diante). 7/4/2014Prof. Celso A A Kaestner32


Carregar ppt "Lógica para Computação (IF61B) Lógica para Computação Prof. Celso Antônio Alves Kaestner, Dr. Eng."

Apresentações semelhantes


Anúncios Google