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:
- Yleiskuvaus siitä mitä tietoa tarvitaan, kuka sitä tarvitsee ja mihin tarkoitukseen
- Kerättävän tiedon tarkka kuvaus: kerralla kerättävät tiedot ja jatkuvasti kerättävät tiedot
- Kuka suorittaa tietojen keruun
- Miten tietojen kerääjät koulutetaan ja mistä he saavat tarvittaessa lisätietoja
- 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
- 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
- Miten kerätyt tiedot käsitellään
- Miten tulokset julkistetaan
- Miten tuloksia tullaan käyttämään hyväksi
- 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
- olla vankka: toistettavissa oleva ja tarkka sekä epäherkkä pienille muutoksille välineissä tms.
- antaa normi: sanoa millainen arvo on hyvä ja millainen huono
- olla yhteydessä tuloksen tai prosessin tiettyihin ominaisuuksiin (esim. kokoon, käytettyihin resursseihin jne.)
- johtaa mahdollisuuteen tilanteen parantamiseen
- olla prosessin luonnollinen oheistuote
- olla yksinkertainen (koska monimutkainen mittayksikkö on yleensä hankala selittää, soveltaa ja tulkita)
- olla käytettävissä etukäteen ennustamiseen ja jälkikäteen tuloksen arviointiin
Mittayksiköiden luokitteluperusteita:
- objektiivinen / subjektiivinen: objektiivinen mittayksikkö ei riipu tiedon kerääjästä (esim. koodirivien määrä tai työvaiheeseen käytetty kalenteriaika); subjektiivinen taas voidaan sopia tai määrätä halutunlaiseksi (esim. käytettävyys tai puutteiden vakavuusasteikko).
- absoluuttinen / suhteellinen: absoluuttinen mitta ei muutu vaikka saadaan kerättyä mittaustietoa uusista yksilöistä; subjektiivinen on usein suhteellinen (esim. käyttöohjeen luettavuus)
- suora / johdettu: suora saadaan mittaamalla yhtä asiaa, esim. käytetyt työpäivät; johdettu lasketaan suorista tai johdetuista, esim. koodirivejä henkilötyöpäivää kohti
- dynaaminen / staattinen: dynaamisessa on mukana aikatekijä, esim. kuukaudessa löydettyjen virheiden määrä; dynaaminen mitta vaihtelee yleensä projektin eri vaiheissa; staattinen on pysyvämpi, esim. projektin aikana löydettyjen virheiden kokonaismäärä
- ennustava / selittävä: ennustava voidaan muodostaa etukäteen, selittävä vasta jälkikäteen
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:
- suunnitellut arvot
- vastaavanlaisten projektien arvot
- saman projektin toisten vastaavantyyppisten osien arvot
- saman komponentin arvot toisina ajanhetkinä
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
- prosessia kuvaavien lukujen osalta toimittajan johto
- tulosta kuvaavien lukujen osalta asiakkaan johto
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:
Numeroarvoisilla mittareilla saadaan yleensä sellaisia jakaumia (diskreettejä, vinoja, poikkeavia ääriarvoja), että niiden käsittely normaaleilla tilastollisilla menetelmillä on hankalaa. Sopiva esitystapa on laatikkokuva:
- keskimmäinen pystyviiva (206) on mediaani (ts. 50 % tapauksista on pienempiä ja 50 % suurempia kuin tämä)
- laatikon reunat FL (170) ja FU (312) ovat kvartiilit (ts. 25 % tapauksista on pienempiä kuin FL ja 25 % on suurempia kuin FU)
- vaakaviivojen päät on laskettu kaavoilla
min_alku = FL - 1,5 × (FU-FL) (= -43)
max_loppu = FU + 1,5 × (FU-FL) (= 525)
jonka jälkeen viivan päiksi valitaan äärimmäiset havaintoarvot, jotka jäävät viivan alueelle; kuvassa 102 ja 519 (koska ei ole havaintoja väleillä -43–101 ja 520–525) - ulkopuoliset arvot merkitään rasteilla erikseen näkyviin (kuvassa yksi paikassa 774)
- kvartiilialuetta voi käyttää suositusnormina
Poikkeamien syiden etsimistä voidaan helpottaa syy-seurauskaaviolla:
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:
- Toiminnallisuus
- Luotettavuus
- Käytettävyys
- Tehokkuus
- Ylläpidettävyys
- 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: