4 największe katastrofy programistyczne w historii - drobne błędy o tragicznych konsekwencjach

4 największe katastrofy programistyczne w historii - drobne błędy o tragicznych konsekwencjach30.04.2015 10:56
Źródło zdjęć: © marko82bg - Fotolia.com

Na błędy i awarie oprogramowania natknął się chyba każdy, kto korzysta z nowoczesnych technologii. Narażeni jesteśmy na nie podczas używania komputerów, nowoczesnych komórek, ostatnimi czasy nawet telewizorów czy samochodów. W większości przypadków konsekwencje zawieszenia się programu czy wyświetlenia nieoczekiwanego komunikatu nie są zbyt poważne. Ot, trzeba ponownie uruchomić program, wyjść z aplikacji czy w najgorszym wypadku wyłączyć urządzenie. Zdarza się jednak, że błędy programistów prowadzą do znacznie poważniejszych skutków.

- Za błędy w oprogramowaniu często winą obarczyć można krótkodystansowe cele biznesowe. Zamówione oprogramowanie ma być bowiem dostarczone na czas i ma działać. Testuje się jednak tylko tę nową funkcjonalność, nie sięgając po profesjonalny audyt całego kodu. To nie do przyjęcia w branży IT Security – zauważa Paweł Dawidek, dyr. ds. technicznych i oprogramowania w Wheel Systems. – Co więcej, nikt też nie patrzy na jakość kodu, a co za tym idzie, na łatwość utrzymania i rozwijania oprogramowania. Im gorsza jego jakość, im kod jest bardziej skomplikowany i nieczytelny, tym więcej ma błędów i są one trudniejsze do znalezienia podczas testów. Sprawia to, że dużo łatwiej jest wprowadzić nowe błędy podczas rozwoju tak skonstruowanego oprogramowania. Poza tym, im czystszy kod, tym ewentualne błędy prostsze w naprawie. Bo skomplikowane rzeczy psują się w skomplikowany sposób.

A na to, jak poważne mogą być konsekwencje błędów oprogramowania, dowodów nie brak.

Therac-25

Między 1985 a 1987 rokiem 6 osób uległo poparzeniu w wyniku naświetlań maszyną Therac-25. Trzy z nich zmarły w następstwie wypadku.

W trakcie pierwszego wypadku, w wyniku którego pacjentka straciła pierś i czucie w ręce, okazało się, że automat zaaplikował ok. 100 razy większą dawkę promieniowania, niż wynikało ze zlecenia. Producent, firma AECL uznała jednak, że to niemożliwe, nie podjęto więc żadnych działań.

Jeszcze w tym samym roku – w 1985 r. – inna maszyna uległa awarii, wyświetlając komunikat o błędzie i niepodjęciu naświetlania. Operator, przyzwyczajony do humorów urządzenia, wymusił wykonanie procedury. Maszyna pięciokrotnie podejmowała próbę wykonania naświetlenia, po czym zupełnie odmówiła posłuszeństwa. 3 miesiące później pacjent, który brał udział w zabiegu, zmarł w związku z powikłaniami napromieniowania.

Źródło zdjęć: © Zdjęcie ilustracyjne (fot. Ntligent / CC)
Źródło zdjęć: © Zdjęcie ilustracyjne (fot. Ntligent / CC)

AECL bardzo długo wypierało się winy, uznając, że nie istnieje możliwość, aby Therac-25 mylił dawki, albo wykonał naświetlania mimo przeczącego temu komunikatowi. Mimo to poparzeniom uległo jeszcze kilka osób, a sprawa trafiła do sądu. W toku postępowania rzecznik AECL przyznał, że wykonano ”małą liczbę” testów urządzenia nim trafiło na rynek.

Jak się okazało, wart ponad 1 mln dolarów automat został wyposażony w napisane w assemblerze oprogramowanie, stworzone przez jedną osobę. Wypadki powodowały dwa drobne przeoczenia programisty. Zabrakło jednego, jak się okazało, niezmiernie istotnego wiersza kodu. Raptem kilkudziesięciu znaków.

Patriot

Podczas Wojny w Zatoce Perskiej w 1991 roku iracka rakieta Scud trafiła w amerykańskie baraki w Dhahran, zabijając 28 osób i raniąc ponad 100. Doszło do tragedii, mimo iż bezpieczeństwa bazy pilnowało aż 6 baterii systemu przeciwrakietowego Patriot.

Wyjaśniając kulisy wypadku, należy podkreślić, że Patriot stworzono w latach 70. w celu zwalczania radzieckich rakiet, poruszających się przeciętnie z prędkością około 2 machów. Dodatkowo, w założeniach, system miał być wysoce mobilny. Czas ciągłej pracy przewidywano więc na nie więcej niż 8 godzin. Po tym okresie miał on być dezaktywowany, przewożony i uruchomiany ponownie w nowym miejscu.

