Resumos

Apontamentos universitários em formato Markdown do Obsidian.

Verifica e validazione (V&V)

download Descarregar MD

Con la verifica il software deve essere conforme alle sue specifiche. Per esempio ci dobbiamo fare la domanda "stiamo costruendo il prodotto giusto?".

Con la validazione il software dovrebbe fare ciò che l'utente richiede realmente. Per esempio ci dobbiamo fare la domanda "stiamo costruendo il prodotto giusto?".

Il processo V&V è un intero processo del ciclo di vita e deve essere applicato in ogni fase del processo software.

Ha due obiettivi principali: la scoperta di difetti in un sistema e la valutazione dell'utilità o meno del sistema in una situazione operativa.

V&V dovrebbe stabilire con certezza che il software è adatto allo scopo anche se non è privo di difetti: per questo motivo, deve essere sufficientemente buono per l'uso previsto.

La fiducia del V&V dipende dallo scopo del sistema, dalle aspettative degli utenti e dall'ambiente di marketing:

  • Funzione software: il livello di fiducia dipende da quanto il software è critico per un'organizzazione;
  • Aspettative degli utenti: gli utenti possono avere aspettative basse su alcuni tipi di software.
  • Ambiente di marketing: portare un prodotto sul mercato in anticipo può essere più importante che trovare difetti nel programma.

In sintesi, avere un sistema è più importante di avere un sistema perfetto.

Verifica statica e dinamica

Come si fa la verifica del software? Ispezione (statico, aprire il codice e leggerlo) o testing (dinamico, scrivere casi). Nel dettaglio:

  • Ispezioni software: interessato all'analisi della rappresentazione del sistema statico per scoprire problemi (verifica statica): può essere integrato da documenti basati su strumenti e analisi del codice;
  • Test del software: preoccupato per l'esercizio e l'osservazione del comportamento del prodotto (verifica dinamica): il sistema viene eseguito con i dati di test e viene osservato il suo comportamento operativo.

Test del programma

Può rivelare la presenza di errori NON la loro assenza.

L'unica tecnica di convalida per i requisiti non funzionali poiché il software deve essere eseguito per vedere come si comporta.

Dovrebbe essere usato insieme alla verifica statica per fornire una copertura V&V completa.

Abbiamo due tipi di test:

  • Defect testing: test progettati per scoprire i difetti del sistema. Un test dei difetti di successo è quello che rivela la presenza di difetti in un sistema;
  • Validation testing: destinato a dimostrare che il software soddisfa i suoi requisiti. Un test di successo è quello che dimostra che un requisito è stato implementato correttamente.

Testing e debugging

Il test dei difetti e il debug sono processi distinti. La verifica e la convalida riguardano l'accertamento dell'esistenza di difetti in un programma. Il debug si occupa di individuare e riparare questi errori. Il debug comporta la formulazione di un'ipotesi sul comportamento del programma, quindi il test di queste ipotesi per trovare l'errore di sistema.

Piano di test del software

  • Processo di test: una descrizione delle fasi principali del processo di test. Potrebbero essere come descritto in precedenza in questo capitolo;
  • Tracciabilità dei requisiti: gli utenti sono più interessati al fatto che il sistema soddisfi i suoi requisiti e i test dovrebbero essere pianificati in modo che tutti i requisiti siano testati individualmente;
  • Articoli testati: devono essere specificati i prodotti del processo software che devono essere testati;
  • Programma di test: un programma di test generale e l'allocazione delle risorse per questo programma. Questo, ovviamente, è legato alla più generale tempistica di sviluppo del progetto;
  • Procedure di registrazione dei test: non è sufficiente eseguire semplicemente i test. I risultati delle prove devono essere sistematicamente registrati. Deve essere possibile verificare il processo di test per verificare che sia stato eseguito correttamente;
  • Requisiti hardware e software: questa sezione dovrebbe definire gli strumenti software necessari e l'utilizzo stimato dell'hardware;
  • Vincoli: in questa sezione dovrebbero essere anticipati i vincoli che influenzano il processo di test, come la carenza di personale.

Ispezioni software

Si tratta di persone che esaminano la rappresentazione della fonte con l'obiettivo di scoprire anomalie e difetti.

Le ispezioni non richiedono l'esecuzione di un sistema, quindi possono essere utilizzate prima dell'implementazione.

Possono essere applicati a qualsiasi rappresentazione del sistema (requisiti, progettazione, dati di configurazione, dati di test, ecc.).

Hanno dimostrato che è una tecnica efficace per scoprire gli errori del programma.

Successo dell'ispezione

Molti difetti diversi possono essere scoperti in un'unica ispezione: nei test, un difetto può mascherarne un altro, quindi sono necessarie diverse esecuzioni.

Quindi, è probabile che i revisori abbiano visto i tipi di errore che si verificano comunemente.

Ispezioni e test

Ispezioni e prove sono tecniche di verifica complementari e non opposte. Entrambi dovrebbero essere usati durante il processo V&V.

Le ispezioni possono verificare la conformità a una specifica ma non la conformità ai reali requisiti del cliente.

Le ispezioni non possono verificare caratteristiche non funzionali come prestazioni, usabilità, ecc.

Ispezioni del programma

Approccio formalizzato alle revisioni dei documenti. Destinato esplicitamente al rilevamento dei difetti (non alla correzione).

I difetti possono essere errori logici, anomalie nel codice che potrebbero indicare una condizione errata (es. una variabile non inizializzata) o non conformità agli standard.

Prerequisiti per l'ispezione

  • Deve essere disponibile una specifica precisa;
  • I membri del team devono avere familiarità con gli standard della organizzazione;
  • Deve essere disponibile codice sintatticamente corretto o altre rappresentazioni di sistema;
  • Dovrebbe essere preparata una lista di controllo degli errori;
  • La direzione deve accettare che l'ispezione aumenterà i costi nelle prime fasi del processo software;
  • La direzione non dovrebbe utilizzare le ispezioni per la valutazione del personale, ad esempio per scoprire chi commette errori.

Procedura di ispezione

  • Panoramica del sistema presentata al team di ispezione;
  • Il codice dei documenti associati vengono distribuiti in anticipo al team di ispezione;
  • Ha luogo l'ispezione e gli errori rilevati vengono annotati;
  • Vengono apportate modifiche per riparare gli errori rilevati;
  • La nuova ispezione può essere richiesta o meno.

Utilizzo dell'analisi statica automatica

Particolarmente prezioso quando viene utilizzato un linguaggio come C che ha una tipizzazione debole e quindi molti errori non vengono rilevati dal compilatore,

Meno conveniente per linguaggi come Java che hanno un forte controllo del tipo e possono quindi rilevare molti errori durante la compilazione.

Verifica e metodi formali

I metodi formali possono essere utilizzati quando viene prodotta una specifica matematica del sistema. Sono l'ultima tecnica di verifica statica.

Implicano un'analisi matematica dettagliata della specifica e possono sviluppare argomenti formali che un programma è conforme alla sua specifica matematica.

Sviluppo software "Cleanroom"

Il nome deriva dal processo "Cleanroom" nella fabbricazione dei semiconduttori. La filosofia è evitare i difetti piuttosto che rimuoverli.

Questo processo di sviluppo del software si basa su sviluppo incrementale, specifica formale, verifica statica utilizzando argomenti di correttezza e test statistici per determinare l'affidabilità del programma.