Luotettavuustekniikka
Ohjelmistojen luotettavuus

Ohjelmistojen luotettavuus on luotettavuustekniikan eräs erikoissovellus. Määritelmän mukaan järjestelmän luotettavuus käsittää kaikki osat sisältäen myös ohjelmistot, käyttäjät ja prosessit. Alkujaan luotettavuustekniikka on kohdistunut järjestelmän mekaniikan kriittisiin osiin. Tietokonetekniikan yleistyessä yhä enemmän on ohjelmistoista tullut kriittisiä osia elektroniikassa ja samalla lähes kaikissa nykyaikaisissa järjestelmissä. Ohjelmistojen ja mekaniikan käyttäytymisessä on luotettavuuden kannalta on merkittäviä eroja. Useimmat mekaaniset epäluotettavuudet johtuvat osan tai materiaalin viasta, mikä estää järjestelmää suorittamasta toimintaansa. Osan korjaus tai vaihtaminen saa järjestelmän taas toimintakuntoon. Ohjelmistot eivät vikaannu samassa mielessä kuin mekaniikka. Ohjelmistojen toimimattomuus on seurausta ohjelmien toiminnan odottamattomista seurauksista. Suhteellisen pienilläkin ohjelmistoilla voi olla tähtitieteellinen määrä tuloskombinaatioita ja tiloja, jotka jäävät piileviksi laajoissakin testeissä. Ohjelmistojen palauttaminen alkuperäiseen tilaansa auttaa vain siihen saakka, kunnes sama syötteiden määrä johtaa samaan ei-toivottuun tulokseen.
Huolimatta siitä erosta, että ohjelmistot eivät kulu käytössä eivätkä vanhene samalla tavalla kuin mekaaniset osat, niin ohjelmistojen luotettavuuden laskentaan on käytetty samoja tilastollisia menetelmiä kuin mekaniikan. Mitä laajemmin ohjelmaa käytetään, sitä todennäköisemmin löytyy piileviä vikoja.
Kuten mekaniikassa, ohjelmistojen luotettavuus riippuu hyvästä määritelmästä, suunnittelusta ja käyttöönotosta. Ohjelmistojen luotettavuustekniikka perustuu paljolti kurinalaiseen ohjelmointiprosessiin ja projektinhallintaan, esimerkiksi katselmointeihin ja riskienhallintaan, joissa ennakoidaan ei-toivottuja seurauksia. Ohjelmistojen laadulla on enemmän yhteistä luotettavuuden kanssa kuin mekaniikan laadulla. Hyvin tehty ohjelmiston kehityssuunnitelma ja testaus on perusta ohjelmistojen luotettavuudelle.
Ohjelmistojen luotettavuuden mittari on virheiden määrä, joka yleensä ilmaistaan virheinä tuhatta koodiriviä kohden. Tämä mittari yhdistettynä ohjelmiston suoritusaikaan, on avain useimpiin ohjelmistojen luotettavuusmalleihin ja arvioihin. Teorian mukaan ohjelmistojen luotettavuus kasvaa virheiden määrän tai tiheyden vähetessä. Suoran yhteyden määrittäminen virhetiheydelle ja keskimääräiselle vikaantumisvälille on kuitenkin vaikeaa, koska virheiden jakautuminen koodiin, niiden vakavuus ja todennäköisyys, että tulee sellaista syöttötietoa, jotka laukaisevat vikaantumisen, vaihtelee. Vikatiheyden lisäksi käytetään muitakin indikaattoreita, kuten monimutkaisuutta tai käytettävyyttä ja käyttövarmuutta. Mikäli ohjelman käyttö on hankalaa, ja/tai ohjelma sallii käyttäjän tehdä kohtalokkaita virheitä, esimerkiksi varmentamatta käyttäjältä päätöstä, ei ohjelmaa voida pitää luotettavana.
Testaus on ohjelmistojen suhteen vieläkin tärkeämpää kuin mekaanisten osien. Paraskin ohjelmistojen kehitysmenetelmä tuottaa virheitä, joita ei löydetä ilman testausta. Ohjelmistojen suhteen testaus osina on vieläkin tärkeämpää. Toisaalta testien toistaminen ei paranna tulosten luotettavuutta kuten mekaanisilla osilla.
Ohjelmistot ja mekaaninen järjestelmä yhdistyvät ylimmällä tasolla ja ohjelmistojen luotettavuus yhdistetään mekaniikan luotettavuuteen.