OHJELMISTOJEN LAADUN JA KOON MITTAAMINEN

Samankaltaiset tiedostot
OHJELMISTOJEN LAADUN JA KOON MITTAAMINEN

OHJELMISTOJEN LAADUN JA KOON MITTAAMINEN

Toimintopisteet. Toimintopisteiden laskenta 1

Ohjelmistoprosessit ja ohjelmistojen laatu Kevät 2015

Ohjelmistoprosessit ja ohjelmistojen laatu Kevät Ohjelmistoprosessit ja ohjelmistojen laatu. Projektinhallinnan laadunvarmistus

Koekysymyksiä. Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistojen suorituskyky

Ohjelmistotuotanto, k

Mittaamisen maailmasta muutamia asioita. Heli Valkeinen, erikoistutkija, TtT TOIMIA-verkoston koordinaattori

Työmäärän arviointi. Vaihtoehtoja. Sami Kollanus TJTA330 Ohjelmistotuotanto

Työmäärän arviointi. Vaihtoehtoja. Arviointiprosessi. Sami Kollanus TJTA330 Ohjelmistotuotanto

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

ELM GROUP 04. Teemu Laakso Henrik Talarmo

Mikä sitten on kallista? Milloin raha on viisaasti käytetty? Miten kallis määritellään toimintopistelaskennan näkökulmasta?

Uudelleenkäytön jako kahteen

arviointi edellyttää historiatietoja, esim. mittareiden kalibroimiseksi

FiSMA 1.1 Toiminnallisen laajuuden mittausmenetelmä Ohje monikerrosarkkitehtuurin mittaamiseen

Copyright by Haikala. Ohjelmistotuotannon osa-alueet

10 metriikkaa, joilla parannat johtamisen tasoa. Pekka Forselius, Senior Advisor, FiSMA ry Risto Nevalainen, Senior Advisor, FiSMA ry

Otannasta ja mittaamisesta

Estimointityökalut. Pekka Forselius, Senior Advisor Finnish Software Measurement Association FiSMA ry

Käytettävyyslaatumallin rakentaminen verkkosivustolle

ITK130 Ohjelmistojen luonne

Ohjelmistotekniikka kevät 2003 Laatujärjestelmät

Mittaaminen projektipäällikön ja prosessinkehittäjän työkaluna

HELIA 1 (11) Outi Virkki Tiedonhallinta

Ohjelmoinnin perusteet, syksy 2006

Mittausjärjestelmän kalibrointi ja mittausepävarmuus

Laadunvarmistuksesta. Luennon tavoitteista. Motivointia. Sommerville, Software Engineering (6th ed.)

ISO/IEC 29881:2010 => SFS-ISO 29881:2013. FiSMA 1.1 menetelmä vihdoin myös suomeksi. Pekka Forselius, Senior Advisor, FiSMA ry

Muuttujien määrittely

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

Johdantoluento. Ohjelmien ylläpito

Työkalujen merkitys mittaamisessa

MIKKO-projekti ja mittausten automatisointi

Ohjelmoinnin perusteet Y Python

Kokemuksia eri projektityyppien haasteista/sudenkuopista toimittajayhteistyön näkökulmasta. Pekka

Arviointimenetelmät ja mittarit hyödyn raportoinnissa

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

A. Työmäärän ja resurssien arviointi

Projektityö

Tietotekniikan valintakoe

Ohjelmiston toteutussuunnitelma

Arviointi ja mittaaminen

Miten löydän Sen Oikean? Senaattoritilaisuus Liisa Paasiala, Senior Consultant

A ja B pelaavat sarjan pelejä. Sarjan voittaja on se, joka ensin voittaa n peliä.

Mobiilit ratkaisut yrityksesi seurannan ja mittaamisen tarpeisiin. Jos et voi mitata, et voi johtaa!

HELIA 1 (8) Outi Virkki Tietokantasuunnittelu

Suunnitteluvaihe prosessissa

Harjoitus 5 (viikko 41)

Tilastolliset ohjelmistot A. Pinja Pikkuhookana

Matematiikan tukikurssi

Harjoitus 5 (viikko 48)

Mittaaminen menettely (sääntö), jolla tilastoyksikköön liitetään tiettyä ominaisuutta kuvaava luku, mittaluku.

Mittausepävarmuuden laskeminen

Lisää pysähtymisaiheisia ongelmia

Algoritmit 1. Luento 1 Ti Timo Männikkö

Algoritmit 1. Luento 3 Ti Timo Männikkö

Automatisoinnilla tehokkuutta mittaamiseen

Luentokuvia HAKU:1. Paula Liukkonen Tukholman yliopisto

