La qualità di un software può essere valutata in base alla sua struttura interna, oltre alla capacità di soddisfare le aspettative di funzionamento. Per comprendere meglio cosa andrebbe cercato in un software "eccellente" dobbiamo affidarci ad alcune ricerche svolte nel settore dell'ingegneria del software. Esistono infatti diversi fattori chiave da tenere a mente, parametri come tecnologie e metodologie che possono contribuire a determinare la qualità di un prodotto.

Parametri interni ed esterni

Esistono due categorie di parametri che contribuiscono alla realizzazione di un software di qualità, spesso interconnesse tra loro: le consideriamo di seguito con il nome di parametri interni e parametri esterni. La conoscenza di ogni punto di questo elenco è fondamentale per sviluppare software personalizzati performanti.

PARAMETRI ESTERNI
Riguardano la qualità percepita dall'utente finale, ovvero come il software viene percepito dalle persone che lo utilizzano.

  • Correttezza: capacità del software di fare esattamente ciò che era stato progettato di fare, e di soddisfare le esigenze del cliente in modo adeguato.
  • Robustezza: capacità del software di gestire in modo adeguato situazioni impreviste, come errori, interruzioni, ripristini o eccezioni di varia natura.
  • Affidabilità: probabilità che il software presenti gravi malfunzionamenti.
  • Efficienza: capacità del software di utilizzare le risorse in modo ottimale, senza sprechi o deterioramento delle prestazioni.
  • Usabilità: qualità soggettiva che indica la facilità d'uso del software per l'utente finale.
  • Scalabilità: un sistema è scalabile se può essere adattato a contesti differenti e a diverse complessità senza la necessità di riprogettarne l'intera struttura.

PARAMETRI INTERNI
Definiscono la qualità intrinseca del software "lato sviluppo", ovvero le sue caratteristiche interne che ne influenzano il funzionamento.

  • Verificabilità: facilità con cui le proprietà del software possono essere controllate e verificate.
  • Manutenibilità: facilità con cui un sistema può essere modificato e aggiornato nel tempo.
  • Riparabilità: facilità con cui gli errori presenti nel software possono essere corretti.
  • Evolvibilità: capacità di un sistema di evolvere e di essere modificato per soddisfare nuove esigenze o richieste.
  • Riusabilità: possibilità di riutilizzare componenti di un software per realizzarne un altro.
  • Portabilità: quanto è in grado di funzionare in ambienti differenti da quello originario (questo può rappresentare un vantaggio economico, poiché consente di utilizzare l'applicazione in diversi ambienti con facilità).