Ohjelmiston laatu

Ohjelmiston laatu (vrt. laatu) mittaa ohjelmistotuotannossa sitä, kuinka hyvin tietokoneohjelma tai ohjelmisto on suunniteltu (suunnittelun laatu), ja kuinka hyvin toteutettu ohjelmisto noudattaa suunnitelmaa (suunnitelmanmukaisuus).  Siinä missä suunnitelmanmukaisuus keskittyy toteutukseen – siis vastaako ohjelmisto suunnitelmaa – suunnittelun laatu mittaa, kuinka kelvollisia suunnitelma ja määrittelydokumentin vaatimukset ovat onnistuneen ohjelmistotuotteen laatimiseen.

Ohjelmiston laatu voi viitata joissakin asiayhteyksissä myös loppukäyttäjien subjektiiviseen kokemukseen ohjelmiston laadusta.  Ohjelmistojen loppukäyttäjillä voidaan tarkoittaa yksittäistä ohjelman käyttäjää tai käyttäjäryhmää, jolla on välitön yhteys ohjelmiston tarjoaman käyttöliittymän kautta itse ohjelmistoon. Ohjelmistojen loppukäyttäjällä voidaan tarkoittaa myös institutionaalista loppukäyttäjää, jolloin loppukäyttäjän rooli on yhteisöllinen, kuten esimerkiksi ohjelmiston tilaajaorganisaatio. Ohjelmistoihin liittyvät laatukokemukset voivat vaihdella suuresti riippuen loppukäyttäjän asemasta ja koetut laatuhavainnot voivat poiketa paljon riippuen siitä, käsitelläänkö laatukäsitettä institutionaalisesti tai yksilön näkökulmasta.

Yksilötasolla ohjelmistojen laatukäsite syntyy ohjelmistoon ja sen tuottamiin suoritteisiin tai ohjelmistoon liittyvän palvelutuotannon kautta, jolloin ohjelmistoon välittömässä yhteydessä oleva loppukäyttäjä voi tehdä tarkasteluita ohjelmistoon liittyvien ympäristömuuttujien avulla. Yksilötason loppukäyttäjien laatukäsitteet liittyvät hyvin pitkälle ohjelmiston tuottamiin operatiivisiin suoritteisiin. Institutionaalisella tasolla ohjelmistojen laatukäsite vastaa suurempaa kokonaisuutta, johon liittyvät usein institutionaalisella tasolla ohjelmistoihin sekä niiden taustatekijöihin liittyvät strategiset ja taktiset kysymykset. Näiden laatukäsitteiden tulkitseminen on usein huomattavasti vaikeampaa, koska niihin liittyvää havainnointia ja laatuarviointia ei voida suorittaa välittömien havaintojen perusteella. Strategisella tasolla ohjelmistojen laatukäsite voi liittyä asiakasorganisaation strategian asettamiin tavoitteisiin tai vaatimuksiin, mutta taktisella tasolla ohjelmistojen laatua voidaan arvioida keinona, millaisen keinon tai ratkaisun ohjelmisto pystyy tuottamaan ja millaisia vaatimuksia se asettaa organisaation strategisen tason toteuttamiseksi ja miten ohjelmisto sopii asiakasorganisaation operatiiviseen toimintaan ja vaatimuksiin.

Eräs perinteinen laatumääritelmä niin ohjelmistotuotannossa kuin muussakin teollisuudessa on Philip B. Crosbyn esittämä kuvaus "laatu tarkoittaa yhteensopivuutta vaatimusten kanssa". Toinen yleinen lähtökohta laatuajattelulle on Joseph Juranin määritelmä, jossa laatu kuvataan "sopivuudeksi käyttötarkoitukseensa".

Ohjelmiston laadun tekijöitä 
 Käytettävyys
 Käyttäjäkokemus
 Laajennettavuus
 Luotettavuus
 Oikeellisuus
 Siirrettävyys
 Skaalautuvuus
 Standardinmukaisuus
 Tehokkuus
 Tietoturvallisuus
 Vikasietoisuus
 Virheettömyys
 Ylläpidettävyys

Lähdekoodin laatu 
Tietokone ei tunne käsitettä "hyvinkirjoitettu koodi", mutta ihmisnäkökulmasta katsottuna lähdekoodi voidaan kirjoittaa tavalla, joka helpottaa koodin ymmärrettävyyttä.  Ohjelmointia varten on olemassa lukuisia tyylioppaita: tyypillisesti jokaiselle ohjelmointikielelle on omansa, mutta tyylikäytännöt voivat vaihdella myös ohjelmistoprojektien välillä.  Tyylioppaissa painotetaan usein koodin luettavuutta, joten ohjeiden noudattamisella on vaikutuksensa koodin ylläpidettävyyteen ja uudelleenkäytettävyyteen.

Lähdekoodin laatuun on mahdollista vaikuttaa myös käyttämällä valmiita komponentteja, jotka ovat jo aiemmin käyneet läpi laadun parantamiseen tarkoitetut toimenpiteet. Ohjelmistokehysten avulla koodin uudelleenkäyttö toteutuu helposti. Kehysten käyttö parantaa mm. Changin  mukaan myös järjestelmäarkkitehtuurin laatua.

Koodin laatuun vaikuttavat:
 Luettavuus
 Ylläpidettävyys, testattavuus, siirrettävyys
 Yksinkertaisuus – koodin vähäinen kompleksisuus
 Vähäiset resurssivaatimukset: tietokoneen työmuistin ja prosessointitehon kulutus
 Kääntäjän ilmoittamien varoitusten määrä
 Vahva syötteiden tarkastus ja virheiden käsittely

Tapoja lähdekoodin laadun parantamiseen:
 Koodin katselmointi
 Lähdekoodin dokumentointi
 Modulaarisuus
 Ohjelmistokehysten käyttäminen soveltuvin osin
 Refaktorointi

Ohjelmiston luotettavuus 
Ohjelmiston luotettavuus on tärkeä tekijä, joka tarkoittaa "todennäköisyyttä ohjelmiston virheettömään toimintaan määrätyssä ympäristössä tiettynä aikana".

Ohjelmiston luotettavuuden tunnistettavia piirteitä ovat objektiivisuus, mitattavuus ja estimoitavuus – sen sijaan ohjelmiston laatu on monilta osin subjektiivinen vertailuperuste.

Laadunhallinta 
 Betatestaus
 Laadunvarmistus
 Riskienhallinta
 Tuotteen elinkaaren hallinta

Katso myös 
 ISO 9126
 Ohjelmistotuotanto
 Ohjelmiston versiohallinta
 Projektinhallinta
 Tuotekehitys

Lähteet

Kirjallisuutta

Aiheesta muualla 
 Global Association for Software Quality.
 "Ohjelmiston laadun parantaminen puutemittareiden avulla", Teemu Kipponen, Pro gradu -tutkielma, 2005 (viitattu 6.9.2009).

Ohjelmistotuotanto
Ohjelmistoprojektin hallinta