La disintegrazione del razzo Ariane 5 37 secondi dopo il lancio nel suo viaggio inaugurale ( volo 501 ) viene comunemente definita come uno dei bug software più costosi della storia 1 :
L'Agenzia spaziale europea ha impiegato 10 anni e 7 miliardi di dollari per produrre Ariane 5, un razzo gigante in grado di lanciare in orbita una coppia di satelliti da tre tonnellate ad ogni lancio e destinato a dare all'Europa una schiacciante supremazia nel settore dello spazio commerciale.
Tutto quello che ci è voluto per far esplodere quel razzo a meno di un minuto nel suo viaggio inaugurale lo scorso giugno, spargendo macerie infuocate nelle paludi di mangrovie della Guyana francese, era un piccolo programma per computer che cercava di inserire un numero a 64 bit in uno spazio a 16 bit.
Un bug, un crash. Di tutte le linee trascurate di codice registrate negli annali dell'informatica, questa potrebbe essere la più devastantemente efficiente. Dalle interviste con esperti di rocketry e un'analisi preparata per l'agenzia spaziale, emerge un chiaro percorso da un errore aritmetico alla distruzione totale.
Quali importanti cambiamenti hanno causato il fallimento di Flight 501 e le successive indagini hanno ispirato la ricerca di sistemi critici per la sicurezza e test del software?
Non sto cercando una spiegazione del bug stesso, ma una spiegazione dell'impatto storico del bug, in termini di ricerca che sono stati ispirati o direttamente correlati alle indagini sul fallimento. Ad esempio, questo documento conclude:
Abbiamo utilizzato l'analisi statica per:
- controlla l'inizializzazione delle variabili,
- fornire l'elenco esaustivo di potenziali conflitti di accesso ai dati per variabili condivise,
- elenca in modo esaustivo i potenziali errori di runtime dalla semantica di Ada.
Per quanto ne sappiamo, questa è la prima volta che vengono utilizzate tecniche di analisi statica su base booleana e non su base booleana per convalidare i programmi industriali.
Allo stesso modo, questo documento (pdf) osserva:
Le analisi del programma statico basate sull'interpretazione astratta sono state utilizzate per l'analisi statica del software ADA incorporato del launcher Ariane 5 e dell'ARD. L'analizzatore di programmi statici mira al rilevamento automatico della defi- nità, potenzialità, impossibilità o inaccessibilità di errori di runtime come flussi scalari e di punti di galleggiamento, errori dell'indice di array, divisioni per zero e relative eccezioni aritmetiche, variabili non inizializzate, gare di dati su strutture di dati condivisi, ecc. L'analizzatore è stato in grado di rilevare automaticamente l'errore di volo Ariane 501. L'analisi statica di software di sicurezza integrati (come il software avionico) è molto promettente .
Mi piacerebbe una spiegazione approfondita dell'impatto che questo singolo evento ha avuto sugli approcci e sugli strumenti di test del software.
1 Il dato di $ 7 miliardi si riferisce probabilmente al costo totale del progetto Ariane 5, Wikipedia riporta che il fallimento ha comportato una perdita di oltre $ 370 milioni. Ancora un fallimento piuttosto costoso ma in nessun posto vicino alla cifra di $ 7 miliardi.