MS-C1340 Lineaarialgebra ja

13/20: Kierrätys kannattaa koodaamisessakin

Sosiaalisten verkostojen data

Toimilohkojen turvallisuus tulevaisuudessa

TIEA241 Automaatit ja kieliopit, syksy Antti-Juhani Kaijanaho. 30. marraskuuta 2015

Tiedonhallinnan perusteet. Viikko 1 Jukka Lähetkangas

Tietokantasuunnittelun pääperiaatteena on tiedon toiston välttäminen. Tiedon toistumiseen liittyy monenlaisia ongelmia.

ALKUSANAT... 4 ALKUSANAT E-KIRJA VERSIOON... 5 SISÄLLYSLUETTELO... 6

f(n) = Ω(g(n)) jos ja vain jos g(n) = O(f(n))

Ohjelmistojen mallintaminen, mallintaminen ja UML

Matlab- ja Maple- ohjelmointi

Toinen harjoitustyö. ASCII-grafiikkaa

Tietokantojen suunnittelu, relaatiokantojen perusteita

Parinmuodostuksesta tietojenkäsittelytieteen silmin. Petteri Kaski Tietojenkäsittelytieteen laitos Aalto-yliopisto

Tarjolla tänää: Ohjelmiston toteutuksesta. Kuinka tulla hyväksi ohjelmoijaksi? CRC-kortit. Testilähtöinen kehittäminen JOT2007. Uudelleenrakentaminen

Ohjelmistoprosessit ja ohjelmistojen laatu Ohjelmistoprosessit ja ohjelmistojen laatu (4op)

Harjoitus 6. Käytä String-luokasta vain charat- ja length-operaatioita.

Todistus: Aiemmin esitetyn mukaan jos A ja A ovat rekursiivisesti lueteltavia, niin A on rekursiivinen.

SOVELLUSPROJEKTIN ARVIOINTILOMAKE

Järjestelmäarkkitehtuuri (TK081702) Hajautettu tietokanta. Hajautuksen hyötyjä

Ohjelmistojen mallintaminen. Luento 11, 7.12.

Algoritmit 2. Luento 1 Ti Timo Männikkö

5. HelloWorld-ohjelma 5.1

Kokonaisvaltainen mittaaminen ohjelmistokehityksen tukena

Tapahtuipa Testaajalle...

Johdatus tilastotieteeseen Tilastollisten aineistojen kerääminen ja mittaaminen. TKK (c) Ilkka Mellin (2005) 1

Tietorakenteet ja algoritmit

Ohjelmoinnin perusteet Y Python

Harjoitus 5. Esimerkki ohjelman toiminnasta: Lausekielinen ohjelmointi I Kesä 2018 Avoin yliopisto 1 / 5

Testaaminen ohjelmiston kehitysprosessin aikana

LIITE 1 VIRHEEN ARVIOINNISTA

Visma Business AddOn Tositteiden tuonti. Käsikirja

Ohjelmiston testaus ja laatu. Testausmenetelmiä

Tilastollisten aineistojen kerääminen ja mittaaminen

1 Määrittelyjä ja aputuloksia

Tutkittua tietoa. Tutkittua tietoa 1

ICT:n johtamisella tuloksia

Täydentäviä muistiinpanoja laskennan rajoista

TKT224 KOODIN KOON OPTIMOINTI

MS-A0004/A0006 Matriisilaskenta

Transkriptio:

OHJELMISTOJEN LAADUN JA KOON MITTAAMINEN 90 Mitat ja mittaus You can t control what you can t measure Tom DeMarco, 1982. DeMarcon toteama on kaikkien mittausspesialistien motto: ilman mittausta ei ole ohjausta. Väite on tietenkin liioiteltu. Kaikkia merkittäviä tietoja ei osata, voida tai haluta mitata. Mutta: mittaamalla ohjaus helpottuu. 91 1

