Laudaturseminaari 3.3.1999

Jari Takala, 126823

 

Ohjelmistoprojektien kustannusarviointi

 

Yleistä

Ohjelmistoyrityksen organisaation eri tasoilla on omat tarpeensa kustannusten arviointiprosessin käynnistämiseen.

Ohjelmistoyrityksen johto tekee päätöksen ohjelmistoprojektin käynnistämisestä. Päätöksen tueksi se tarvitsee mahdollisimman tarkan arvion projektin vaatimista resursseista ja siitä aiheutuvista kustannuksista. Projektin alkuvaiheessa, varsinkin päätettäessä projektin mahdollisesta aloittamisesta, on yritysjohdolla usein käytettävissään hyvin vähän yksityiskohtaista informaatiota kehitettävästä ohjelmistosta. Päätöksiä joudutaan tekemään usein jo ennen kuin ohjelmistolle asetettavia vaatimuksia on tarkasti määritelty. Myöhemmin projektin edetessä johdolla on mahdollisuus saada tarkemmat tiedot projektin piirteistä sekä arviot kustannuksista ja resursseista.

Projektipäälliköt ovat vastuussa projektinsa budjetinvalvonnasta. Heidän on oltava selvillä ohjelmistokehityksen vaatimista kustannuksista koko projektin elinajan. Kustannusarvioiden tarkkuus paranee projektin edetessä, koska informaatiomäärä ohjelmistosta ja ohjelmointiprosessista kasvaa. Tarkentuvien arvioiden perusteella projektijohto voi tarvittaessa neuvotella muiden tahojen kanssa, kannattaako projekti keskeyttää vai jatkaa tietyin muutoksin.

Kustannusarviot antavat pohjan monelle ohjelmistoprojektin aikana ilmaantuvalle kysymykselle:

Arviointimenetelmät

