A szoftverhibák (úgynevezett "bug"-ok) egyre inkább életünk részévé válnak, hiszen szoftverekkel nem csak a személyi számítógépeinken találkozunk, jelen vannak a mobilkommunikációs és szórakoztató elektronikai készülékekben, a közlekedési eszközeinkben (pl. autó elektronika), orvosi műszerekben(!), robotokban és még hosszasan sorolhatnánk.
Visszahívások szoftverhiba miatt
Szinte naponta halljuk a hírekben, hogy egy adott gyártó kénytelen volt visszahívni termékeit, a nem megfelelő minőség miatt. A híradásokban egyre gyakrabban szerepel a szoftverhiba miatt történő visszahívás is.
2001-ben Japánban felfüggesztették az egyik mobiltelefon típus árusítását, mivel annak szoftverében hibát találtak. A szoftverhiba miatt Javas alkalmazások futtatásakor a készülék adatbázisai megsérülhettek. Természetesen ez nem egyedi eset, hasonló visszahívás a mobilpiacon azóta is számos esetben történt.
2005-ben az egyik autógyár szoftverhiba miatt volt kénytelen visszahívni az egyik modelljét. A hiba azt eredményezte, hogy az autó hirtelen lelassult, majd teljesen leállt, amelynek oka egy indokolatlan vészjelzés volt. Nem kell ecsetelnünk, hogy egy ilyen hiba a közlekedés biztonságát mekkora mértékben veszélyezteti.
Nagy szoftvergyártók is jópárszor beleestek abba a hibába, hogy a PC gyártóknak elküldött, vagy a boltok polcain található szoftvereket voltak kénytelenek visszahívni. A szoftverhiba jellege természetesen sokféle lehet, és az okozott kár/kellemetlenség mértéke is nagyon változó. Körképünkben olyan hibákat mutatunk be, amelyek tetemes anyagi/erkölcsi károkat,vagy akár halálos áldozatokat okoztak már szerte a világban.
De előtte nézzük meg, miért nevezik bug-nak (bogárnak) a szoftverekben található hibákat.
Hibás (Bug-os) programok
A bug (bogár) a mérnöki életben igen régóta használatos szó a mechanikai meghibásodások jelzésére. Thomas Edison (a távíró és sok más hasznos találmány atyja) egy 1878-ban írt levelében is szerepel ez a kifejezés, amelyet később a számítástechnikában is használni kezdtek.
1947-ig kellett várni arra, hogy megtalálják z első igazi (kézzel fogható) "bug"-ot, vagyis bogarat. Történt ugyanis, hogy a Harvard egyetemen kifejlesztett Harvard Mark II. nevű elektromechanikus számítógép reléi közé egy molylepke került, amely a gép hibás működését eredményezte. A jó humorérzékkel megáldott operátor eltávolította a bogarat, és a naplóba beírta a következő szöveget:
"First actual case of bug being found", vagyis Az első valódi eset, amikor bogarat találtunk. A napló egy részlete és a bug (amelyet a képen is láthatunk) ki van állítva egy virginiai Számítógépes múzeumban.
Természetesen a hibakeresésre használt debug szakkifejezés (bogártalanítás) is innen származik.
Orvosi műhibaper programozó ellen?
A szoftverhibák következménye esetenként halálos is lehet. Példa erre a Therac-25 nevű orvosi műszer, amelyet a rákos daganatok sugárdózisokkal történő kezelésére fejlesztették ki.
A kórházakban használt eszköz képes volt röntgen, illetve alacsony energiájú béta sugárzás kibocsátására is. A röntgen sugárzás roncsolásától egy fémlemez védte a pácienst, amelynek pozícionálását a műszer szoftvere automatikusan végezte.
Sajnos egy programhiba miatt előfordulhatott, hogy a fémlemez nem került megfelelő pozícióba Emiatt az USA-ban 1985 és 1987 között több esetben az előírt dózis többszörösét alkalmazta a gép, amely miatt többen meghaltak, illetve súlyosan megsérültek.
A probléma sajnos nem egyedi. Hasonló dolog megtörtént 2000. novemberében is, Panama város egyik rákkutató intézetében. Itt szintén a védőlemezek elhelyezése okozta a gondot. Az egészséges szerveket védendő fémlemezeket ugyanis úgy lehetett a megfelelő helyre helyezni, ha a vezérlőképernyőn a megfelelő helyekre blokkokat rajzolt a kezelő. Hogy az orvosok (akik elvileg nem is kezelhették volna a gépet) meggyorsítsák a folyamatot, rajzoltak egy nagyobb blokkot, amelyben egy kisebb blokkal bejelölték, hogy hol engedik át a sugárzást. Azonban egy sajnálatos szoftverhiba miatt a blokkok körvonalának rajzolási irányától függően más-más dózist javasolt a gép. A nem kívánt működésnek legalább 8 halálos áldozata és 20 sérültje volt.
Látványos szoftverhibák az űrkutatásban
Az űrkutatás területén is nagyon fontos szerepe van a számítógépeknek, és a kutatások komplexitása miatt egy-egy szoftverhiba egész kutatási missziók végére tehet idő előtt pontot.
Ezt történt a Mariner I. űrszonda esetén is, amelyet a Vénusz bolygó kutatására indították (volna) el 1962. július 28-án.
A rakéta egy antenna meghibásodása miattelvesztette a kapcsolatot a földi irányítórendszerrel, amely miatt a fedélzeti számítógép vette át az irányítást. Azonban a szoftver is hibás volt, ezért a rakéta letért a megadott pályáról, ezért azt meg kellett semmisíteni. Utólag kiderült, hogy a szoftverfejlesztők egy képletet elnéztek és ezért hibásan programozták le.
A hiba jelentős anyagi (és erkölcsi) kárt okozott a NASA-nak.
1996-ban június 4-én ismét súlyos következményei lettek egy irányítószoftver hibájának, de most az Európai Űrügynökséget sújtva. Az Ariane-5 hordozórakéta négy olyan műholdat állított volna pályára, amely a magnetoszférát kutatta volna, azt az övet, amely megvédi bolygónkat az állandó napszéltől.
Az Ariane-5-ben az Ariane-4 vezérlőszoftverét használták fel (mivel az már bizonyított), de mivel az új hajtómű gyorsabb volt elődjénél, a számításoknál aritmetikai hiba lépett fel, ami miatt a hajtóművek túlterhelődtek és működésképtelenné váltak.
1999-ben a Mars Climate Orbite űrszonda esett áldozatul szoftverhibának, így nem maradt esélye a Mars légkörének vizsgálatára. A légkörbe ugyan belépett, de sajnos azonnal el is égett. A problémát az okozta, hogy a szoftvermodulokat külön fejlesztőcsoportok készítették és nem állapodtak meg abban, hogy milyen mértékegységeket (metrikus vagy angolszász) használnak a számításoknál.
Harcias bogarak
A hadi alkalmazásokban nyilván sokkal nagyobb figyelmet fordítanak a hibás programkódok kiszűrésére, mint a civil alkalmazásoknál, de itt is történt már tragédia szoftverhiba miatt. 1991. Február 25-én Irakban egy eltévedt Scud rakéta ölt meg 28 amerikai katonát. Ez azért történhetett meg, mert a Patriot légelhárító rendszer és a radar rendszerórájának értéke kis mértékben eltért (0.3 mp-el), amely a mozgó SCUD rakéta esetén 600 méteres különbséget jelent a célzásnál.
A rakétarendszer készítői tudtak a hibáról, de a javított szoftverváltozatot a tragédia után csak 1 nappal tudták biztosítani.
Mekkora az internet? Ha megbénítjuk, megtudjuk...
1988-ban az első internetes féreg (Morris) kevesebb, mint egy nap leforgása alatt 2.000-6.000 SUN és VAX számítógépet fertőzött meg, kihasználva az operációs rendszer egyik hibáját. A féreg kifejlesztője (elmondása szerint) nem akart kárt okozni, csak meg szerette volna becsülni az internetre kapcsolt számítógépek számát. A féreg működéséből adódóan azonban a szerverek nagymértékben lelassultak, illetve elérhetetlenné váltak, nem kis riadalmat keltve akkoriban.
A féreg kifejlesztője felfüggesztett börtönbüntetést és pénzbüntetést is kapott, valamint közmunkára is ítélték. Azóta megszerezte a doktori címét, és nyilván nem csodálkozunk azon sem, hogy kutatási témája a számítógépes hálózatok felépítésével kapcsolatos.
Kerberos véletlenszám generátor
A Kerberos egy igen széles körben elterjedt hitelesítési protokoll, amely a számítógépes hálózatokban a biztonságos hitelesítést hivatott szolgálni. Ilyen rendszerekben a számítógép által generált véletlenszámoknak óriási szerepe van. Sajnos a Kerberos (korábbi verziójában) a véletlenszámgenerálás nem volt eléggé "véletlenszerű", amely megkönnyítette a rendszerbe történő betörést.
AT&T hálózati üzemszünet
1990. január 15-én egy szoftverfrissítésben található bug miatt az AT&T társaság nagytávolságú hálózati eszközei egymás után álltak le. A problémát korábbi szoftverváltozat visszatöltésével orvosolták, de addig 60.000 ember maradt szolgáltatás nélkül közel 9 órán át .
Kék halál
A Windows rendszereken kék halál képernyőnek csúfolják azt a hibaképernyőt, amely akkor jelenik meg, ha az operációs rendszer nem tud helyreállni egy hibából. Ezt az igen kellemetlen hibát sajnos szándékosan is elő lehet idézni, amelyet a vírusok készítő rendre ki is használnak/használtak.
Ezt történt tömegesen 1995/96-ban is, amely "ping halál" néven került be a tudósításokba. A ping program segítségével lehet ellenőrizni hogy elérhető-e a hálózaton egy adott távoli számítógép. A program úgy működik, hogy adatcsomagokat küld a távoli számítógépnek és választ vár rájuk, amelyből természetesen a kapcsolat sebessége is számítható. Sajnos azonban kiderült, hogy ha egy manipulált ping csomagot küldünk egy távoli számítógépnek, az képes volt kék halált válaszolni rá.
Y2K probléma
Mivel is zárhatnánk a listát, mint a kétezres év problémájával, amely talán a leginkább ismert bug a közelmúltból. A hátterében az áll, hogy az 1960-as években kifejlesztett programozási nyelvekben - nyilván helytakarékossági okokból - az évszámokat nem 4, hanem csak 2 karakteren tárolták. Ez az ezredfordulón komoly problémát jelentett, hiszen bizonyos rendszerekben nem lehetett immáron megkülönböztetni az 1900-as éveket a 2000-es évektől.
Szerencsére a problémára - nem kevés pénz és időráfordítás árán - megfelelően sikerült felkészülni, így a filmekben és a bulvársajtóban beharangozott katasztrófa elmaradt, de persze azért kisebb fennakadások/bibák (pl. túlszámlázások) előfordultak.
Nagy Amerikai áramszünet
Nagy területekre kiterjedő áramszünetet okozhat-e szoftverhiba? A Hollywoodi filmesek szerint igen, hiszen számos akciófilmben láthattuk már, ahogy hackerek ténykedéseinek köszönhetően sötétségbe borul az egész keleti, vagy nyugati part.
Ha nem is hackereknek köszönhetően, de 2003-ban tényleg történt egy Észak, és Közép-nyugat Amerikát sújtó áramszünet, amely hozzávetőleg 50 millió embernek okozott kellemetlenséget. Az okozott kár közel 6 milliárd dollárra rúgott.
Az áramszünet igen komplex események végeredménye volt, de egy szoftverhiba is szerepet kapott benne, amely miatt a a vészjelző rendszer felmondta a szolgálatot. Ezt követően olyan folyamatok indultak el, amely miatt a fő és másodlagos irányítórendszer szervere is lelassult, majd leállt, az áramellátó rendszer pedig túlterhelődött.
Hibátlan program?
De miért vannak a szoftverekben bugok?
Ennek sokféle oka van. Lehet hogy a programozó figyelmetlenségből elírja a kódot/vagy az adatokat. Az is lehet, hogy a program különböző moduljai nem megfelelően kapcsolódnak egymáshoz. Ennek oka lehet az, hogy feszes időterv mellett több különálló fejlesztőcsoport dolgozik az adott szoftver különböző moduljain.
A programozónak megfelelő módszereket kell elsajátítania ahhoz, hogy redukálja az előforduló hibákat. Természetesen az adott programozási környezettől is függ, hogy a különböző jellegű hibák milyen módon kerülnek kijelzésre, mennyire hatékony felület áll rendelkezésre a hibák felderítésére/javítására. Léteznek speciális tesztelő szoftverek is, amelyek rövid idő alatt rengeteg tesztesetet tudnak a programokon végigfuttatni. A tesztelési eredmények kiértékelése után remélhetőleg kiderül a bugok nagy része, amelyet még az előtt lehet javítani, hogy a felhasználók kezébe kerüljön a termék.
Források, ajánlott olvasmányok
- http://www.wired.com/software/coolapps/news/2005/11/69355
- http://www.soultek.com/clean_energy/hybrid_cars/
- toyota_prius_hybrid_car_shut_down_or_stall_problems.htm
- http://www.jamesshuggins.com/h/tek1/first_computer_bug.htm
- http://en.wikipedia.org/wiki/Computer_bug
- http://courses.cs.vt.edu/~cs3604/lib/Therac_25/Therac_1.html
Abonyi-Tóth Andor