Mitat ja mittaus Yrityksen tavoitteet voidaan esittää erityisten indikaattorien tavoitearvojen avulla (haluttu taso) Mittausohjelma määrittelee indikaattorit ja mittaukset Esimerkiksi asiakastyytyväisyyden ja - uskollisuuden mittaaminen usealla indikaattorilla Mielipidekyselyt Net Promoter Score Häiriöilmoitusten ja tukipyyntöjen lukumäärän kehitys (suhteessa käyttäjämäärään) Mittareiden halutaan arvioida, ennustaa tai tilastoida tuotteita, tuotantoprosesseja, resursseja ym. ohjauksen ja kehittämisen tarpeisiin 92 Mitat ja mittaus Vaikka mittauksia ei tehtäisikään täydessä laajuudessaan (tai tehdään ne vain kertaluonteisesti), mittausohjelma toimii kommunikaation ja sitouttamisen välineenä Mittausohjelman toimeenpanoa tärkeämpää on saada kaikki ymmärtämään ja hyväksymään mitä tavoitellaan Huom! - mittausten käyttö palkitsemisen tai henkilökohtaisen suoriutumisen arvioinnin perusteena kääntyy kuitenkin helposti itseään vastaan Voi olla monta tapaa saada mittarit näyttämään haluttuja arvoja, eivätkä kaikki ole tarkoituksenmukaisia Kehittäjät vierastavat henkilöön kohdistuvia mittauksia ja vaihtavat työpaikkaa 93 2

Valvonta vai itseohjaus? Luottamus hyvä, kontrolli parempi vai onko? Nykyaikainen johtamis- ja ajattelu korostaa jatkuvaa toiminnan ja tuotteiden parantamista, johon jokainen osallistuu kaikilla tekemisen tasoilla, keskusjohtoisen käskyttämisen ja valvonnan sijaan Toyota way https://en.wikipedia.org/wiki/the_toyota_way Kaizen https://en.wikipedia.org/wiki/kaizen 94 Mitta, mittaus, mittari Mitta tai metriikka (measure, metric) on luku tai symboli, joka karakterisoi kiinnostuksen kohteen (entity) tiettyä ominaisuutta (attribute) Mittaus (measurement) on prosessi, joka liittää luvun tai symbolin jonkin tosimaailman olion ominaisuuteen sen kuvailemiseksi selvästi määritellyn säännön mukaan Mittari tarkoittaa yleensä mittaa, tai mittaa ja sen mittauksessa käytettyä menetelmää (~mittauksen määrätty suoritustapa) Tekniikassa mittarilla tarkoittaa yleisesti myös mittalaitetta, jolla tietty mittaus tehdään ja josta mittauksen tulos voidaan suoraan lukea Katso myös: Mittaaminen, http://fi.wikipedia.org/wiki/mittaaminen 95 3

Mittaus Edellä annettu mittauksen määritelmä sopii tilanteisiin, joissa on olemassa luonnonlain omainen, kokeellisesti vahvistettu syyseuraussuhde prosessissa mitatun ominaisuuden ja mitan välillä (fysikaaliset systeemit) Esimerkiksi hyvin pienten ja hyvin suurten lämpötilojen mittaamiseen käytetään aivan erilaisia menetelmiä, jotka on kuitenkin tieteellisesti (teorian ja kokeiden avulla) todettu päteviksi ja luotettaviksi 96 Mittaus Kuten myöhemmin näemme, ohjelmisto- ja ohjelmistoprosessimittareissa syy-seuraussuhteet eivät ole aina kovin vahvasti perusteltuja Kaner ja Bond 1 korostavat syy-seuraussuhteen merkitystä ohjelmistomittareissa määrittelemällä mittauksen seuraavasti Measurement is the empirical, objective assignment of numbers, according to a rule derived from a model or theory, to attributes of objects or events with the intent of describing them Taustalla on siis oltava malli tai teoria, joka selittää uskottavasti kohteen ominaisuuden ja sen mitan välisen kausaalisen yhteyden, ei pelkästään tilastollinen korrelaatio 1 KANER, Cem, et al. Software engineering metrics: What do they measure and how do we know?. In: In METRICS 2004. IEEE CS. 2004. 97 4

Suorat ja johdetut mittarit Mittarit voivat olla suoria (direct) tai johdettuja (indirect) Suorien mittareiden mittaukset kertovat sellaisenaan kohteen tilasta (luontaisesti valideja). Esimerkiksi lämpötila on suora mittari. f(ominaisuus) arvo Johdettujen mittareiden mittaukset saadaan yhden tai useamman suoran mittarin mittausten funktiona. Esimerkiksi kuukauden keskilämpötila on johdettu mittari. h( f(o 1 ),g(o 2 ), ) arvo Monien ohjelmistomittarien kohdalla voidaan kuitenkin kysyä, kuinka suoria ja valideja suorat mittarit ovat esim. mitkä asiat oikeasti luokitellaan vioiksi tai kuinka tarkkaan vikojen korjaamisesta todella pidetään kirjaa Sijaismittaa (surrogate metric) käytetään, kun tietyn ominaisuuden mittaaminen suoraan on vaikeaa Esimerkiksi ohjelmayksikön koko sen vika-alttiuden mittana Mittarien avulla halutaan arvioida, ennustaa tai tilastoida mittaajan kannalta mielenkiintoisia kohteen ominaisuuksia 98 Ohjelmistomittarit Ohjelmistotuotannossa on paljon suoria ja johdettuja mittareita, ohjelmistomittareita (software metrics). Ohjelmistomittareilla ja tekijöillä on yhteys. Useimpien tekijöiden sisältä voidaan löytää osatekijöitä, joiden toteutumista voidaan arvioida mittareilla. Kun tekijän osatekijöiden mittarit näyttävät, että osatekijät toteutuvat ohjelmistossa, tekijä toteutuu ohjelmistossa ainakin osittain. Miksi vain osittain? tekijä on yleensä enemmän kuin osatekijöidensä summa kaikille osatekijöille ei ole varmoja mittareita Mittareiden taustalla olevissa teorioissa ja niiden kokeellisessa varmennuksessa on puutteita 99 5