Barry Boehm on esitellyt seitsemän eri menetelmää ohjelmistokustannusten arviointiin [1]:

  1. Kustannusten mallintaminen (algorithmic cost modeling).
  2. Kustannusmalli saa syötteenä tiedot oleellisista kustannustekijöistä ja muodostaa niiden perusteella kustannusarvion käyttäen laskentaan valmiita algoritmeja. Syötteet ovat normaalisti arvioita, kuten oletettu ohjelmiston koko. Aiemmista projekteista tarvitaan informaatiota, jotta mallille annettavat syötteet olisivat mahdollisimman lähellä toteutuvia arvoja.

  3. Asiantuntija-arviointi (expert judgement).
  4. Arvioinnissa käytetään apuna projektissa käytettävän kehitysympäristön ja -ohjelmiston sekä sovellusalueen asiantuntijoita.

  5. Analogiaan perustuva arviointi (estimation by analogy).
  6. Analogioihin perustuvissa menetelmissä kustannusarvio muodostuu vertailemalla ohjelmistoyrityksen aiempia projekteja nykyiseen projektiin. Menetelmä vaatii aiemmista projekteista saatujen tietojen ylläpitoa. Projektien samanlaisia piirteitä käytetään kustannusarvion lähtökohtana.

  7. Parkinsonin menetelmä (Parkinson's law).
  8. Kustannusarvio riippuu käytettävissä olevista resursseista.

  9. Asiakkaan "varoihin" perustuva arviointi (pricing to win).
  10. Kustannusarvio riippuu asiakkaan budjetista. Kustannusarvio on hinta, jonka asiakas on valmis maksamaan ohjelmistosta.

  11. Ylhäältä-alas-arviointi (top-down estimation).
  12. Kustannusarvio muodostetaan ohjelmiston yleisen toiminnallisuuden perusteella.

  13. Alhaalta-ylös-arviointi (bottom-up estimation).

Jokainen ohjelmiston komponentti arvioidaan erikseen. Kustannusten summa on lopullinen kustannusarvio.

Varsinkin suurissa projekteissa tulee arviointimenetelmiä käyttää rinnakkain parhaan tuloksen saavuttamiseksi. Jos eri menetelmien antamat tulokset eriävät merkittävästi toisistaan, tarvitaan projektista lisäinformaatiota. Yleisimmät tavat kustannusten arviointiin ovat malleihin ja analogioihin perustuvat menetelmät. Tunnetuin kustannusmalleista on COCOMO (Constructive Cost Model) [2].

COCOMO

COCOMO on avoin kustannusmalli eli sen kaikki algoritmit ovat vapaasti saatavilla. COCOMOa käytetään yleisimmin arvioitaessa projektin vaatimaa työmäärää ja sen kestoa.

COCOMO jakaa ohjelmistoprojektit kolmeen luokkaan:

Merkittävin osa ohjelmistoprojektin kustannuksista aiheutuu henkilöstöresursseista, joihin kohdistuva kustannusarviointi on myös kaikkein ongelmallisinta. COCOMO käsittelee henkilöresursseja henkilötyökuukausina (person month, PM). Henkilötyökuukausi on se aika, jonka projektissa mukana oleva henkilö käyttää ohjelmistokehitykseen kuukauden aikana.

Mallista on olemassa kolme erilaista versiota, jotka eroavat toisistaan yksityiskohtaisuuksiensa perusteella. Perusmallissa lähtökohtana on toimitettavan ohjelmiston kokoarvio. Koko ilmaistaan yksiköllä KLOC eli tuhansina lähdekoodiriveinä. Henkilökuukausien määrä lasketaan seuraavasti:

Vaikeusaste

Henkilötyökuukaudet (PM)

Helppo

PM = 2.4 * (KLOC) 1.05

Puolivaikea

PM = 3.0 * (KLOC) 1.12

Vaikea

PM = 3.6 * (KLOC) 1.20

COCOMO tarjoaa myös mahdollisuuden ohjelmistokehityksen vaatiman minimiajan (time to develop, TDEV) arviointiin. Malli antaa arvion kuukausina.

Vaikeusaste

Minimi kalenteriaika (TDEV)

Helppo

TDEV = 2.5 * (PM) 0.38

Puolivaikea

TDEV = 2.5 * (PM) 0.35

Vaikea

TDEV = 2.5 * (PM) 0.32

Henkilökuukausia ja kalenteriaikaa apuna käyttäen voidaan arvioida projektissa tarvittava henkilöstömäärä.

Esimerkki perusmallin käytöstä:

Arvioitu ohjelmiston koko

= 3000 riviä

Henkilötyökuukaudet

= 2.4 * (31.05) = 7.6 PM

Kalenteriaika

= 2.5 * 7.60.38 = 5.4 kk

Henkilöstö

= 7.6 / 5.4 = 1.4 eli 1-2 henkilöä

COCOMOn perusmalli on käyttökelpoisin ohjelmistoprojektin alkuvaiheissa. Kaksi muuta mallia antavat tarkempia arvioita, koska niissä on otettu huomioon ohjelmiston koon lisäksi muitakin kustannustekijöitä.

Alkuperäisen COCOMOn rinnalle on tullut uusi versio, COCOMO 2, joka pyrkii tarjoamaan paremmat mahdollisuudet tarkkoihin kustannusarvioihin [3]. COCOMO 2 tarjoaa ohjelmistoprojektin eri vaiheisiin erilliset mallit työmäärien arviointiin.

Arviointiprosessin ongelmia

Ohjelmistoyrityksillä on niiden luonteesta johtuen eri tyyppisiä ongelmia tarkkojen kustannusarvioiden laskemisessa. Kaikille yhteisiäkin ongelma-alueita on löydettävissä. Seuraavassa niistä tyypillisimpiä [4]:

 

Lähteet

1. Boehm, B.: Software Engineering Economics, IEEE Transactions on Software Engineering SE-10(1):4-21, 1984.

2. COCOMO. Internet www-sivu, URL: http://sunset.usc.edu/COCOMOII/cocomo.html (24.2.1999).

3. Modern Empirical Cost and Schedule Estimation Tools. Internet www-sivu, URL: http://www.dacs.dtic.mil/techs/estimation/toc.shtml (24.2.1999).

4. Software Cost Estimation Study. Internet www-sivu, URL: http://wwwsel.iit.nrc.ca/projects/cp/NRC37116/TOC.html (12.2.1999).