Bug è l’errore nel software.
Più precisamente è un problema che porta al malfunzionamento del software, per esempio producendo un risultato inatteso o errato, tipicamente dovuto a un errore nella scrittura del codice sorgente di un programma. E’ quindi in pratica un problema che fa si che un programma non funzioni come ci si aspetti.
Un programma contenente bug che interferiscono con la sua funzionalità è detto in gergo buggato, mentre l’atto di correzione dagli errori è detto debug o bugfixing.
Un bug può avere una grande varietà di effetti. Alcuni incidono poco sulla funzionalità del programma e quindi possono rimanere sconosciuti per lungo tempo. Al contrario, se il bug è abbastanza grave, può causare il crash o un blocco del programma che porta ad una negazione del servizio richiesto.
Altri, qualificati come bug della sicurezza, potrebbero consentire a un utente malintenzionato di aggirare i controlli di accesso, al fine di ottenere privilegi non autorizzati.
Durante lo sviluppo e l’esecuzione di un codice sorgente possono verificarsi i cosiddetti “errori di programmazione” che si possono distinguere essenzialmente in tre principali categorie:
- errori di sintassi: si commettono nella fase di scrittura del programma nel linguaggio scelto, fase successiva alla progettazione dell’algoritmo. Sono in genere errori di ortografia nella scrittura del codice o nell’uso delle istruzioni. Impediscono la compilazione del programma da parte del compilatore, che quindi segnala la presenza dell’errore.
- errori in esecuzione o di runtime: si verificano nella fase in cui il programma viene eseguito, anche se l’algoritmo è corretto e il codice viene compilato correttamente.
- errori nella logica del programma (o semantica): si commettono nella fase di progettazione o più spesso di implementazione dell’algoritmo. Possono essere causati da una mancata comprensione del problema da calcolare o dei vincoli che i dati devono rispettare, ecc.