Italian subtitles

← 02-42 Primi Passi

Get Embed Code
4 Languages

Showing Revision 1 created 02/18/2013 by fabio.

  1. Supponi di avere questo programma grande grande senza nessun controllo di runtime
  2. e supponi di doverne fare il debugging.
  3. Da quale punto del programma dovresti partire?
  4. La prima cosa che ti consiglio di fare e' di definire delle invarianti dei dati.
  5. Cio' coprira' immediatamente gran parte della situazione del programma e catturera' tanti e tanti difetti.
  6. La cosa successiva e' di dotarlo di precondizioni, che verifichino le invarianti dei dati, ovviamente,
  7. ma che verifichino pure precondizioni specifiche per le funzioni di ausilio.
  8. Infine, aggiungere delle postcondizioni in ogni metodo su cui hai dei sospetti.
  9. Inizia con delle condizioni parziali e quindi espandile sempre di piu'
  10. per afferrarne sempre piu' il corretto comportamento.
  11. Perche' iniziamo dalle invarianti dei dati nelle precondizioni?
  12. Beh, perche' sono generalmente piu' facili da scrivere, catturano molti bug
  13. e perche' a noi interessa solo se un metodo funziona o meno,
  14. se riceve proprio l'argomento giusto ed e' nella giusta situazione inziale.
  15. Soprattutto se stai usando C o C++, esegui una verifica completa delle invarianti di sistema.
  16. Tu dovresti eseguire una verifica completa delle invarianti di sistema. per il semplice motivo
  17. che controllera' se c'e' qualunque tipo di memory corruption
  18. e se il tuo programma ha un qualche problema di memory corruption
  19. tutte le altre asserzioni verrebbero annullate in quanto darebbero risultati imprevisti.
  20. Uno strumento come Valgrind in esecuzione, puo' scovare tanti e tanti problemi di memoria
  21. e tutto quello che serve e' lanciare il programma solo una volta con Valgring attivato.
  22. Un mio collega, e' recentemente passato dall'accademia ad un'azienda petrolifera
  23. ed era il responsabile dei test.
  24. Ha introdotto la prima asserzione in assoluto nel loro codice
  25. e immediatamente, questa singola asserzione ha scoperto dozzine di bug.
  26. Gli ingegneri restarono sbalorditi.
  27. Non avevano mai visto niente di simile prima e queste sono belle esperienze.
  28. Beh, non sono del tutto sicuro se tu debba provare la stessa esperienza,
  29. ma se intendi continuare ad usare codice privo di asserzioni,
  30. prova ad aggiungerne qualcuna e resterai sorpreso.
  31. Perche' dovremmo iniziare dalle invarianti dei dati? Questo e' il quiz.
  32. Prima opzione, coprono gran parte della situazione. Seconda opzione, vengono controllate di frequente.
  33. Formano pre e postcondizioni implicite
  34. perche' le invarianti dei dati dovrebbero reggere sia all'inizio che alla fine di ogni metodo pubblico.
  35. Opzione finale, forniscono della utile documentazione
  36. perche' documentano esattamente come sono organizzate le strutture dati
  37. e quali presupposti i programmatori non dovrebbero violare.
  38. Indica tu quelle che sono giuste.