Mittaaminen

Sisällys:

1. Yleistä
2. Mittaamisen suorittamisesta
3. Yleistä mittayksiköistä
4. Mittayksiköitä
5. Mittayksiköiden käytöstä
6. Mittaustulosten käsittely
7. Mittaaminen ja standardit

Yleistä

Projektien läpiviennissä ja prosessien parantamisessa on tärkeää tietää, missä ollaan. Tämä on mahdollista vain, jos asioista on olemassa selkeästi mitattavissa olevaa tietoa.

Mittaaminen tarkoittaa joukkoa toimintoja, joiden tavoitteena on saada tietoa mittauksen kohteena olevan asian ominaisuuksista. Mittauksen tulos ilmaistaan mittayksikkönä, joka voi olla joko suoraan yhden ominaisuuden arvo tai useammasta mitatusta ominaisuudesta laskettu arvo.

Toisin kuin esim. fysiikassa, ohjelmistotuotannossa mittaamisen kohteet ja mittaustavat eivät ole (vielä) vakiintuneita ja yksikäsitteisiä. 1970-luvulta alkaen on mittaamista kuitenkin pyritty kehittämään kurinalaiseksi toiminnaksi, jolla pystytään selvittämään ohjelmistojen ja niiden tekemisen laatua. Vaikka laadun määrittely ja mittaaminen kvantitatiivisesti on hankalaa, ohjelmistotuotannosta on kerättävissä ja analysoitavissa objektiivista tietoa työskentelyn avuksi.

Mittaaminen voi kohdistua periaatteessa kahteen eri asiaan: tulokseen ja työskentelyyn. Tulokseksi katsotaan myös välitulokset, esimerkiksi toteutussuunnitelma, testausraportti jne. Toisaalta mittauksen tulos ei välttämättä kuvaa mitattavaa asiaa, esimerkiksi:

Mittari Mittauksen kohde Tulos kuvaa
Dokumentin sanojen lkm Tulos Tulos
Myöhästyneiden etappien prosenttiosuus kaikista etapeista Prosessi Prosessi
Virheiden löytymistiheys Prosessi Tulos
Koodirivien lkm työtuntia kohti Tulos+Prosessi Prosessi

Ihmisillä on taipumus muuttaa toimintaansa siten, että mittaustulokset kaunistuvat. Onkin pidettävä huoli siitä, että mittaustuloksien paraneminen aina liittyy myös todellisen toiminnan paranemiseen. Parasta on käyttää suureita, joista ei saada selville henkilökohtaisia "paremmuus"arvoja.

Mittaaminen kuluttaa runsaasti resursseja ja häiritsee niitä henkilöitä, joiden työpanos on kriittisin. Siten mittaaminen on suunniteltava huolella etukäteen ja mahdollisuuksien mukaan se on pyrittävä automatisoimaan.

Mittaamisen tulee perustua johonkin teoriaan asioiden riippuvuuksista. Mahdollisia mittayksiköitä on niin paljon, että umpimähkäisesti valitusta mittayksiköstä on vain äärimmäisen harvoin hyötyä.

Mittaamisen tarkoituksena on jokin seuraavista:

a.   mitattavan tuloksen tai prosessin ymmärtäminen
b.   mitattavan tuloksen tai prosessin arvioiminen: esimerkiksi vertaaminen suunnitelmiin tai toisiin projekteihin/tuloksiin, epäilyttävien komponenttien löytäminen, ylläpidon aikana tapahtuvan laadun heikkenemisen havaitseminen, ...
c.   mitattavan prosessin ohjaaminen
d.   jonkun muun asian kuin mittauksen välittömän kohteen ennustaminen

Mittaamisen tarkoitus on aina selvitettävä ennen mittauksen suoritusta.

Mittaamisen suorittamisesta

