Zawsze warto unikać błędów w kodzie, ale czasem są one bardziej kosztowne, niż można by się spodziewać… Mogą na przykład zniweczyć lata przygotowań, 327 mln dolarów i zakończyć katastrofą podróż na odległość 54,6 miliona kilometrów.

Dowiedz się więcej: BARDZO kosztowne pomyłki w oprogramowaniu

Ludzie popełniają błędy

11 grudnia 1998 roku rakieta nośna Delta II 7425 wystartowała z przylądka Canaveral na Florydzie. Jej misją było dostarczenie sondy kosmicznej Mars Climate Orbiter na powierzchnię Marsa. Mierząca 2,1 x 1,6 x 2 metry i ważąca 638 kg sonda miała prowadzić badania pogody Czerwonej Planety. Nigdy nie było jej dane wykonać tej misji. 23 września 1999 roku, w trakcie wchodzenia na orbitę Marsa, kontakt z satelitą został przerwany.

Zaledwie kilka dni później było już wiadomo, że zawinił najbardziej niepewny element całej misji – człowiek.

Komisja rewizyjna NASA stwierdziła, że problem tkwił w oprogramowaniu sterującym pędnikami orbitera. Oprogramowanie obliczało siłę, jaką musiały wywierać silniki, w funtach. Drugi fragment kodu, który odczytywał te dane, zakładał, że są one w jednostce metrycznej.

Upraszczając skomplikowany temat – misja, która kosztowała 327,6 mln dolarów, której planowanie trwało latami i pochłonęło tysiące godzin pracy, nie powiodła się, bo ktoś z firmy Lockheed Martin w kodzie systemów użył amerykańskiej jednostki miar USCS, a inny system, dostarczony przez NASA, wykorzystywał międzynarodowy układ jednostek miar SI.

Ludzie popełniają błędy. Problemem w tym przypadku nie był błąd. Porażką była nasza nieumiejętność do spojrzenia na sprawę szczegółowo i znalezienie go. To niesprawiedliwe, by polegać na jakiejkolwiek jednej osobie – powiedział Tom Gavin z Jet Propulsion Laboratory w kalifornijskiej Pasadenie.

Mars Climate Orbiter

Bolesne pomyłki

Błąd w oprogramowaniu, czyli bug, występuje wtedy gdy:

  • oprogramowanie nie zrobiło tego, do czego zostało zaprojektowane
  • lub zrobiło coś, co było zarówno niepożądane, jak i nieoczekiwane.

Należy pamiętać, że w obydwu przypadkach winę ponosi człowiek. Obojętnie, czy jest to wynik źle napisanego kodu, nieumiejętności znalezienia tego błędu w fazie testowania, czy kodu przygotowanego w taki sposób, że mimo poprawnie przeprowadzonych poprzednich kroków, zadziałał inaczej, niż zamierzano. Koniec końców winni jesteśmy my – projektanci, programiści, testerzy.

Nie zawsze konsekwencje tych błędów będą tak kosztowne jak w przypadku Mars Climate Orbitera, ale bardzo mogą sięgać milionów.

Na przykład w 2008 roku Lotnisko Heathrow straciło około 50 mln dolarów z powodu błędów w kodzie systemu do zarządzania bagażami. W ciągu 10 dni od wprowadzenia oprogramowania odwołano około 500 lotów, a tysiące bagaży nie dotarło tam, gdzie miało dotrzeć.

Z kolei w styczniu 1990 roku abonenci firmy telekomunikacyjnej AT&T w USA nie mogli wykonywać połączeń międzymiastowych. Problemem okazał się bug w oprogramowaniu tworzący sztuczne zatory w systemie. Straty firmy – około 60 mln dolarów.

Drobne grosze w porównaniu z pomyłką misji na Marsa? Spokojnie, to tylko rozgrzewka.

Najwyższy koszt

W 2003 roku brytyjska CSA (Child Support Agency) zaczęła używać bardzo złożonego oprogramowania zaprojektowanego przez EDS. W tym samym czasie próbowano przeprowadzić restrukturyzację agencji, co doprowadziło do „zwarcia” na styku dwóch rozwiązań. W rezultacie około 1,9 mln osób dostało zbyt wysokie wypłaty z systemu pomocy, 700 tysięcy zbyt niskie, a 3,5 miliarda funtów nieściągniętych alimentów na dzieci zawisło w niebycie. Koszt naprawy usterki – miliard funtów.

Wszyscy słyszeli też o milenijnej pluskwie, czyli potencjalnej katastrofie systemów informatycznych, która miała nastąpić w roku 2000 z powodu decyzji o zapisie dat jedynie dwoma ostatnimi cyframi (np. 2001 jako 01). W momencie podejmowania tej decyzji, wydawała się ona sensowna – pozwalała na zaoszczędzenie pamięci komputerów. Jednak w roku 2000 miała doprowadzić do istnego armagedonu. Od niedziałających bankomatów po spadające z nieba samoloty.

Koniec końców, czy to dzięki przedsięwziętym wcześniej środkom zaradczym, czy faktowi, że problem nigdy nie był aż tak wielki, jak prognozowano, świat się nie skończył. Nie zabrakło jednak przypadków paniki, magazynowania zapasów na wypadek apokalipsy, a nawet poniesienia do 600 miliardów dolarów kosztów walki z „Y2K bugiem”.

Czasem problemy z oprogramowaniem kosztują znacznie więcej niż tylko pieniądze. W 2001 roku osiem osób zmarło, a 20 doznało poważnych obrażeń po tym, jak oprogramowanie RTP/2 do planowania radioterapii firmy Multidata Systems International błędnie określiło większą dawkę promieniowania dla 28 pacjentów.

Na tym może zakończmy… Ale nie dlatego, że brakuje kolejnych przykładów równie, a nawet bardziej dramatycznych efektów błędów w oprogramowaniu, ale z powodu troski o zdrowie psychiczne czytelnika.

Ostatecznie warto bowiem pamiętać, że większość systemów, którymi posługujemy się każdego dnia, działa dobrze. Ma mniejsze lub większe bugi, ale jest daleka od katastrofy.

Warto jednak zawsze przypominać sobie słowa Toma Gavina – ludzie popełniają błędy.

Pamiętajmy o tym, testując oprogramowanie.