LAATUMITTARIT 100 Laatumittarit Laatumittarit mittaavat ohjelmistotuotteen tai ohjelmistoprosessin a. Laatumittari on funktio, jonka syötteenä on ohjelmistoon liittyvä data ja tuloksena dataa kuvaava numeerinen arvo. Laatumittarin numeerinen arvo (mittauksen tulos) kertoo, missä määrin mitattu data täyttää mittarilla kuvattavan attribuutin (quality attribute) Laatuattribuutti tarkoittaa jotakin laadun ominaisuutta. Esimerkiksi tekijät ja -osatekijät (characteristics) ovat attribuutteja Arvon tulkinta vaatii usein sen suhteuttamista kokeellisesti tai kokemusperäisesti määriteltyyn tavoitetasoon 101 6

Onks kymppi paljon vai vähän? 102 Laatumittarien tarkoitus Laatumittarit ovat laadunvarmistuksen työkaluja. Niiden avulla varmennetaan, että ohjelmistoprojektit etenevät oikein: verrataan toteutunutta a ja tason vaihtelua suunniteltuun un verrataan toteutunutta aikataulua ja budjettia suunniteltuun aikatauluun ja budjettiin tunnistetaan, milloin kehitys- tai ylläpitoprosessia pitää parantaa: kerätään historiatietoa toteutuneista projekteista ja tuotteista Mittarit voivat olla prosessikohtaisia: miten hyvin prosessi ja sen ilmentymä (projekti) vastaavat toisiaan tuotekohtaisia: miten hyvin tuote ja sen tekijät vastaavat toisiaan. 103 7

Laadun mittaus SQuaRE 2502n standardien mukaan Laatumalli 25010 määrittelee käytön laadun ja tuotelaadun piirteet, joista valitaan kullekin projektille relevantit piirteet 25020 ja 25021 luo puitteet ohjelmistomittareiden määrittelylle 25022 ja 25023 antavat suosituksia ja esimerkkejä, mitä mittareita kunkin piirteen kohdalla kannattaa käyttää Huom - prosessin mittaamiseen oma standardinsa ISO/IEC 15504 SPICE http://www.sfsedu.fi/materiaalit 104 Laadun mittaus - tuote koostuu ISO 25023 ISO 25010 indikoi generoi koostuu indikoi käyttää ISO 25021 105 8

Laadun mittaus Ohjelmiston un liittyviä mitattavia ominaisuuksia standardi kutsuu kvantifioitaviksi ominaisuuksiksi (property to quantify, ei ed. kuvassa) Ominaisuus kvantifioidaan käyttämällä mittausmenetelmää (measurement method), joka on toimenpiteiden sarja, joka liittää ominaisuuteen tietyn tyyppisen (measurement scale) arvon Saatua ominaisuuden arvoa kutsutaan perusmitaksi (quality measure element) 106 Laadun mittaus Perusmitat kytketään piirteisiin johdettujen mittareiden kautta (software quality measures) Kuhunkin mittariin liittyy mittausfunktio (measurement function) eli algoritmi, joka (yleensä) yhdistää useamman perusmitan yhdeksi mittarin arvoksi Samaan piirteeseen liittyy tyypillisesti useita mittareita, joiden avulla kvantifioidaan Laatumittarin määrittelystä ilmenee, mikä on peruste mittarin ja piirteen yhteydelle 107 9

