Cos’è e come si classifica un bug software?

Se ne sente parlare spesso, ma forse non tutti hanno una chiara idea di cosa sia esattamente: un bug è un errore nella scrittura di un programma software (anche se a volte questo termine viene usato anche per indicare un difetto di progettazione dal punto di vista dell’hardware).

Il bug, noto anche come baco, può essere più o meno grave a seconda delle circostanze: nei casi peggiori, può addirittura rendere i computer vulnerabili ed esposti a possibili attacchi informatici.

Più nello specifico, un bug di programma è un guasto, un errore che ha come conseguenza un cattivo funzionamento del software. In linea di massima, le origini dei bachi devono essere individuate nei codici sorgenti che vengono scritti dai programmatori, mentre più raramente possono essere dovute al compilatore. In inglese si usa l’espressione “buggy” per segnalare un programma caratterizzato da un numero elevato di bug che hanno l’effetto di interferire e compromettere la sua funzionalità: in italiano si dice, semplicemente, “bacato”.

Come detto, gli effetti dei bug possono essere variegati. A volte sono inesistenti o comunque non visibili perché incidono in maniera poco significativa sulle funzionalità del software, così da restare praticamente nascosti per molto tempo. Altre volte possono essere molto importanti, soprattutto se determinano un blocco del software o un crash, da cui deriva una negazione del servizio che si desidera ottenere.

Vi sono, poi, i cosiddetti bug di sicurezza, che teoricamente mettono a repentaglio la sicurezza dei dispositivi concedendo, per esempio, privilegi e accessi a utenti che non dovrebbero usufruirne.

Ovviamente, prevenire i bug è possibile: tutto dipende dalla fase di progettazione del software, ma anche dalla traduzione del codice sorgente, che consiste nella sua compilazione, nella sua assemblazione e nella sua interpretazione, senza dimenticare il momento dell’immissione dei dati.

Le possibilità che si verifichino degli errori, che essenzialmente sono causati da inaccortezze o sviste umane, non sono basse. È molto raro che sia un errore di sintassi a favorire la comparsa di un baco, in quanto il compilatore fermerebbe subito il processo di compilazione e avvertirebbe il programmatore in maniera immediata. Anche per questo motivo sono da ritenersi più rischiosi, e in un certo senso più subdoli, gli errori logici che si manifestano nella stesura degli algoritmi.

Per prevenire i bug si può fare affidamento, non di rado, sugli stessi linguaggi di programmazione, che possono comprendere funzionalità specifiche che consentono proprio di evitare errori. Un programmatore che dovesse impiegare una variabile di un tipo non corretto, per esempio, si troverebbe bloccato in quanto il codice, pur a fronte di una sintassi corretta, non riuscirebbe a compilare. Vi sono, poi, diversi strumenti che sono dedicati all’analisi del codice e che permettono agli sviluppatori di poter contare su un aiuto per controllare i testi.

Può capitare che il bug non abbia a che fare con un’istruzione singola ma che sia il frutto di un errore concettuale del programmatore. Si parla di errore di sintassi se è accompagnato da un messaggio prodotto dal compilatore, di errore di runtime se viene originata un’operazione non lecita da un insieme di dati e di errore logico se nell’algoritmo è stata compiuta una scelta erronea. Come si può immaginare, l’errore logico è quello più complicato da riconoscere, in quanto non viene emesso alcun messaggio di errore: lo si può individuare solo nel momento in cui l’algoritmo ottiene risultati che sono differenti da quelli previsti.

Condividi