Źródło zdjęć: © (fot. PD)
Źródło zdjęć: © (fot. PD)

Jak się okazało, w związku z długim procesem aktywowania się systemu (60-90 sekund), amerykańskie baterie w Iraku działały bez przerwy nawet ponad 100 godzin. Nie byłoby to problemem, gdyby nie fakt, że jedną ze zmiennych wykorzystywanych w obliczeniach był właśnie czas pracy w sekundach. Dokładność działań zmiennoprzecinkowych, wykonywanych do namierzania celów, była zaś daleka od ideału. W efekcie 1 sekunda wyliczana przez baterię nie była równa rzeczywistej sekundzie, a błąd kumulował się z czasem. Nie stanowiło to problemu, jeżeli system nie działał zbyt długo. Ale po 100 godzinach pracy mylił się on już o 0,34 sekundy.

Pomyłka ta okazała się wystarczająca, aby pozwolić wymknąć się lecącej z prędkością aż 5 machów irackiej rakiecie Scud, mimo wychwycenia jej na planie nieba, a następnie namierzenia w pierwszej fazie celowania. Posługując się niedokładnym zegarem, system błędnie wyliczył okno, w którym powinna się pojawić wroga rakieta w drugiej fazie namierzania. Nie zastawszy w nim oczekiwanego obiektu, Patriot nie podjął żadnych działań, uznając, że to fałszywy alarm. W efekcie doszło do tragedii.

Oficjalną przyczyną incydentu jest niewłaściwa eksploatacja systemu Patriot. Nie przewidziano, że baterie będą aktywne przez 100 godzin bez przerwy. Wina leży jednak także po stronie programistów, którzy o powstającym odchyleniu czasu dowiedzieli się dopiero na krótko przed wydarzeniami w Dhahran.

Ariane-5

10 lat i 7 miliardów dolarów. Tyle trwał i kosztował projekt budowy rakiety Ariane-5, która przez błąd w oprogramowaniu rozpadła się na oczach zaskoczonych widzów kilkadziesiąt sekund po starcie. Europejska Agencja Kosmiczna postanowiła zbudować rakietę większą, szybszą i lepszą od poprzedniczki – Ariane-4. Właśnie to dziedzictwo zaważyło na katastrofie. Okazało się, że część oprogramowania nowej rakiety skopiowano ze starej. W trakcie lotu jedna z funkcji pochodzących z Ariane-4, a w nowej rakiecie zupełnie zbędna, zgłosiła błąd. Jego interpretacja wprowadziła z kolei w błąd wewnętrzny system nawigacji rakiety, doprowadzając tym samym do wydania przez główny komputer polecenia wykonania nagłego zwrotu o 20 stopni. W tym wypadku nie pomógł nawet awaryjny system, ponieważ kiedy główny komputer, w wyniku błędu, wyłączył się, zapasowy obwód, który powinien przejąć jego zadania, też już nie działał.

W toku śledztwa wyszło na jaw, że nie sprawdzono dokładnie założeń oprogramowania Ariane-4, na którym budowano software do Ariane-5. Nie było też systemu testów, ani nie przeprowadzono symulacji programowej.

NASA Mars Climate Orbiter

Po 10 miesiącach lotu, 23 września 1999 roku sonda warta około 700 mln dolarów dotarła w pobliże Marsa. O godzinie 8.41 UTC rozpoczęto manewr wchodzenia na orbitę planety. O 9.04, zgodnie z planem, sonda znalazła się po drugiej stronie Marsa, tracąc chwilowo kontakt z kontrolą lotów. Połączenie nie zostało już jednak nigdy odzyskane, ponieważ MCO spłonęła w atmosferze planety. 25 września NASA przyznała się do niepowodzenia.

Źródło zdjęć: © (fot. PD)
Źródło zdjęć: © (fot. PD)

Śledztwo wykazało, że wątpliwości dotyczące powodzenia misji MCO pojawiły się już wcześniej, ale zostały zignorowane. Bezpośrednim powodem porażki okazał się jednak brak komunikacji między zespołami, tworzącymi oprogramowanie do MCO. Fragment software'u, tworzony w Anglii na zlecenie Lockheed Martin, pisany był bowiem w oparciu o inne jednostki metryczne niż część opracowana w USA przez NASA. Kiedy wychwycono niespójność jednostek, alarm został zignorowany. Błąd okazał się jednak na tyle poważny, że doprowadził do nieprawidłowej pracy dopalaczy lądownika. Konsekwencją tego było zbyt bliskie podejście, a co za tym idzie, spalenie się sondy w atmosferze Marsa.

Czy błędów w oprogramowaniu będzie coraz więcej?