Tuotelaadun mittarit ISO 25023 määrittelee kullekin piirteelle yhden tai useamman mittarin, ja antaa suosituksia niiden käytöstä Aksellilla Erittäin suositeltava Suositeltava Harkinnan mukaan Soveltuvuus ulkoisen ja/tai sisäisen laadun mittaamiseen Määrittelee myös perusmitat, joihin johdetut mittarit perustuvat sekä perusmittojen käyttämät mittayksiköt ja -asteikot (esim. koko, aika, työmäärä) Eri ohjelmistomittareita ja niiden suhdetta un tarkastellaan lisää myöhemmin kurssilla! 108 Laatumittarien valinta Laatumittareita valittaessa määrä ei korvaa a. On parempi valita pieni joukko hyvin määriteltyjä mittareita kuin mitata kaikkea mahdollista SQuaRE 25022, 25023 antavat suosituksia ja esimerkkejä Valittavat mittarit riippuvat siitä, mikä on kiinnostavaa ja mitä on ylipäänsä mahdollista mitata. Jotta mittarien käyttö olisi tehokasta, sen täytyy olla keskitettyä. Mittarit täytyy määritellä ylhäältä alaspäin (ensin tavoite, sitten siihen sopivat mittarit), sillä erilaisia mittareita on valtava määrä. Koska kaikkea ei voi eikä kannata mitata, valitut mittarit on perusteltava hyvin. Tähän voidaan käyttää Goal Question Metric -menetelmää (GQM, Basili & Rombach, 1988). 109 10

Goal - Question - Metric GQM [1] perustuu näkemykseen, jonka mukaan järkevään mittaukseen yrityksen tarvitsee 1. Määritellä yritys- ja projektitason tavoitteet 2. Löytää ne yritys-, projekti- ja tuotetason tiedot, jotka määrittävät tavoitteiden toteutumista yrityksen toiminnan tasolla 3. Suunnitella kehys, jonka avulla tiedot kerätään ja tulkitaan kuvaamaan tavoitteita ja niiden toteutumista Eli: 1. Mitkä ovat ne tavoitteet, joiden saavuttamista halutaan seurata? 2. Mitä tietoja pitää saada yrityksen tuotteista ja prosesseista, jotta nähdään, ollaanko tavoitteet saavuttamassa vai ei? 3. Miten tuotteita ja prosesseja koskevat tiedot käytännössä kerätään ja miten niitä pitää tulkita? GQM tarjoaa keinot määritellä kysymyksiin vastaava mittarijoukko. [1] http://www.cs.umd.edu/~mvz/handouts/gqm.pdf 110 GQM-kolmitasomalli GQM on kolmitasoinen malli: Käsitetaso (GOAL) Selvitetään halutut tuote-, prosessi- ja resurssitavoitteet. Eli mittauksen kohde ja mitä siitä halutaan tietää tai muuttaa ja kenen näkökulmasta. Toimintataso (QUESTION) Tavoitteiden perusteella johdetaan joukko kysymyksiä, jotka kuvaavat kunkin tavoitteen toteutumista sitä luonnehtivien asiantilojen kautta Kukin kysymys luonnehtii mittauksen kohdetta un liittyvän ongelman tai faktan kannalta ja tietystä näkökulmasta. Kvantitatiivinen taso (METRIC) Kuhunkin kysymykseen etsitään sellainen (objektiivinen tai subjektiivinen) mittari/mittarit, jonka avulla kysymykseen saadaan kvantitatiivisia vastauksia. GQM:lla ei kannata tehdä liian kunnianhimoisia suunnitelmia. Aluksi on parempi etsiä perusmittarit ydinkysymyksiin ja sen jälkeen vähitellen parantaa mittarikehystä lisäämällä kysymyksiä ja niihin liittyviä mittareita. 111 11

GQM-esimerkki 1 GOAL: QUESTIONS: Halutaan kustannuksiltaan ja vaikuttavuudeltaan tehokas koodausstandardi Miten standardia käytetään? Koodaajien tuottavuus? Koodin? METRICS: Standardia käyttävien koodaajien lkm. Kvalitatiiviset kokemukset standardista Koodin määrä Työmäärä Virheet 112 GQM-esimerkki 2 Tavoite Tarkoitus Parannetaan Kysymys 1 Mittarit Kysymys 2 Mittarit Kohde (prosessi) Asia/ongelma Näkökulma muutospyyntöjen käsittelyn ajallista täsmällisyyttä ja tehokkuutta projektipäällikön näkökulmasta. Mikä on nykyinen muutospyynnön käsittelynopeus? Muutospyynnön keskim. käsittelyaika Keskipoikkeama Käsittelyaikatavoitteen ylärajan ylittävien pyyntöjen osuus prosentteina Tehostuuko käsittely parannusten myötä? Nykyinen keskimäär. käsittelyaika prosentteina valitusta perustasosta Projektipäällikön oma subj. arvio 113 12

