Kiedy programy nie będą zawierały błędów?

W Kodeksie Hammurabiego znalazł się zapis, skazujący na śmierć budowniczego, w przypadku gdy postawiony przez niego dom zawalił się zabijając jego mieszkańców. Czterdzieści wieków później twórcy oprogramowania zdają się zrzucać całą odpowiedzialność za jego poprawne działanie na użytkownika. Czy nie powinniśmy może powrócić do starych, sprawdzonych zasad?

W Kodeksie Hammurabiego znalazł się zapis, skazujący na śmierć budowniczego, w przypadku gdy postawiony przez niego dom zawalił się zabijając jego mieszkańców. Czterdzieści wieków później twórcy oprogramowania zdają się zrzucać całą odpowiedzialność za jego poprawne działanie na użytkownika. Czy nie powinniśmy może powrócić do starych, sprawdzonych zasad?

Żarty żartami, ale komputery stają się coraz bardziej wszechobecne w naszym życiu. Istnienie naszej cywilizacji w obecnej postaci jest już bez nich niemożliwe, a częstokroć od ich poprawnego działania zależy nie tylko wygoda i sprawne funkcjonowanie społeczności, ale także zdrowie i życie ludzkie. Komputery gromadzą niezliczone ilości danych, sterują pracą maszyn i urządzeń, kontrolują przebieg procesów. Gdy jednak coś nie zadziała tak jak trzeba lub wręcz przestanie działać, powodując czasem katastrofę, mówimy: "komputer się pomylił". Na ogół to nie biedny komputer jest winny, ale błędnie napisany program. Czyli człowiek, który popełnił jakiś błąd przy jego tworzeniu.

Zbyt łatwo chce się znaleźć chłopca do bicia w postaci bezrozumnej maszyny, a przyczyna jest zwykle ta sama - niedoskonałość człowieka.

Jak groźne mogą być tzw. pluskwy w programach świadczą rozmaite udokumentowane przypadki. Jednym z najczęściej cytowanych i spektakularnych wydarzeń, w którym niepoprawne działanie programu miało tragiczne skutki, było wprowadzenie do kilku szpitali w Kanadzie, w połowie lat 80., komputerowo sterowanej maszyny do przeprowadzania naświetleń osób chorych na raka. Był to Therac-25, a jego twórcy zbytnio zawierzyli oprogramowaniu sterującemu. Błędy spowodowały wyemitowanie zbyt dużej dawki promieniowania i śmierć kilku osób. Przeprowadzone szczegółowe śledztwo wykazało, że program napisano niestarannie i niedokładnie przetestowano.

Innym przykładem (i to już z naszego podwórka) była niedawna katastrofa samolotu Lufthansy na warszawskim lotnisku na Okęciu, gdzie komputer pokładowy mylnie interpretując otrzymywane dane, uniemożliwił pilotowi odpowiednio wczesne włączenie hamulców.

Pisanie oprogramowania jest bardzo skomplikowanym procesem i błędy można popełniać w każdej fazie jego tworzenia -przy planowaniu (specyfikowaniu), projektowaniu, implementowaniu (kodowaniu) i testowaniu (stosując niewłaściwą lub ubogą metodologię sprawdzania poprawności), przy czym błąd jest tym dotkliwszy im we wcześniejszej fazie powstał. Żaden odpowiedzialny twórca oprogramowania nie może stwierdzić, że jest w pełni przekonany o niezawodności swojego oprogramowania. Nigdy nie da się przeprowadzić testów dla wszystkich danych wejściowych, co więcej nie da się utworzyć jasnych standardów sposobów testowania wszystkich programów. Nawet jeśli program nie ma błędów (co można udowodnić matematycznie z pomocą praw logiki i formalnej specyfikacji programu) to i tak zawsze można przyjąć błędne założenia co do tejże specyfikacji. Odpowiedzialny twórca oprogramowania może tylko powiedzieć, że zrobił wszystko by błędów uniknąć. One jednak są i długo jeszcze będą (może i zawsze) endemiczne dla oprogramowania.

Kto ma za to odpowiadać?

Egzekwowanie odpowiedzialności za błędnie działający program jest trudne, z uwagi na techniczne i społeczne uwarunkowania procesu jego tworzenia. Programy są dzisiaj w przeważającej części owocem pracy zespołów ludzkich, powstają przez długi czas (liczony nawet w tysiącach osobo-lat), a w świadomości ludzkiej ciągle jeszcze informatycy jawią się jako osobnicy pośredni miedzy adeptami sztuki tajemnej i kuglarzami, a ciężko pracującymi na rzecz dobra ludzkości bohaterami. Ciągle łatwo ludzi przekonać do mitu mylących się komputerów. To bardzo rozleniwia twórców oprogramowania. Nie należy dopuszczać do sytuacji, w której firmy tworzące programy zastrzegają sobie rozmaite prawa do własnych produktów, jednocześnie odżegnują się od ponoszenia za nie jakiejkolwiek odpowiedzialności. Ciągle trudno niektórym przyjąć do wiadomości, że tworzenie oprogramowania (zwłaszcza w pewnych dziedzinach) jest zadaniem wymagającym rozwagi, solidności, doświadczenia i odpowiedniego wykształcenia. Lekceważenie tego może prowadzić do tragicznych skutków i z całą pewnością nieraz jeszcze usłyszymy o rozmaitych utrudnieniach i wypadkach, spowodowanych używaniem źle napisanego oprogramowania.

Zagrożeniem jest także zadufana wiara w moc techniki, a komputerów w szczególności. Człowiek nadal pozostaje w większości dziedzin kimś niezastąpionym i wydaje się, że częstokroć proces przekazywania odpowiedzialności na komputery (czyli innych ludzi, ale niebezpośrednio i b. nieprecyzyjnie) jest zbyt szybki. Świadczy o tym chociażby błąd amerykańskiej agencji kosmicznej NASA z wystrzeleniem w kosmos teleskopu Hubble. Po umieszczeniu go na orbicie był niezdatny do użytku z uwagi na złe wykonanie soczewek. Śledztwo przeprowadzone przez NASA wykazało, że nigdy nie były one przetestowane, a jedynie przeprowadzono komputerowe symulacje ich pracy (bo było taniej). Niestety dane wejściowe były niedokładne i otrzymane wyniki nijak nie miały się do rzeczywistości.

Co nas czeka?

Udzielenie odpowiedzi na tytułowe pytanie nie jest możliwe. Programiści będą coraz lepiej wykształceni, będą dysponowali doświadczeniem swoich poprzedników i narzędziami programowania nowych generacji. Tworzone przez nich programy będą bardziej złożone, dostosowane do potrzeb użytkownika, lepiej zaprojektowane i przetestowane. Ale nikt nie wie, czy kiedykolwiek będą one całkowicie bezpieczne i bezbłędne.

Powyższe spostrzeżenie nikogo w sumie nie przeraża, zważywszy na rosnącą ekspansję komputerów w dzisiejszym świecie.

W celu komercyjnej reprodukcji treści Computerworld należy zakupić licencję. Skontaktuj się z naszym partnerem, YGS Group, pod adresem [email protected]

TOP 200