Direi che ci sono tre tipi di bug del software.
- Errori di compilazione
- Errori di esecuzione
- Errori logici
Errori di compilazione
Direi che questo è il più insolito. Se ci fossero mai errori di compilazione che vengono spinti in produzione per un software, questo sarebbe orrendo. Sfortunatamente, l'ho visto accadere per diverse applicazioni che ho usato in passato. Potrebbe essere qualsiasi cosa, da variabili inesistenti, funzioni, ecc. Qualsiasi cosa che un compilatore avrebbe dovuto catturare prima che una persona spingesse il suo codice, ma forse invece stavano usando un editor di testo.
Erori a tempo di esecuzione
Gli errori a tempo di esecuzione sono operazioni che un programma cerca di fare ma che è impossibile eseguire. L'esempio più semplice è la divisione per 0. Si potrebbe avere una semplice linea di codice che fa la divisione, ma non considera che una variabile potrebbe essere 0. Compilerebbe bene ma a tempo di esecuzione, si otterrebbe un errore.
Errori logici
Definitamente un tipo di errore molto comune. A volte gli errori logici sono dovuti alle specifiche tecniche che un ingegnere del software riceve. Forse non hanno capito completamente come una caratteristica avrebbe dovuto essere implementata. Hanno pensato che dato x, si dovrebbe fare y, ma la realtà era che dato x, si dovrebbe fare z.
Altre volte, potrebbe essere la mancanza di test efficaci. Un ingegnere potrebbe pensare di aver testato tutti i possibili scenari in cui il suo codice dovrebbe funzionare e come catturare le aree in cui non funziona. Questo non è sempre il caso però.
Menzione d'onore
Bug "Non è ancora una caratteristica". Questo è quando qualcuno pensa che il software dovrebbe essere in grado di fare qualcosa, ma non lo fa. Un consumatore potrebbe pensare che si tratti di un bug, ma gli sviluppatori/product manager potrebbero averlo nel loro scopo per il futuro.