GQM Usealla GQM mallilla voi olla yhteisiä kysymyksiä ja mittareita Ohjaa siihen, että mittauksen suorituksessa voidaan ottaa huomioon eri näkökulmat mitattavaan asiaan Sama mittaus voi tuottaa erityyppisiä arvoja näkökulmasta riippuen 114 KOON MITTARIT 115 13

Ohjelmiston kokomittarit Ohjelmiston kokoa käytetään monessa johdetussa mittarissa normalisoimaan eri kohteiden muut mitat keskenään vertailukelpoisiksi. Vaikka erilaisia kokomittareita on monia, kaksi on ylitse muiden: KLOC (Kilos Lines Of Code): Kuinka monta tuhatta koodiriviä on ohjelmistossa. FP (Function Points), toimintopisteet: Kuinka paljon toiminnallisuutta on ohjelmistossa. Muita kokomittareita: Montako lausetta on ohjelmistossa (KLOC-variantti). Montako luokkaa/metodia/funktiota on ohjelmistossa. Montako riippumatonta polkua (independent path) on ohjelmistossa tai (yleensä) sen osassa. Riippumaton polku on sellainen suoritusreitti ohjelmistossa, että sitä ei voi saada yhdistämällä muista riippumattomista poluista. 116 KLOC KLOC on yleisin ohjelmiston kokomittari. Sillä mitataan ohjelmiston kokoa koodiriveinä joko kommenttien kanssa tai ilman niitä. KLOC on (suhteellisen) selkeä mittari, jota käytetään koon lisäksi monimutkaisuuden sijaismittana (surrogate): mitä isompi ohjelmisto/ohjelma/luokka/metodi tms. on, sitä mutkikkaampi se yleensä on (ja esimerkiksi sitä hankalampi testata ja ylläpitää). KLOC:n heikkous on sen ohjelmointikieliriippuvuus. Eri ohjelmointikielillä toteutetuista ohjelmistoista lasketut KLOCluvut eivät ole keskenään verrannollisia. Myös koodaustyylit vaikuttavat jonkin verran koodirivien määrään, mutta isoissa ohjelmistoissa erojen suhde koodirivien kokonaismäärään on melko pieni. KLOC:n sijaan kannattaa laskea esimerkiksi puolipisteitä (so. lauseita), jos rivien määrän vaihtelu osoittautuu ongelmaksi. 117 14

KLOC Montako Koodiriviä? Lausetta? Puolipistettä? Kommenttiriviä? Tyhjiä rivejä? Jotain muuta? 118 KLOC-ongelmia Koska KLOC riippuu käytetystä ohjelmointikielestä ja koodaustavasta, KLOC-arvot ovat monen, laadun kannalta vähemmän tärkeän muuttujan summa. Lisäksi KLOC:lla on ikävä ominaisuus: se on nimensä mukaisesti koodirivien määrä, joten sitä ei voida laskea, ennen kuin koodi on kirjoitettu. Miten lasketaan kirjastoista/kehyksistä uudelleenkäytetyt koodirivit? Uuden koodin määrä voi olla suhteessa mitätön. Lähdekoodia ei edes usein saatavissa, eikä tiedetä mitkä rivit laskea Nykyaikaisten online-sovellusten ja palveluiden toteuttamisessa saatetaan käyttää useita ohjelmointi- ja skriptikieliä sekä deklaratiivisia määrityksiä Koodia upotetaan myös esim. templaatteihin, joista taustalla oleva järjestelmä generoi esim. html:ää ja javaa tai javascriptiä Miten nämä lasketaan?? 119 15

KLOC-ongelmia KLOC-arvoja voidaan arvioida, mutta arviot ovat summittaisia. Olisi parempi, jos jo määrittely- tai suunnitteluvaiheessa ohjelman koolle voisi antaa luotettavan arvion. Määrittelystä laskettava kokoarvio on mahdollista toimintopisteillä (function points). Niiden avulla jo melko yleisistä määrityksistä voidaan arvioida, miten paljon toiminnallisuutta ohjelmistossa on. Arviot tarkentuvat projektin edetessä ja ohjelmiston vaiheittain valmistuessa 120 Toimintopisteet Toimintopisteiden laskemisen pääidea on tuloksen riippumattomuus toteutusteknologiasta: lasketaan suoraan toiminnallisuuden määrä: fp( <ohjelmiston spesifikaatio> ) Z Ei väliä koodataanko C:llä vai Javalla, toiminnallisuus on sama Tuo esiin tuottavuuserot -> kuinka paljon koodia ja työtä tarvitaan tietyn kokoisen toiminnallisuuden toteuttamiseen (lukujen vertailukelpoisuus) Toimintopisteet on esitelty niinkin aikaisin kuin vuonna 1979 (Albrecht). Vaikka menetelmää on tämän jälkeen kehitetty eteenpäin, on alkuperäinen malli edelleen toimiva. Alkuperäinen käyttötarkoitus: auttaa kehittäjiä arvioimaan työmääriä Tällä hetkellä (alkuperäisestä) toimintopistemalleista huolehtii kokonainen organisaatio: International Function Point Users Group, IFPUG (www.ifpug.org). Toimintopistestandardeja on useita, esimerkiksi suomalainen FiSMA menetelmä (ISO/IEC 29881:2010, myös suomenkielisenä SFS standardina) http://www.fisma.fi/toiminta/menetelmat/ ja http://www.fisma.fi/wpcontent/uploads/2006/09/fisma_fsm_method_11.pdf 121 16

