VinBR

Verificação 06/03/2012

Mar 13th, 2012
50
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.94 KB | None | 0 0
  1.  
  2. # # # # # # # # # # # # #
  3. # Verificação Automatica #
  4. # Prof. Sérgio Campos #
  5. # notasdogarcia.blog.com #
  6. # # # # # # # # # # # # #
  7.  
  8. // Primeira aula teve uma explicação básica do que é a materia
  9. // e teve vários exemplos onde erros na computação geraram problemas grandes.
  10. // Básicamente a materia é sobre quais são os métodos seguros para se verificar erros de programação
  11. // e como utiliza-los.
  12.  
  13. Onde um erro pode estar escondido?
  14. - No Código
  15. - No Compilador
  16. - No SO
  17. - No Hardware
  18.  
  19. O que pode ser feito para se verificar erros??
  20. Pode-se criar modelos matematicos que provem que ta tudo certo.
  21.  
  22. O modelo que é criado é um modelo que defina o estado do programa e as relações de transição.
  23.  
  24. Esse modelo pode então ser usado para fazer a prova.
  25.  
  26. Uma prova dessas pode ser feita:
  27. - À mão
  28. - De forma semi-automatica
  29. - De forma totalmente automatica.
  30.  
  31. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  32.  
  33. Isso funciona? Mais ou menos
  34.  
  35. E se o modelo estiver errado? Se voce perguntar algo que não é o que voce queria saber?
  36.  
  37. Voce pode provar algo que não era o seu problema real.
  38.  
  39. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  40.  
  41. O problema de testes é que testando voce encontra erros comuns, erros que seriam fáceis de achar.
  42.  
  43. O verificador automatico ele caminha testando todas as possibilidades possíveis e encontra erros incomuns,
  44. o problema disso é que o número de possibilidades é grande de mais para voce testar todas dessa forma.
  45.  
  46. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  47.  
  48. Hoje em dia essas verificações são feitas dividindo-se o código em várias sub-partes e testando-se cada uma separadamente.
  49. Assim o número de possibilidades de entradas não fica tão imenso.
  50.  
  51. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  52.  
  53. // No fim da decada de 60 já se preocupavam com isso, houve uma conferencia da OTAN a respeito da "Crise do Software"
  54.  
  55. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  56.  
  57. Tripla de Hoare: P | S | Q
  58.  
  59. Ela é dada pelos 3 elementos:
  60. - Pre-condição P.
  61. - Processo S.
  62. - Pós-condição Q.
  63.  
  64. Ela é um modelo lógico que assume que se P é verdadeiro e S executou até o final então agora Q é verdadeiro.
  65.  
  66. Essa idéia é importante porque voce pode analisar o código linha por linha, basta identificar os elementos de P e de Q.
  67. Isso é chamado de raciocinio composicional, ou seja voce divide os testes totais em vários pequenos testes.
  68.  
  69. // Nota Solta: Essa aula não tem prova. apenas projetos.
  70.  
  71. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  72.  
  73. Logica temporal e Reatividade de sistemas.
  74.  
  75. Isso é uma coisa do tipo, se A || B então no futuro C vai acontecer.
  76.  
  77. É uma variação da Tripla de Hoare, que funciona bem para algoritimos em paralelo onde voce não sabe bem quando algo vai acontecer, mas sabe que vai.
  78. // Voce não sabe quando porque voce não pode saber qual dos dois programas paralelos vai trabalhar primeiro, o que deixa tudo confuso.
  79.  
  80. Essa lógica permite que voce pense sobre programas em paralelo.
  81.  
  82. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  83.  
  84. Model Checking
  85. 1 - Especifique propriedades em logica temporal.
  86. 2 - Construa um modelo de estado finito explicitamente. (ou seja liste todas as possibilidades)
  87. 3 - Cheque se o modelo satisfaz a especificação para cada possibilidade.
  88. 4 - Encontre contra exemplos quando o modelo tiver erros.
  89.  
  90. É expressivo, composicional (baseado em Lógica Temporal) e portanto é eficiente e linear em relação ao tamanho do modelo.
  91.  
  92. * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *
  93.  
  94. Verificação formal é tão importante hoje que é considerado essencial para muitas grandes empresas.
  95.  
  96. Existem ainda empresas cujo o porduto é a verificação formal.
  97.  
  98. É portanto um assunto sem o qual a computação atual não vai sobreviver.
  99.  
  100. A ferramenta que utilizaremos no curso, é o NUSMV, o professor aconselhou-nos a pesquisar sobre com antecedencia se tivermos interesse.
Advertisement
Add Comment
Please, Sign In to add comment