Ensimmäinen askel on tarvittavien mittausten ja mittareiden määrittely. Se riippuu mm. siitä, millaista ohjelmistoa ollaan tekemässä, millaiset laatutavoitteet on asetettu (tuotteelle ja työskentelylle) ja kuinka paljon resursseja on käytettävissä tietojen keräämiseen. Laadi kullekin mittayksikölle eli mittarilla mitattavalle ominaisuudelle käyttösuunnitelma. Siinä on kuvattava seuraavat asiat:

  1. Yleiskuvaus siitä mitä tietoa tarvitaan, kuka sitä tarvitsee ja mihin tarkoitukseen
  2. Kerättävän tiedon tarkka kuvaus: kerralla kerättävät tiedot ja jatkuvasti kerättävät tiedot
  3. Kuka suorittaa tietojen keruun
  4. Miten tietojen kerääjät koulutetaan ja mistä he saavat tarvittaessa lisätietoja
  5. Miten tieto kerätään; mahdollisesti käytettävät lomakkeet (mittaustulosten tulisi olla periaatteessa toistettavissa olevia ts. eri ihmisten tulisi saada sama tulos); mikäli mittari ei ole automaattinen, niin mittaustulos on rekisteröitävä heti, kun se on saatavilla
  6. Miten kerättyjen tietojen virheettömyys tarkistetaan; erään tutkimuksen mukaan jopa 50 % tiedoista sisälsi virheitä vaikka atk-ammattilaiset itse merkitsivät ne ylös normaalin toimintansa ohessa
  7. Miten kerätyt tiedot käsitellään
  8. Miten tulokset julkistetaan
  9. Miten tuloksia tullaan käyttämään hyväksi
  10. Miten kerättyjä tietoja säilytetään

Kerää seuraavaksi mittareiden tarvitsemaa tietoa. On muistettava mittaamisen häiritsevän mitattavaa prosessia, joten varsinkin mittaamisen alkuvaiheissa tulokset hyppelevät jonkin aikaa.

Analysoi mittaustiedot etukäteen päätettyjen ohjeiden sekä aiemmin kerätyn tiedon pohjalta. Tulosten tulkinnalla saadaan tietoa ohjelmiston laadusta sekä tarpeista ja keinoista sen parantamiseksi.

Kerro alustavat tulokset ensin niille henkilöille, joiden työtä mitataan, ja julkista tulokset yleisesti vasta tämän jälkeen.

Aloita mittaaminen varovasti muutamalla harvalla helposti käyttöönotettavalla mittarilla.

Yleistä mittayksiköistä

Kunkin mittayksikön tulee

Mittayksiköiden luokitteluperusteita:

Mittayksiköiden käyttöalue ei yleensä ole laajennettavissa. Esim. koodaamisen työmäärää ennustava mittaluku, joka on tarkoitettu C-kielelle, ei välttämättä sovellu Visual Basicia käytettäessä.

Mittaustulokset eivät yleensä sellaisenaan kerro mitään, vaan ne on useimmiten tulkittava suhteessa johonkin toiseen, samalla tavalla mitattuun tulokseen. Tällaisia vertailukohteita voivat olla:

Tulkinta voidaan myös antaa kuvaamalla, miten mittaustulokset tulkitaan asteikolla "heikko, tyydyttävä, hyvä, erinomainen". (Usein tällaisen tulkinnan takana on juuri vertailukohteista saadut vastaavat mittaustulokset.)

Mittayksiköitä

Tulokseen liittyviä mittayksiköitä:

Koko:
komponentin koodirivien lukumäärä
Rakenne:
komponenttien sykliset viitteet toisiinsa
Ymmärrettävyys:
virkkeiden keskipituus, sanojen keskipituus
Keskinäiset suhteet:
alkukielinen→käännetty komponentti -laajentumissuhde, testaussuunnitelma→testiraportti -laajentumissuhde
Kypsyys:
virheiden löytymistiheys (käytön aikana), jäljellä olevien virheiden määrä (arvioimalla löydettyjen virheiden määrän kehittymisen perusteella), vuosittain tarvittavien korjausten lukumäärä
Sopimuksessa kuvatut (muut) laatuvaatimukset

Prosessiin liittyviä mittayksiköitä:

Työmäärä:
työhön käytetty aika eri vaiheissa ja erityyppisissä töissä henkilötyöaikana sekä kalenteriaikana
Työskentelyn tehokkuus:
tarkastusmenettelyissä löydettyjen virheiden määrä ja laatu, testauksessa löydettyjen virheiden määrä ja laatu
Aikataulussa pysyminen:
saavutettujen tulosten suhde suunniteltuun, myöhästyneiden etappien prosenttiosuus

Mittayksiköiden käytöstä

Tavoitetason asettaa

joille on toimitettava asianomaiset raportit mittaustuloksista (eikä muuta, koska prosessimittareiden osalta toimittaja ei ehkä edes halua kertoa tuloksia asiakkaalle.)

Samaa mittayksikköä (mutta mahdollisesti eri tavalla mitattuna) voidaan käyttää projektin eri vaiheissa eri tarkoituksiin.

Esimerkki: Ohjelmiston komponenttien koko.

Mittayksikkö: Toteutettavien komponenttien koot tuhansina koodiriveinä (KLOC).