To tylko cztery spektakularne przykłady, ilustrujące do czego mogą doprowadzić nawet drobne błędy i przeoczenia w oprogramowaniu. Tragedie w przeróżnej skali wydarzają się codziennie. Ofiarami słabej jakości kodu padają miliony ludzi, czasem nawet nie zdając sobie z tego sprawy, a liczba ta wciąż rośnie. Wynika to z prostego faktu - otacza nas coraz więcej oprogramowania i nic nie zapowiada, aby ten trend miał się zmienić. Tym bardziej, że prawie każdy nosi w kieszeni kilka milionów linii kodu – telefon komórkowy.

Zobacz także: Groźne aplikacje pustoszą telefony i tablety

Szanowna Użytkowniczko! Szanowny Użytkowniku!
×
Aby dalej móc dostarczać coraz lepsze materiały redakcyjne i udostępniać coraz lepsze usługi, potrzebujemy zgody na dopasowanie treści marketingowych do Twojego zachowania. Twoje dane są u nas bezpieczne, a zgodę możesz wycofać w każdej chwili na podstronie polityka prywatności.

Kliknij "PRZECHODZĘ DO SERWISU" lub na symbol "X" w górnym rogu tej planszy, jeżeli zgadzasz się na przetwarzanie przez Wirtualną Polskę i naszych Zaufanych Partnerów Twoich danych osobowych, zbieranych w ramach korzystania przez Ciebie z usług, portali i serwisów internetowych Wirtualnej Polski (w tym danych zapisywanych w plikach cookies) w celach marketingowych realizowanych na zlecenie naszych Zaufanych Partnerów. Jeśli nie zgadzasz się na przetwarzanie Twoich danych osobowych skorzystaj z ustawień w polityce prywatności. Zgoda jest dobrowolna i możesz ją w dowolnym momencie wycofać zmieniając ustawienia w polityce prywatności (w której znajdziesz odpowiedzi na wszystkie pytania związane z przetwarzaniem Twoich danych osobowych).

Od 25 maja 2018 roku obowiązuje Rozporządzenie Parlamentu Europejskiego i Rady (UE) 2016/679 (określane jako "RODO"). W związku z tym chcielibyśmy poinformować o przetwarzaniu Twoich danych oraz zasadach, na jakich odbywa się to po dniu 25 maja 2018 roku.

Kto będzie administratorem Twoich danych?

Administratorami Twoich danych będzie Wirtualna Polska Media Spółka Akcyjna z siedzibą w Warszawie, oraz pozostałe spółki z grupy Wirtualna Polska, jak również nasi Zaufani Partnerzy, z którymi stale współpracujemy. Szczegółowe informacje dotyczące administratorów znajdują się w polityce prywatności.

O jakich danych mówimy?

Chodzi o dane osobowe, które są zbierane w ramach korzystania przez Ciebie z naszych usług, portali i serwisów internetowych udostępnianych przez Wirtualną Polskę, w tym zapisywanych w plikach cookies, które są instalowane na naszych stronach przez Wirtualną Polskę oraz naszych Zaufanych Partnerów.

Dlaczego chcemy przetwarzać Twoje dane?

Przetwarzamy je dostarczać coraz lepsze materiały redakcyjne, dopasować ich tematykę do Twoich zainteresowań, tworzyć portale i serwisy internetowe, z których będziesz korzystać z przyjemnością, zapewniać większe bezpieczeństwo usług, udoskonalać nasze usługi i maksymalnie dopasować je do Twoich zainteresowań, pokazywać reklamy dopasowane do Twoich potrzeb. Szczegółowe informacje dotyczące celów przetwarzania Twoich danych znajdują się w polityce prywatności.

Komu możemy przekazać dane?

Twoje dane możemy przekazywać podmiotom przetwarzającym je na nasze zlecenie oraz podmiotom uprawnionym do uzyskania danych na podstawie obowiązującego prawa – oczywiście tylko, gdy wystąpią z żądaniem w oparciu o stosowną podstawę prawną.

Jakie masz prawa w stosunku do Twoich danych?

Masz prawo żądania dostępu, sprostowania, usunięcia lub ograniczenia przetwarzania danych. Możesz wycofać zgodę na przetwarzanie, zgłosić sprzeciw oraz skorzystać z innych praw wymienionych szczegółowo w polityce prywatności.

Jakie są podstawy prawne przetwarzania Twoich danych?

Podstawą prawną przetwarzania Twoich danych w celu świadczenia usług jest niezbędność do wykonania umów o ich świadczenie (tymi umowami są zazwyczaj regulaminy). Podstawą prawną przetwarzania danych w celu pomiarów statystycznych i marketingu własnego administratorów jest tzw. uzasadniony interes administratora. Przetwarzanie Twoich danych w celach marketingowych realizowanych przez Wirtualną Polskę na zlecenie Zaufanych Partnerów i bezpośrednio przez Zaufanych Partnerów będzie odbywać się na podstawie Twojej dobrowolnej zgody.