Ads 468x60px

perjantai 23. joulukuuta 2011

Kun tietokoneet ohjaavat kaikkea

Tietokoneet ovat nykyään erottamaton osa lähes kaikkia laitteita, olivatpa ne sitten kodinkoneita, leluja, kulkuneuvoja tai vaikkapa sairaalan hoitolaitteita. Näitä laitteita ei ehkä niin helposti mielletä IT-järjestelmiksi, mutta niitä ne kuitenkin ovat. Näiden järjestelmien koodin kehittämiseen pätee samat säännöt ja periaatteet, kuin muunkin koodin ja koodissa on virheitä.

Perinteisissä IT-projekteissa ei aina ole onnistuttu erityisen hyvin toiminnallisessa eikä varsinkaan tietoturvamielessä. Testaamamme sovellukset eivät yleensä ole erityisen hyvin koodattuja tai testattuja. Kun tällainen ohjelmisto otetaan käyttöön huonosti testattuna, niin pahimmillaan tapahtuu tietovuoto, tietomurto tai jotain vastaavaa ei toivottavaa ja sinällään haitallista. Kun johonkin laitteeseen sulautettu tietojärjestelmä otetaan käyttöön huonosti testattuna, niin lentokone joutuu syöksyyn – 110 loukkaantui tai potilas kuolee saatuaan satoja kertoa liian suuren säteilyannoksen syöpähoitolaitteessa.

Ensimmäisessä esimerkissä matkustajakone joutui kahdesti syöksyyn ohjelmistovirheen takia. Tutkijat ovat moittineet erästä koodiriviä, joka tulkitsee ilmannopeuden antureiden tietoja lentokoneen tietokoneissa. Ohjelmakoodi ei toimintahäiriöiden yhteydessä pystynyt selvittämään epäkunnossa olevan anturin lähettämiä virheellisiä tietoja. Airbus on sittemmin päivittänyt koneidensa järjestelmät ja riskialtis ohjelmistokoodi on tiettävästi korjattu. Se onkin rauhoittava tieto seuraavaa lentoa ajatellen.

http://www.mikropc.net/kaikki_uutiset/matkustajakone+joutui+kahdesti+syoksyyn+ohjelmistovirheen+takia++110+loukkaantui/a743206

Toisessa esimerkissä sädehoitoa saaneet potilaat saivat koodivirheen vuoksi vuosien 1985 ja 1987 välisenä aikana yli 100-kertaisia säteilyannoksia. Ainakin 3 näistä potilaista kuoli. Koodia ei oltu riippumattomasti testattu ennen käyttöönottoa, koodin suunnittelussa ja vaatimusmäärittelyssä oli vakavia puutteita, käyttäjiltä tulevia virheraportteja ei uskottu eikä käsitelty ja lisäksi käytössä ollutta laite ja koodikokonaisuutta ei oltu koskaan testattu käytössä olleessa kokoonpanossa.

http://en.wikipedia.org/wiki/Therac-25

Itse muistan ihmetelleeni kehittäjien logiikkaa 90-luvun alkupuolella, kun Helsingissä ajatettiin DTM-sarjan osakilpailu. Kilpailussa Keke Rosberg ajoi ulos, koska auto ei antanut hänen jarruttaa toisen puolen renkaiden ollessa liian liukkaalla alustalla, hieman ajolinjan ulkopuolella. Itse ainakin vastaavassa tilanteessa seinän lähestyessä haluaisin kuitenkin sen mahdollisuuden, että jos nyt kuitenkin voisin yrittää sitä jarruttamista silläkin riskillä, että on liukasta. Täydellä vauhdilla seinään ajaminen ei oikein vaikuttaisi paremmalle vaihtoehdolle.

Lista kaikkien aikojen koodausvirheistä löytyy täältä: http://royal.pingdom.com/2009/03/19/10-historical-software-bugs-with-extreme-consequences/

Hyvää joulua kaikille ja varokaa käyttämissänne laitteissa olevaa koodia. Sitä ei ehkä ole testattu!

Ei kommentteja:

Lähetä kommentti