Metrikker og målte størrelser Vi måler fakta for å bestemme systemets egenskaper
Hva vil vi vite? Hvor stort er programmet? Hvor godt er programmet? Hvor lett er det å vedlikeholde? Hvor mange feil er det i programmet? Hva vil testingen koste? Hvor lang tid tar det å utvikle et lignende program?
Grunnlaget for å bruke metrikker Behov for på en objektiv måte kunne Beskrive funksjonalitet Sammenligne systemer Evaluere systemer Forutsi Programkompleksitet Utviklingstider Utviklingskostnader
Hva er en metrikk? En metrikk er en målbar egenskap både for et system eller en prosess målbar egenskap eller størrelse i en eller flere deler av et informasjonssystem beregnet eller komponert indikator basert på to eller flere målinger karakteristikk av et produkt eller prosess En metrikk bør være en objektiv størrelse som ikke påvirkes av personen som utfører målingene
Krav til en metrikk - en metrikk skal Måle, ikke beskrive egenskaper Være enkel og lett å definere og måle Være objektiv og ikke avhengig av situasjonen Lett og billig å måle Ikke være påvirkelig av program eller målemetode Ha verdier som er forståelige for alle
Typer av metrikker Produktmetrikker Antall kodelinjer Størrelse på installert program Mengden av dokumentasjon Prosessmetrikker Utviklingstid, Planlagt og virkelig Ressursbruk, Planlagt og virkelig Produktivitet, Kodelinjer, funksjonspoeng Kvalitet, feil/kodelinjer Metode for utviklingen Kompetanse til utviklingsteamet
Flere typer metrikker Objektive Antall kodelinjer - alle teller på samme måte Subjektive Enkel eller komplisert programstruktur - kompetanseavhengig Enkle Antall kodelinjer lett å telle Kompliserte Antall kodelinjer pr. personmåned - kan ikke måles direkte men er avledet av andre metrikker Mest nyttige til å evaluere prosesser
Måling av en metrikk Fire typer målinger Programtype Database, personalsystem Tallverdier Rangere mellom forskjellige størrelser Intervallverdier Kompleksitet 4-6, kompleksitet 10-12 Forholdstall Et program på 1000 linjer er dobbelt så stort som ett på 2000
Utfordringer Mange i bruk, lite standardisert Ulik bruk i ulike organisasjoner Vanskelig å sammenligne mellom forskjellige organisasjoner Samme metrikk kan måles på forskjellig måte Metrikkverdi kan avhenge av metode antall kodelinjer avhenger av utviklingsspråk assembly, tradisjonelt utviklingsspråk, 4GV effektiv kode
Produktmetrikker Størrelsesmål Antall kodelinjer Antall funksjonspunkter Input, output Kompleksitetsmål McCabes sykliske tall antall definisjoner og antall kall dybde i nøsting av if-setninger fan-in / fan-out Mål for antall funksjoner som kaller en annen funksjon
McCabes sykliske tall Mål for testoppgaven Antall noder 13 Antall kanter 17 McCabes sykliske tall = 17 13 + 2 = 6 < 10 er OK
Halstead s tall - Programvolumet n1 = Antall unike operatorer i programmet. n2 = Antall unike operander i programmet. operator er språkets nøkkelord operand er variabler og konstanter vokabularet n = n1 + n2, N1 = Totale antall operatorer i programmet. N2 = Totale antall operander i programmet programlengden N = N1 + N2. Da et program bare består av operatorer og operander blir Halstead s tall = Programvolumet = N log2 n
Antall funksjonspoeng Brukes til å estimere utviklingstid og ressursbehov bygd på erfaringsdata Vekter (vist nedenfor) 14 påvirkningsfaktorer Innflytelse av faktorene 0-5 Parameter Enkel Middels kompleks Antall inndata 3 4 6 Antall utdata 4 5 7 Antall forespørsler 3 4 6 Antall filer 7 10 15 Antall eksterne grensesnitt 5 7 10
Kvalitetsmetrikker Antall endringer i designfasen feil funnet ved kodeinspeksjon feil funnet ved testing Nødvendige endringer i kodingen
Enkle og komplekse målinger Enkle målinger Antall kodelinjer i programmet Antall sider brukerdokumentasjonen Antall mottatte feilrapporter Antall timer programmet er blitt testet Komplekse målinger Antall feilrapporter \ antall feil funnet i test Antall kodelinjer \ antall utviklingstimer Antall feil funnet i test \ antall testtimer Antall beregninger \ antall kodelinjer Antall måter å kalle en module på
Metrikker for ikke-funksjonelle krav Egenskap Hastighet Størrelse Brukbarhet Brukskvalitet (Usability) Pålitelighet Robusthet Portabilitet Mål Utførte transaksjoner per sekund, Behandlede hits/s Bruker/hendelsesresponstid, Skjermoppfriskningstid kb, MB Treningstid, Antall hjelpesider Gjennomsnittlig betjeningstid per transaksjon MTBF Gjennomsnittstid mellom svikt Oppetid MTTR Gjenstarttid etter svikt Andel av hendelser som fører til svikt Andel av målavhengige setninger Antall mål