Teknillinen korkeakoulu Tik-76.601 Ohjelmistotuotannon perusopintojakso Cost Estimation Henna Pietiläinen 45356D Ti Muistio työmäärän arviointiin käytettävistä menetelmistä 1. Johdanto SAD-projektin ensimmäinen vaihe on nyt edennyt siihen vaiheeseen, että projektille pitää tehdä kustannusarvio projektisuunnitelman perusteella. Kustannusten arviointiin on olemassa monenlaisia arviointitapoja jotka vaihtelevat sen mukaan minkä tyyppisen projektin kustannusten arvioimiseen ne on tarkoitettu. Kustannusarviota tarvitaan niiden kustannuksien arvioimiseen, joita projektin ensimmäinen vaihe tuottaa Softwherelle, sekä tulevan rekrytoinnin suunnittelemiseen. Jotta kustannusarviointi voidaan tehdä, pitää ensin arvioida projektin läpiviemiseen tarvittava työmäärä. Työmäärän arviointiin käytettäviä menetelmiä ovat mm. Toimintopiste-analyysi FPA (function point analysis) ja COCOMO (constructive cost model). 2. Dokumentin tarkoitus Tämän dokumentin tarkoituksena on analysoida erilaisia työmäärien arviointiin käytettyjä menetelmiä, etsiä niiden hyvät ja huonot puolet kun niitä sovelletaan SAD-projektin ensimmäisen vaiheen työmäärän arviointiin. Dokumentin tarkoituksena on olla apuna kun tehdään loppullista päätöstä siitä mitä työmäärän arviointimenetelmää käytetään kun tarvitaan arvio työmäärästä projektin kustannusarvion tekoon. 3. Tilanneanalyysi Kustannuksia arvioitaessa on tärkeää miettiä ensin projektin tuottavuutta, sillä se vaikuttaa suuresti kustannuksien syntymiseen. Mitä huonompi on projektin tuottavuus, sitä kauemmin projektin läpivieminen kestää ja sitä suuremmat kustannukset projektista syntyvät. Ja päin vastoin. Tuottavuuteen vaikuttavia seikkoja ovat muun muassa ohjelmiston koko, ohjelmiston reaaliaikaisuus ja tekijöiden ammattitaito. SAD-projektissa tuotettava ohjelmisto on suurikokoinen. WWW-clientin pitää pystyä käsittelemään monen suuren tietokannan tarjoamia tietoja erilaisilla hakuehdoilla. Tämä siis osaltaan pienentää tuottavuutta, sen lisäksi suurin osa projektiin osallistuvista ihmisistä on vastavalmistuneita tai vielä opiskelijoita, jolloin heidän ammattitaitonsa ei ole vielä kehittynyt kovin suureksi. Myös tämä seikka pienentää tuottavuutta. Toinen kustannuksia arvioitaessa tarvittava asia on työmäärän arviointi. Jotta kustannukset pystytään arvioimaan, pitää ensin arvioida paljonko projektin läpivieminen vaatii työtunteja. Työmäärän arvioinnissa voidaan käyttää valistunutta arvausta, joka perusttuu siihen kuinka paljon aikaisemmin tehdyt, samankaltaiset projektit ovat vaatineet työtunteja. Jotta arvauksen tulos saataisiin mahdollisimman hyväksi voidaan käyttää erilaisia työmäärän arviointiin tarkoitettuja menetelmiä. Näitä ovat mm. tässä muistiossa käsitellyt Toimintopiste- analyysi (FPA) ja COCOMO-menetelmä. Softwhere ei ole koskaan aikaisemmin tehnyt mitään näin suurta projektia, joka liittyisi WWW-sovelluksiin. Tämän takia kustannusten arvioiminen edellisten projektien perusteella on hankalaa, mutta jonkinlainen suuntaviiva kustannuksille sieltä saadaan. Niilo Nörtti ehdotti viestissään että käyttäisimme tarvittavan työmäärän arvointiin Toimintopiste-analyysia (FPA) ja Pierre Lebum ehdotti viestissään että käyttäisimme COCOMO:a. 4. Päämääräanalyysi Päämääränä on löytää sellainen menetelmä työmäärän arvioinnille, joka sopii mahdollisimman hyvin SAD-projektin kaltaisen projektin työmäärän arvointiin ja näin ollen luo hyvän arvion sille paljonko projektin työmäärä on ja paljonko sen seurauksena syntyy kustannuksia. Tässä dokumentissa keskitytään vertailemaan Toimintopiste-analyysiä ja COCOMO-menetelmää, sillä mielestäni ne ovat parhaiten tälle projektille soveltuvat arviointimenetelmät. 5. Työmäärän arviointiin käytettävät menetelmät Niilo Nörtti suositteli kirjeessään Toimintopiste-analyysiä, sillä hänen mielestään se on kuvaa kaikkein parhaiten todellisia tilanteita. Pierre Lebum taas suositteli COCOMO-menetelmää, sillä hänen ystävillään oli hyviä kokemuksia siitä. Nämä molemmat ovat menetelmiä, jotka perustuvat historiatietojen systemaattiseen käyttöön. Seuraavissa kappaleissa on omaa analyysiani molemmista menetelmistä: 5.1 Toimintopiste-analyysi eli FPA Toimintopiste-analyysissä tarkastellaan ohjelman toiminnallisuutta eli syötteiden, tiedostojen, tulosteiden yms. määrää. Tuloksena saadaan ohjelman toimintopisteiden lukumäärä. Toimintopisteiden lukumäärästä taas saadaan työmäärä kun tunnetaan aikaisempien projektien perusteella toimintopisteen toteuttamiseen tarvittava työmäärä. FPA-mallia käytetään lähinnä kaupallis-hallinnollisten ohjelmistojen yhteydessä, mutta sitä on myös yritetty sovittaa reaaliaikaohjelmistojen yhteyteen. Toimintopiste-analyysi olisi siinä mielessä hyvä SAD-projektin ensimmäisen vaiheeseen että meillä on jonkinlaista tietoa saatavilla siitä paljonko WWW-sovelluksen eri toimintopisteiden toteuttaminen vaatii. Toisaalta Mary Smithin minulle toimittavat alustavat tiedot olivat kuitenkin niin niukkoja, että niistä käy ilmi vain koko WWW-sovelluksen tekemiseen vaadittava työmäärä. Jos kuitenkin on mahdollista saada tarkemmat laskelmat aikaisemmin tehdyistä projekteista, joissa kävisi ilmi toimintopisteen toteuttamiseen tarvittava työmäärä, voisi tämä analyysitapa antaa tarkankin kuvan kustannuksista. Toinen ongelmakohta tämäntyyppisessä analyysissä on se minkä Pierre Lebumkin toi ilmi viestissään, eli se mitkä kaikki syötteet lasketaan toimintopisteiksi. Kaikkia hiiren napin painalluksia ei voida laskea syötteiksi vaan syötteenä voitaisiin käyttää vaikkapa sivuja. 5.2 COCOMO COCOMO-mallissa käytetään lähtökohtana ohjelman kokoa, koodiriveinä laskettuna. Muita mallissa käytettäviä laskuperusteita ovat kustannuskertoimet (projektin vaikeusaste, osallistujien kokemus, luotettavuusvaatimukset jne.). COCOMO-mallin tuloksena saadaan työmäärä henkilötyökuukausina ja projektin ihanteellinen kalenteriaika. COCOMO-mallin hyviä puolia on se, että se ottaa huomioon sellaisia projektiin oleellisesti vaikuttavia seikkoja kuten vaikeusasteen, kokemuksen ja luotettavuusvaatimukset, mitkä ainakin SAD-projektissa painavat, koska vaikeusaste on korkea ja osallistujien työkokemus vähäistä. Näitä asioita FPA-malli ei ota lainkaan huomioon. Mallin huono puoli taas on se että se käyttää lähtökohtana ohjelman kokoa koodiriveinä, mikä ei välttämättä ole kovinkaan hyvä mittari. Koodirivien määrä kun riippuu paljon siitä millaista koodia kirjoitetaan, mitä ohjelmointikieltä käytetään, paljonko käytetään kommenteja koodin seassa ja kuinka optimoitua koodi on. 5.3 COCOMO ja FPA Kuten Pekka Pehmo jo viestissään ehdottikin, voidaan työmäärän arviointiin käyttää molempia yllämainittuja malleja yhdessä. Tällöin arvioidaan ensin ohjelman toimintopisteiden lukumäärä FPA-menetelmällä ja sen jälkeen muunnetaan toimintopisteet ohjelmariveiksi muunnostaulukkoa käyttäen. Tämän jälkeen ohjelmarivien määrästä saadaan COCOMO-mallilla työmäärä ja kalenteriaika-arviot. Mielestäni tämä, COCOMO-mallin ja FPA-mallin yhdistäminen sopisi parhaiten SAD-projektin ensimmäisen vaiheen työmäärän arviointiin, sillä siinä otettaisiin huomioon sekä WWW-sovellukseen tulevat useat erilaiset toimintopisteet ja niiden lisäksi vielä COCOMO-mallin etuna ovat kustannuskertoimet. Valittiinpa sitten työmäärän analysointiin mikä näistä vaihtoehdoista tahansa, olisi mielestäni tärkeää että kun menetelmää on käytettyä ollaan saatu arvio työmäärälle järjestettäisiin palaveri, jossa asiantuntijat, kuten Niilo Nörtti, Pauli Porho, tiimien vetäjät Tero Testi, Keijo Käyli ja Timo Toiminto kävisivät läpi saadun arvion ja tutkisivat sen oikeellisuutta ennen kuin työmääräarviota käytetään kustannusarvion tekoon. 6. Lopputulokset Mielestäni parhaaseen lopputulokseen työmäärän arvioinnissa päästään käyttämällä rinnakkain sekä COCOMO-menetelmää, että Toimintopiste-analyysia (FPA), jolloin otetaan huomioon sekä tarvittavat toimintopisteet, että projektiin vaikuttavat kustannuskertoimet. Kun näiden mallien yhdistämisellä saadaan hyvä arvio SAD-projektin ensimmäisen vaiheen vaatimasta työmäärästä voidaan sen perusteella laskea kustannusarvio.