Qual è stato l'impatto storico del volo 501 di Ariane 5?


9

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.


5
Definisci "peggio" ... Peggio perché era costoso? Non lo so ... Penso che il Therac-25 sarebbe un insetto molto peggiore se tu fossi una delle persone soggette a massicci overdose di radiazioni durante il trattamento del cancro. users.csc.calpoly.edu/~jdalbey/SWE/Papers/THERAC25.html ; corsi.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html ; en.wikipedia.org/wiki/Therac-25
FrustratedWithFormsDesigner

2
@FrustratedWithFormsDesigner Rispondere alla tua domanda è perfettamente accettabile , recentemente abbiamo persino ottenuto una funzione che incoraggia le risposte di sé. Stavo per testarlo per questa domanda, tuttavia dato che si tratta di una domanda di contest (non che abbia una possibilità) ho deciso di lasciare che qualcun altro rispondesse.
yannis,

3
Vogliamo davvero stabilire che le questioni didattiche hanno portata? In tal caso, riesco a vedere un'ondata di domande leggermente fastidiose volte a guidarci da qualche parte e insegnarci qualcosa senza che l'OP abbia davvero bisogno di una risposta. A te, ma sembra rischioso.
Corbin,

4
@gnat Non ho mai detto che era l' unica risposta, solo un suggerimento che la domanda ha una risposta per placare gli elettori vicini. Ma eccoti qui: articoli.adsabs.harvard.edu//full/1998ESASP.422..201L/… & dl.acm.org/citation.cfm?id=263750 (ACM paywall)
yannis

3
@FrustratedWithFormsDesigner: A volte ho domande per le quali penso di conoscere la risposta, ma non ne sono sicuro. Quindi vorrei chiedere loro di non avere la mia tesi confermata, ma piuttosto di essere aperto a tutti i tipi di risposte che otterrò. Quindi, in generale, penso che abbia senso porre una domanda anche se ho già alcune idee su possibili risposte.
Giorgio,

Risposte:


5

Tecnicamente parlando, era più un caso di " marciume software ". Il software di controllo del volo è stato riciclato dal precedente razzo Ariane 4, una mossa ragionevole dato quanto è costoso sviluppare software, specialmente quando si tratta di software mission-critical che devono essere testati e verificati secondo standard molto più rigorosi di quelli che la maggior parte dei software commerciali deve essere.

Sfortunatamente, nessuno si è preoccupato di testare quale effetto avrebbe avuto il cambiamento nell'ambiente operativo, o se lo hanno fatto non ha detto test a uno standard sufficientemente approfondito.

Il software è stato creato per aspettarsi che determinati parametri non superino mai determinati valori (spinta, accelerazione, consumi, livelli di vibrazione, ecc.). Nel volo normale su un Ariane 4 questo non era un problema perché quei parametri non avrebbero mai raggiunto valori non validi senza che qualcosa fosse già incredibilmente sbagliato. L'Ariane 5, tuttavia, è molto più potente e le gamme che sembrano sciocche sul 4 potrebbero facilmente accadere sul 5.