Valmisteluvaihe:

  • Toteutussuunnitelman perusteella arvioidaan tarvittavien komponenttien lukumäärä ja ennustetaan niiden koot käyttäen historiatiedoista löytyvää tämäntyyppisten ja -kokoisten projektien komponenttien kokojakaumaa.
  • Lukujen avulla lasketaan toteutusvaiheessa ohjelmien kirjoittamiseen ja testausvaiheessa ohjelmien testaamiseen tarvittava työaika. Laskennassa käytetään hyväksi historiatiedoista löytyviä keskimääräisiä toteutus- ja testaamisaikoja erikokoisille komponenteille.

Toteutusvaihe:

  • Toteutuksen yhteydessä selviävät komponenttien todelliset määrät ja kokoarvot. Jos ne poikkeavat merkittävästi ennustetuista, niin selvitetään poikkeaman syy.
  • Määrätään toteutukseen laskennallisesti tarvittava työaika uusilla arvoilla. Jos todellinen työaika poikkeaa merkittävästi nyt lasketusta ajasta, niin selvitetään poikkeaman syy.
  • Todellisten arvojen avulla tarkennetaan testausvaiheen projektisuunnitelmaa laskemalla ohjelmien testaamiseen tarvittava työaika uusilla arvoilla.

Testausvaihe:

  • Jos todellinen testausaika poikkeaa merkittävästi edellä tarkennetusta ajasta, niin selvitetään poikkeaman syy.

Poikkeamille pitää aina etsiä sekä myönteisiä että kielteisiä selityksiä.

Esimerkki: Projektissa havaitaan, että komponenttien testaamisessa on löytynyt poikkeuksellisen vähän virheitä.

Myönteisiä tulkintoja:

  • komponentit on tehnyt poikkeuksellisen pätevät henkilöt
  • tekemiseen on ollut käytettävissä poikkeuksellisen runsaasti aikaa
  • ohjelmat ovat olleet asiakkaan tarkastettavana ennen niiden varsinaista testaamista

Kielteisiä tulkintoja:

  • testauksen on tehnyt harjoittelija ja testaus on jäänyt vaillinaiseksi
  • testaajat ovat olleet mukana myös monissa muissa projekteissa ja testaus on suoritettu huolimattomasti
  • aikatauluongelmien takia testaukseen on ollut käytettävissä erittäin vähän aikaa

Mittaustulosten käsittely

Luokittelulle perustuvista mittareista (esim. eri syistä johtuneet virheet) saadaan tuloksena pylväskuvia, joissa tyypillisesti ongelmatilanteet keskittyvät muutamaan luokkaan. Tällaisen esittämiseen voidaan käyttää nk. Pareto-kaaviota:

Pareto-kaavío: virheiden jakauma

Numeroarvoisilla mittareilla saadaan yleensä sellaisia jakaumia (diskreettejä, vinoja, poikkeavia ääriarvoja), että niiden käsittely normaaleilla tilastollisilla menetelmillä on hankalaa. Sopiva esitystapa on laatikkokuva:

Laatikkokuva: tapausten mediaani, kvartiilit, äärimmäiset ja
ulkopuoliset arvot

Poikkeamien syiden etsimistä voidaan helpottaa syy-seurauskaaviolla:

Syy-seurauskaavio: ehtolauseiden virheiden etsiminen

Mittaaminen ja standardit

Mittaamiselle on laadittu standardi ISO/IEC 15939, Software Measurement Process. Se on otettu pohjaksi CMMI:hin lisättyyn prosessialueeseen Mittaaminen ja analysointi. Mittaaminen on lisätty myös standardiin ISO/IEC 15288, Järjestelmän elinkaaren prosessit.

Lisäksi standardissa ISO/IEC 9126 on määritelty mittauksen terminologia sekä kuusi ohjelmistojen laadun avaintekijää, joita voi käyttää tarkastuslistan tapaan laadittaessa epäsuoria mittareita sekä arvioitaessa järjestelmän laatua:

  1. Toiminnallisuus
  2. Luotettavuus
  3. Käytettävyys
  4. Tehokkuus
  5. Ylläpidettävyys
  6. Siirrettävyys

Hewlett-Packardilla on kehitetty vastaava laatutekijöiden lista nimellä FURPS (Functionality, Usability, Reliability, Performance ja Supportability eli toiminnallisuus, käytettävyys, luotettavuus, suorituskyky ja tuettavuus). Kunkin kohdan ominaisuuksista voi johtaa erilaisia laatumittareita kaikkiin tuotantoprosessin vaiheisiin.


Vain jäsenille: