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".
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:
Tapoja lähdekoodin laadun parantamiseen:
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.