Rozpad rakiety Ariane 5 37 sekund po starcie w jej dziewiczym rejsie ( Flight 501 ) jest powszechnie określany jako jeden z najdroższych błędów oprogramowania w historii 1 :
Europejska Agencja Kosmiczna zajęła 10 lat i 7 miliardów dolarów, aby wyprodukować Ariane 5, gigantyczną rakietę, która z każdym wystrzeleniem może zrzucać na orbitę parę trzytonowych satelitów i zamierzała dać Europie przytłaczającą przewagę w komercyjnym biznesie kosmicznym.
Wystarczyło zaledwie kilka minut, by eksplodować tę rakietę w dziewiczą podróż w czerwcu ubiegłego roku, rozrzucając ognisty gruz na namorzynowych bagnach Gujany Francuskiej, to mały program komputerowy próbujący upchnąć 64-bitową liczbę w 16-bitową przestrzeń.
Jeden błąd, jedna awaria. Ze wszystkich nieostrożnych linii kodu zapisanych w annałach informatyki, ta może okazać się najbardziej niszczycielsko wydajna. Z wywiadów z ekspertami w dziedzinie rakiet i analizy przygotowanej dla agencji kosmicznej wyłania się wyraźna ścieżka od błędu arytmetycznego do całkowitego zniszczenia.
Jakie główne zmiany spowodowały awarię Flight 501 i kolejne badania zainspirowały do badań systemów o krytycznym znaczeniu dla bezpieczeństwa i testowania oprogramowania?
Nie szukam wyjaśnienia samego błędu, ale wyjaśnienia historycznego wpływu błędu, w kategoriach badań, które zostały zainspirowane lub były bezpośrednio związane z dochodzeniem (badaniami) niepowodzenia. Na przykład ten artykuł zawiera następujące wnioski:
Zastosowaliśmy analizę statyczną, aby:
- sprawdź inicjalizację zmiennych,
- dostarczyć wyczerpującą listę potencjalnych konfliktów dostępu do danych dla zmiennych wspólnych,
- wyczerpująco wypisz potencjalne błędy w czasie wykonywania z semantyki Ada.
Według naszej wiedzy, po raz pierwszy do weryfikacji programów przemysłowych stosowane są techniki analizy statycznej oparte na logice i nie na bazie logiki.
Podobnie w tym dokumencie (pdf) odnotowano:
Do analizy statycznej wbudowanego oprogramowania ADA programu uruchamiającego Ariane 5 i ARD zastosowano analizę statyczną opartą na interpretacji abstrakcyjnej. Statyczny analizator programów ma na celu automatyczne wykrywanie niedokładności, potencjalności, niemożliwości lub niedostępności błędów w czasie wykonywania, takich jak przepływy skalarne i zmiennoprzecinkowe, błędy indeksu tablicowego, podział na zero i powiązane wyjątki arytmetyczne, niezainicjowane zmienne, wyścigi danych włączone wspólne struktury danych itp. Analizator był w stanie automatycznie wykryć błąd lotu Ariane 501. Analiza statyczna wbudowanego oprogramowania o krytycznym znaczeniu dla bezpieczeństwa (takiego jak oprogramowanie awioniczne) jest bardzo obiecująca .
Chciałbym dokładnie wyjaśnić wpływ tego pojedynczego zdarzenia na podejścia i narzędzia do testowania oprogramowania.
1 7 miliardów dolarów prawdopodobnie odnosi się do całkowitego kosztu projektu Ariane 5, Wikipedia donosi, że niepowodzenie spowodowało stratę ponad 370 milionów dolarów. Wciąż dość droga porażka, ale nie zbliżona do kwoty 7 miliardów dolarów.