Toimintopisteiden laskenta 1 Perinteiset toimintopisteet (ISO/IEC 20926) lasketaan kolmessa vaiheessa: 1. Lasketaan raakapisteet Arvioidaan ohjelmiston komponenttien määrä: syötteiden määrä, kuten lomakkeet tulosteiden määrä, kuten raportit ja virheilmoitukset kyselyiden määrä, kuten generoitavat näytöt loogisten tiedostojen määrä, kuten tietokannan taulut ulkoisten liittymien määrä, kuten käyttöliittymät, liittymät muihin järjestelmiin ja liittymät muihin sovelluksiin Määritellään kullekin komponentille painokerroin sen mukaan, miten työlääksi sen toteuttaminen arvioidaan (helppo/yksinkertainen, keskimääräinen, vaikea/monimutkainen): syötteet: 3 (yksinkertainen), 4 (keskimääräinen), 6 (vaikea) tulosteet: 4, 5, 7 kyselyt: 3, 4, 6 loogiset tiedostot: 7, 10, 15 ulkoiset liittymät: 5, 7, 10 Lasketaan komponenttimäärien ja painokertoimien tulojen summa. 122 Toimintopisteiden laskenta 2 2. Lasketaan ohjelmiston kompleksisuuskerroin (complexity factor) Kompleksisuuskerroin saadaan arvioimalla 14 kysymystä asteikolla 0-5, missä 0=ei vaikutusta, 1=satunnainen, 2=kohtalainen, 3=keskimääräinen, 4=merkittävä, 5=olennainen vaikutus. Saadut arvot lasketaan yhteen. 3. Lasketaan toimintopisteet FP kaavalla FP = CFP*(0,65 + 0,01* RCAF), missä CFP = raakapisteet RCAF = kompleksisuuskerroin 123 17

Kompleksisuuskertoimen kysymykset Kompleksisuuskertoimen RCAF kysymykset: Tarvitaanko luotettavaa tietojen varmistus- ja palautusmenettelyä? Tarvitaanko tietoliikenneominaisuuksia? Onko hajautettua prosessinhallintaa? Onko kyseessä suorituskykykriittinen ohjelmisto? Käytetäänkö järjestelmää raskaasti kuormitetussa ympäristössä? Tarvitaanko interaktiivista tietojen syöttöä ohjelmiston suoritusaikana? Täytyykö interaktiivinen tietojen syöttö synkronoida usealle näytölle tai operaatiolle? Päivitetäänkö tiedostoja interaktiivisesti ohjelmiston suoritusaikana? Ovatko syötteet, tulosteet, tiedostot tai kyselyt monimutkaisia? Onko ohjelmiston suorittama laskenta monimutkaista? Onko koodi tarkoitettu uudelleenkäytettäväksi? Ovatko ohjelmiston muunnokset ja asennus mukana suunnittelussa? Onko ohjelmisto suunniteltu toimivaksi useina versioina eri organisaatioissa? Onko ohjelmiston käytettävyys keskeisessä roolissa? 124 FP-esimerkki Olkoon meillä sovellus, jolle on tehty seuraavat kokoarvot: 1 yksinkertainen syöte, 1 monimutkainen 2 keskivertoa tulostetta, 1 monimutkainen 1 helppo kysely, 1 keskiverto, 1 monimutkainen 1 yksinkertainen tiedosto, 1 monimutkainen 2 monimutkaista ulkoista liittymää Kompleksisuuskertoimeksi on saatu 41 (14 kysymystä, vajaa 3 pistettä/kysymys). Näillä arvoilla saadaan: CFP = (1*3+1*6)+(2*5+1*7)+(1*3+1*4+1*6)+(1*7+1*15)+(2*10) = 9+17+13+22+20 = 81 RCAF = 41 FP = CFP*(0,65+0,01*RCAF) = 81*(0,65+0,41) = 81*1,06 = 85,86 125 18

