Mistä bugit tulevat?

Ennen kuin kerron pankkiautomaatista, joka ”vohki” kaksikymppisen, otetaan pieni luontokatsaus: Tietokoneet rakennettiin vuosikymmeniä sitten mekaanisista osista, kuten releistä ja elektroniputkista. Suurista komponenteista johtuen tietokoneet olivat huoneen kokoisia. Sattuipa sellainen tietokone aikanaan vikaantumaan, ja tutkijat löysivät yllättävän syyllisen, koneen sisuksiin takertuneen perhosen. Löydös nimettiin ”bugiksi”, mikä suomalaisittain kääntyy mm. ötökäksi. Sittemmin ohjelmistovirheitä on myös alettu kutsumaan bugeiksi.

Tyhjätasku automaatti
Noin vuosikymmen sitten vaimoni nosti pankkiautomaatista 40 euroa. Automaatti antoi vain yhden kaksikymppisen. Kuitissa luki haluttu summa, mutta seteliaukosta tuli vain puolet rahamäärästä. Tilanne oli hämmentävä. Eihän luotetun laitteen odottaisi tuollaista virhettä tekevän. Pankkiautomaatin huoltomies tarkisti laitteen toiminnan ja lokitiedot. Kaikki vaikutti olevan kunnossa, asia jäi selvittämättömäksi.

Kutsumaton vieras
Kysyin koodikonkarilta, mistä sovellusvirheet tulevat. Ohjelmistosuunnittelijamme Janne Pikkarainen löytää useita syitä:

”Tekijällä voi olla väärä käsitys ohjelman nykyisestä tai tavoitellusta toiminnasta. Syynä voi olla kehittäjän tekemä virhe logiikassa tai vaikka se, että unohtaa huomioida karkauspäivän ja -vuoden käsiteltäessä päivämääriä.”

Sovelluskoodiin pujahtanut virhe ei tietokoneelta jää huomaamatta vaan sopivassa tilanteessa suoritus ohjautuu ei-toivottua polkua pitkin. Tietokone ei sitä virheeksi ymmärrä, vaan suorittaa ihan niin kuin kaiken muunkin sovelluskoodin. Käyttäjälle tilanne näkyy toiminnan keskeytymisenä, virheellisenä toimintana tai jää sillä hetkellä huomaamatta kokonaan. Virheellinen toiminta on ikävä yllätys.

Härkää sarvista
Jotta virheiden määrä minimoituisi, ennakoivia toimia suoritetaan monessa vaiheessa. Valitettavasti toisinaan sovelluksen tuotantoversioon jää virhe joka aiheuttaa häiriötä käyttäjälle. Silloin tärkeää on se, miten nopeasti ongelma voidaan paikantaa ja korjata.
Joku ratkoo ristikoita, ohjelmistosuunnittelija metsästää koodissa majailevia ’ötököitä’.

”Ongelman syyn ratkominen on parhaimmillaan hyvin mielenkiintoista ja palkitsevaa”, Janne kertoo.

Toisaalta hän myöntää, että joskus homma voi olla hyvin stressaavaakin. Aina ongelmia ei saada kovasta yrittämisestä huolimatta toistumaan. Silloin tarvitaan pitempiaikaista seurantaa ja tilanteesta riippuen korvaavia toimintatapoja, joilla ongelman syntyminen pystytään ehkäisemään.

Ratkaisun avaimet
Lienet kuullut sanonnan ”ketju on vain niin vahva kuin sen heikoin lenkki”. Virheet eivät johdu aina siitä ohjelmasta missä ne ilmenevät. Sovellusoikku voi aiheutua käyttöjärjestelmästä tai ohjelmaympäristöstä, jossa sovelluksia suoritetaan, tai vaikka temppuilevasta verkkoyhteydestä. Sovelluskehityksen toimintaketjua on tarpeen rakentaa laadukkaista rakennuspalasista ja teettää tunnetuilla timpureilla.