Työmäärän arviointi Sami Kollanus TJTA330 Ohjelmistotuotanto 20.3. Vaihtoehtoja Arvioidaan projektin jälkeen (onnistuu varmasti) Verrataan karkeasti samanlaisiin aiempiin projekteihin Ositetaan projekti ja arvioidaan yksinkertaisesti kustannukset (asiantuntija-arvio) Käytetään empiirisiä kustannusmalleja Pressman 2000, 125. 2 Arviointiprosessi Ohjelmiston koon laskeminen Projektin ympäristön arviointi Aiempien kokemusten hyödyntäminen Riskien arviointi 3 1
Ohjelmiston koon arviointi Koodirivien määrä (LOC) Toimintopisteet (function points) Periaatteet ISO-standardoitu Silti monta eri menetelmää! Toimintopistemenetelmien vertailua http://www.fisma.fi/projektijohtaminen/arviointimenetelmat/kiss.htm 5 IFPUG-menetelmä International Function Point Users Group (IFPUG) http://www.ifpug.org Kehittää ja ylläpitää standardoitua IFPUGmenetelmää toimintopisteiden laskemiseksi Nykyinen versio.2 6 2
IFPUG-menetelmän komponentit 1. Internal logical files (ILF) Loogisia, pysyviä entiteettejä, joita ohjelmisto ylläpitää 2. External interface files (EIF) Loogisia pysyviä entiteettejä, joihin ainoastaan viitataan sovelluksesta, mutta niitä ylläpitää toinen sovellus 3. External inputs (EI) Loogisia liiketoimintaprosesseja, jotka ylittävät sovelluksen rajan niin, että esim. ylläpitävät ohjelman sisäistä tietoa (esim. käyttäjän toiminnot). External outputs (EO) Datan ulosmeno (raportit, tiedostot, yms.) 5. External queries (EQ) Siis kysellään ulkopuolelta jotain tietoa IFPUG-menetelmän komponentit EI EO EQ SOVELLUKSEN RAJAPINTA ILF EIF 8 Arvioidaan kompleksisuus Low Average High ILF EIF EI EO EQ 5 3 3 10 5 15 10 6 6 9 3
Esimerkki: vaatimukset 1. Ohjelmiston on talletettava ja ylläpidettävä seuraavia työntekijätietoja: nimi, numero, virka-asema, katuosoite, kaupunki, osavaltio, postinumero, syntymäaika, puhelinnumero, toimipiste ja viimeinen tietojen päivitysaika. 2. Ohjelmiston täytyy pystyä lisäämään uusia työntekijöitä, päivittää tietoja, poistaa tietoja ja yhdistää useampaan kertaan rekisteröidyt työntekijät. 3. Ohjelmiston täytyy tuottaa aikataulutettuna viikkoraportti, joka sisältää listan niistä työntekijöistä (nimi ja numero), joiden tiedot ovat muuttuneet viimeisen seitsemän vuorokauden aikana.. Käyttäjän täytyy pystyä katsomaan ja selaamaan kaikkia työntekijätietoja. 10 Esimerkki: vaatimukset 5. Käyttäjäturvaan liittyvä tieto (käyttäjätunnus ja salasana) on erillisen ohjelman vastuulla, jota käytetään sisään kirjauduttaessa käyttäjän tunnistamiseen. 6. Mihinkään muuhun ohjelmiston ulkopuoliseen tietoon ei ole viittauksia. Syntymäaika salataan riittävän monimutkaisella algoritmilla, jotta sitä ei voida suoraan lukea käyttäjätiedoista. 8. Ohjelmiston täytyy suoriutua tiedon ylläpidosta alle sekunnin vasteajassa suurimman kuormituksen aikaan kello 8-1 (Itäisen USA:n aikavyöhyke, GMT -5) 9. Ohjelmiston täytyy käyttää ohjelmointikieliä, jotka tukevat järjestelmän avoimuutta ja ovat yhteensopivia Oraclen tietokantojen kanssa. 11 Esimerkkilaskelma Oletetaan kaikissa kohdissa kompleksisuus alhaiseksi: Internal logical file: Työntekijöiden tiedot 1 IFL = unadjusted FP External interface file: Käyttäjätietoa hallitseva järjestelmä 1 EIF = 5 unadjusted fp 12
Esimerkkilaskelma External input processes: käyttäjän lisäys, tietojen päivitys, työntekijän poisto ja duplikaattien yhdistäminen EI = * 3 = 12 unadjusted fp External output processes: Näkymä käyttäjätietoihin, sisältää syntymäajan kryptauksen. 1 EO = unadjusted fp 13 Esimerkkilaskelma External query process: Viikkoraportti ja sisäänkirjautumiskysely 2 EQ = 2*3 = 6 unadjusted fp Lopputulos: +5+12++6 = 3 unadjusted fp 1 Työmäärän arviointi Laskentakaava on yleisesti muotoa: Työmäärä = A * koko B * M A = vakio, joka riippuu organisaatiosta ja kehitellävän ohjelmiston tyypistä B = eksponentti korjaa laajojen projektien erityistä kuormitusta M = kuvaa projektikohtaisia ominaisuuksia Sommerville 2001, 521. 15 5
COCOMO COnstructive COst MOdel Varmasti tunnetuin estimointimalli Barry Boehm 1981: Software Engineering Economics Taustalla laaja tutkimusaineisto ohjelmistojen kustannuksiin vaikuttavista tekijöistä COCOMO II vuonna 199 16 COCOMO:n peruskaavat Yksinkertainen projekti, pieni tiimi: PM = 2, * (KDSI) 1,05 * M Kompleksisempi projekti, uusi sovellusalue PM = 3,0 * (KDSI) 1,12 * M Sulautetut järjestelmät: PM = 3,6 * (KDSI) 1,20 * M Boehm 1981: Software Engineering Economics. 1 Data base size Schedule constraint Turnaraund time Virtual machine experience Software tools Virtual machine volatility Modern programming practices Storage constraint Application experience Timing constraint Required reliability Product complexity 1,23 1,23 1,32 1,3 1,9 1,9 1,51 1,56 1,5 1,66 1,8 2,36 Software productivity range Personel / team capacity,18 0 0,5 1 1,5 2 2,5 3 3,5,5 Boehm 1981: Software Engineering Economics. 18 6
COCOMO:n kustannustekijät Tuotetekijät: luotettavuusvaatimus, tietokannan koko, kompleksisuus Laitetekijät: Suoritusaikarajoitus, talletuskapasiteetti, virtuaalikoneen epävakaus, vasteaikarajoite Henkilötekijät: kokemus sovellusalueesta, virtuaalikoneesta ja ohjelmointikielestä sekä kyvykkyys analyysiin ja ohjelmointiin Projektitekijät: ohjelmointikäytänteet, työkalut, aikataulurajoite Boehm 1981: Software Engineering Economics. 19 Kustannustekijöiden vaikutus Esimerkki: luotettavuusvaatimuksen määritys Arvio vaatimuksesta Very low Low Nominal High Very high Vaatimukset + suunnitelmat 0,80 0,90 1,10 1,30 Tarkka suunnittelu 0,80 0,90 1,10 1,30 Koodaus + yks. testaus 0,80 0,90 1,10 1,30 Kokonaiskerroin Itegraatiotestaus 0,60 0,80 1,30 1,0 0,5 0,88 1,15 1,0 Boehm 1981: Software Engineering Economics. 20 Kustannustekjöiden arviointi 2, * (KDSI) 1,05 * M M = m 1 + m 2 + m n Esim. M = 0,8 * 0, *1, * 1 * 1,2 = 0,9 21
Estimointi Suomessa Finnish Software Measurement Association (FiSMA) www.fisma.fi 22 Miksi kummassa tällaista estimointia kannattaa tehdä? Estimoinnin tarkkuus (???) Hyvillä menetelmillä ei olla riippuvaisia tietyistä ihmisistä Ohjelmiston koon arvioinnista on hyötyä erilaisia metriikoita seurattaessa Käytännössä esim. hinnoittelu /fp Kustannustekijöitä seuraamalla voidaan kehittää prosessia Vaatimukset on pakko tehdä kunnolla 23 8