SNAP IFPUG on täydentänyt ohjelmiston koon määrittelyä toimintopisteiden lisäksi SNAPpisteillä Software Non-Functional Assessment Process http://www.ifpug.org/about-ifpug/about-snap/ Lasketaan pisteet - eli ei-toiminnallisille vaatimuksille Skaalautuvuus, turvallisuus, tehokkuus, siirrettävyys jne. 126 FISMA -pikalaskuri FISMA FP käyttää järjestelmän käyttäjän ymmärtämää kieltä toimintojen määrittelyssä Pikalaskuria käytetään aikaiseen arviointiin projektin valmisteluvaiheessa Luetellaan toiminnot ja käytetään oletuskokoja Määritysten tarkentuessa ja implementoinnin edetessä voidaan tehdä uusia tarkentuvia arvioita Tarkentuvia arvioita voidaan käyttää mm. muutosten hinnan arviointiin ja jo toimitettujen osuuksien arvon määrittelyyn http://www.fisma.fi/toiminta/menetelm at/ 127 19

FP-estimoinnin tarkkuus työmäärän (effort) arvioinnissa http://www.ifpug.org/about-ifpug/faqs-2/#one 128 FP:n edut ja haitat Edut: Arviointia voidaan tehdä jo ennen projektin alkua, joten FP:n arvoja voidaan käyttää projektin aloituspäätöksen tukena. Pikalaskurit FP ei riipu käytettävistä ohjelmointikielistä tai työkaluista -> eri teknologioilla toteutettujen projektien vertailtavuus FP on osoittautunut melko luotettavaksi toiminnallisuuden mittariksi. FP:n laskeminen mahdollistaa yksikkökustannusperustaisen projektin ohjauksen ja laskutuksen -> laskutus perustuu toimitetun toiminnallisuuden määrään, ei tehtyihin tunteihin Vrt. Running Tested Features ketterän kehityksen metriikka [1] [1] http://xprogramming.com/articles/jatrtsmetric/ 129 20

FP:n edut ja haitat Kritiikkiä: Saadut FP-arvot ovat osittain subjektiivisia (menetelmästä riippuen). Ne riippuvat käytetyistä kertoimista, käytetystä FPvariantista ja arvioijasta. Myös käsityönä tehtävän laskennan kalleutta on moitittu (laskentaa on pyritty automatisoimaan). FP on tarkoitettu dataintensiivisille sovelluksille. Se antaa liian pieniä arvoja algoritmi-intensiivisille sovelluksille. Tämä tosin voidaan korjata käyttämällä modernimpia FPvariantteja. Huomaa, että toimintopisteiden (toiminnallisuuden) määrä on vain yksi projektin työmäärään ja kustannuksiin vaikuttava tekijä [1, s. 51] Esimerkiksi FiSMA:n ND21 tilanneanalyysimenetelmä uuskehitykseen ottaa huomioon 21 vaikuttavaa tuottavuustekijää, joista tuotteen vaatimukset ovat yksi osuus http://www.fisma.fi/toiminta/menetelmat/ [1] Pekka Forselius: Onnistunut tietojärjestelmän hankinta. Talentum, 2013. 130 FP:n ja KLOC:n suhde Koska sekä KLOC että FP mittaavat ohjelmiston kokoa, luonteva kysymys on, onko mittareilla yhteys. Tällainen yhteys on olemassa. Tietyllä ohjelmointikielellä yhden toiminnallisuuspisteen toteutus vie sovelluksesta riippumatta likimain saman verran koodirivejä ( backfired function point count). Seuraavassa muutamia suhdelukuja (LOC/FP) (1 KLOC = 1000 LOC). Luvut ovat suuntaa antavia (täytyy kokeellisesti vahvistaa aika ajoin): Assembler: 320 (esimerkki: 85,86*320=27475 riviä koodia) C: 130-90 Cobol: 100 C++: 65-55 Java: 45 (esimerkki: 85,86*45=3863 riviä koodia) Visual Basic: 30 Power Builder (sovelluskehitin): 15 SQL: 10 Mitä ilmaisuvoimaisempi ohjelmointikieli on kyseessä, sitä pienempi on sen LOC/FP-suhdeluku. 131 21

Story points? Ketterässä kehityksessä käytetty tehtävän laajuuden/työmäärän/vaikeuden arvioinnin apuväline Suhteellinen arvio, jonka merkityksen tiimit itse määrittävät ( ~ järjestysmitta-asteikko) https://www.agilealliance.org/glossary/pointsestimates-in/ 132 22