Non sono sicuro di quale parametro sia andato fuori portata (potrebbe essere stata un'accelerazione, dovrò controllare), ma quando lo ha fatto, il software non è stato in grado di far fronte e ha subito un overflow aritmetico per il quale c'era stato implementato codice di controllo e recupero errori insufficiente. Il computer di guida ha iniziato a inviare spazzatura ai gimbal degli ugelli del motore, che a loro volta hanno iniziato a puntare l'ugello del motore in modo quasi casuale. Il razzo ha iniziato a cadere e rompersi, e il sistema automatico di autodistruzione ha rilevato che il razzo era ora in un atteggiamento non sicuro e irrecuperabile e ha finito il lavoro.

Ad essere onesti, questo incidente probabilmente non ha insegnato nuove lezioni, poiché il tipo di problemi è stato scoperto prima in tutti i tipi di sistemi e ci sono già strategie in atto per affrontare la ricerca e la correzione degli errori. Quello che ha fatto l'incidente è stato rammentare che essere rilassati nel seguire queste strategie può avere conseguenze enormi, in questo caso milioni di dollari di hardware distrutto, alcuni clienti estremamente incazzati e una brutta ammaccatura nella reputazione di Arianespace.

Questo caso particolare è stato particolarmente evidente perché una scorciatoia presa per risparmiare denaro è costata moltissimo, sia in termini di denaro che di perdita di reputazione. Se il software fosse stato testato in maniera altrettanto solida in un ambiente simulato di Ariane 5 come lo era quando era stato sviluppato originariamente per Ariane 4, l'errore sarebbe sicuramente emerso molto prima che il software fosse installato nell'hardware di lancio e messo al comando di un volo reale. Inoltre, se uno sviluppatore di software avesse deliberatamente immesso qualche input senza senso nel software, l'errore potrebbe anche essere stato colto nell'era di Ariane 4, in quanto avrebbe evidenziato il fatto che il ripristino dell'errore in atto era inadeguato.

Quindi, in breve, non ha insegnato davvero nuove lezioni, ma ha speronato a casa i pericoli di non ricordare quelli vecchi. Ha anche dimostrato che l'ambiente in cui opera un sistema software è altrettanto importante quanto il software stesso. Solo perché il software è verificabile in modo verificabile per l'ambiente X non significa che sia adatto allo scopo in un ambiente simile ma distinto Y. Infine ha messo in evidenza quanto sia importante che il software mission-critical sia abbastanza robusto da affrontare circostanze che non dovrebbero avere è accaduto.

Contrasta il volo 501 con Apollo 11 e i suoi problemi con il computer. Mentre il software LGC ha sofferto di un grave problema tecnico durante l'atterraggio, è stato progettato per essere estremamente robusto ed è stato in grado di rimanere in uno stato operativo nonostante gli allarmi software che sono stati attivati, senza mettere in pericolo gli astronauti ed essere ancora in grado di completa la sua missione.


6
Riferimenti....?
FrustratedWithFormsDesigner,

2
I miei ricordi delle lezioni di etica ingegneristica durante gli studi di informatica all'università :)
GordonM,

Se ricordo bene, il problema è stato causato dall'omissione di alcuni asserti in un luogo ritenuto corretto per Ariane 4, perché il suo computer (di navigazione inerziale) si sovraccaricherebbe se gli assalti fossero presenti. Ariane 5 aveva un computer molto più potente per svolgere il lavoro che avrebbe gestito facilmente le affermazioni, ma non erano state riabilitate.
Pavel

1

Era principalmente un problema di riutilizzo e di gestione e non di codifica. Dai miei ricordi (probabilmente sto sbagliando alcune cose) del rapporto.

  • un sottosistema era stato progettato per Ariane IV. Le traiettorie di Ariane IV non hanno potuto provocare lo straripamento ed è stato quindi volutamente deciso che se si fosse verificato, si sarebbe trattato di un problema hardware e l'arresto del sottosistema e il passaggio alla riserva era la cosa giusta da fare.

  • per Ariane V, è stato deciso di riutilizzare quel sottosistema e di non rivedere i presupposti e il codice, ma fare affidamento sui test.

  • inoltre si è deciso di abbandonare i test completi.

Diversi parametri di volo di Ariane V hanno causato l'overflow. Chiudi il primario. Spegni il ricambio. Autodestruction.

Altre cose che ricordo:

  • il sottosistema al momento dell'overflow non era più utile. Si potrebbe sostenere che il suo fallimento non avrebbe dovuto innescare l'autodistruzione. (D'altra parte, la complessità aggiunta potrebbe essere essa stessa una fonte di problemi).

  • c'erano dati di debug inviati a un bus quando non avrebbero dovuto. Non ricordo lo specifico.


Ah, so quale fosse il bug, non è proprio la mia domanda. Ho sentito spesso che il bug ha cambiato il nostro approccio al test del software, ed è quello che sto chiedendo.
yannis,


ISTR il meccanismo dietro l'errore era che il codice ha generato un'eccezione di overflow, che il chiamante non ha rilevato. L'eccezione è stata propagata fino a quando non è stata rilevata dal gestore delle eccezioni predefinito, che ha interrotto il modulo in errore. Tuttavia, poiché l'eccezione aveva percolato così tanti livelli, il "modulo offensivo" a quel punto era l'intero RSI (sistema di riferimento inerziale).
TMN,

0

Come altri hanno già detto, ha indotto l'industria in generale a riesaminare il concetto di riutilizzo e a inserirlo in un quadro di riferimento più ampio in base al quale i componenti non vengono valutati isolatamente ma nel contesto dell'intero sistema. Ciò riduce significativamente l'attrattiva del riutilizzo, poiché anche se un componente può essere riutilizzato senza modifiche, deve ancora essere analizzato con una nuova serie di ipotesi. Un altro corollario è che l'hardware di backup che esegue lo stesso software non è altrettanto attraente, dal momento che la maggior parte dell'hardware moderno è ordini di grandezza più affidabili del software moderno. Ho sentito che alcuni contratti di difesa richiedono due sistemi software separati sviluppati da team diversi che utilizzano tecnologie diverse che funzionano con le stesse specifiche per verificare la corretta implementazione.


2
Riferimenti per favore ...
yannis,

1
Per lo più ricordato per metà da un vecchio articolo di ACM, ma alcune ulteriori informazioni sono qui .
TMN,

Le idee di computer separati, con codice sviluppato da diversi team, sono state utilizzate dal programma Space Shuttle, e forse anche prima.
mhoran_psprep,

@mhoran_psprep: continua a leggere sul fallimento dello scambio AT&T e sui suoi risultati. Spiacenti, nessun riferimento, conoscilo dalla memoria.
mattnz,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.