Viktigt... och svårt tid kostnad kvalitet VT01 2I1251/PV2 Programvarumetrologi/Mått och modeler Terttu Orci 7 Varför misslyckas projekt? You can't control what you can't measure. Tom DeM arco You cannot predict what you cannot measure. Norman Fenton VT01 2I1251/PV2 Programvarumetrologi/Mått och modeler Terttu Orci 8 4
Problem relaterade till mätning i programvaruutveckling Okunnighet Mätningen bristfälig i stringensoch i omfång Mätbara målför utveckling saknas Storlek,användarvänlighet,ti lförlitlighet, underhålbarhet,. Man tror pårykten om nya metoders förträfflighet -utan att kräva mätresultat - Försäljarmetrics 9 Försäljarmetrics Vår nya teknik garanterar 100% ti lförlitlighet! Vårt nya verktyg höjer produktiviteten med 200%! Skapa koden med halva bemanningen i en kvartstid! Minska testtiden till2/3! 10 5
Mätning i vardagen M edicinska system -> ställa diagnoser Atmosfärssystem -> göra väderprognoser Mäta längden på barnen -> kunna köpa rätt storlek i kläder Radarsystem -> upptäcka flygplan genom moln sträcka = hastighet * tid 11 Software engineering Ekvationen? resurser process produkt E = as b 12 6
Olika slags mätningar Assessment - kolla läget, mäta existerande ting Prediktion - uppskattning, mäta ting som inte existerar ännu 13 Exempel Uppskattning av arbetsinsats och tid i ett projekt Mätning av produktivitet Tillförlitlighetsmätning (= uppskattning) Prestandamätning Mätning av komplexitet 14 7
Historik av Software Metrics 70-talet:Källkodsmätning SLOC, Halstead, McCabe 80-talet:Kostnadsuppskattningsmodeller och designmått COCOMO, funktionspunkter 90-talet:Mätteori och systematisk processoch produktförbättring Fenton, CMM,. 15 2. The Basics of Measurement Representationell mätteori Mätning och modeller Skalor och skaltyper 16 8
Informell definition av mätning Measurement is the process of empirical, objective assignment ofnumbers to the properties of objects and events of the real world in such a way as to describe them. L. Finkelstein, 1981 17 Informell definition av mätning Measurement is the process by which numbers or symbols are assigned to attributes of entities in the real world, in such a way as to describe them according to clearly defined rules. N. E. Fenton, 1991 18 9
Informell definition av mätning Measurement is the process of assigning symbols, usually numbers, to represent an attribute of the entity of interest, by rule. M. Shepperd, 1995 19 Begrepp Entitet - ett objekt eller en händelse Attribut - en egenskap av en entitet M ått - mätenhet/skala Mätningen måste utföras enligt väldefinierade regler så att resultatet är upprepningsbart -> objektivt 20 10
Entitet Attribut Mått Person Ålder #år vid senaste födelsedag #mån sedan födelsen Källkod Storlek #Lines of Code (LOC) Testprocess Felfrekvens #fel/dag 21 Mätningens tre-enighet Entitet - objektet vi mäter Attribut - egenskapen hos objektet vi mäter Mått - måttet vi använder 22 11
Tre-enigheten viktig Storleken är 50 KLOC - entitet saknas Koden har FOG index60 - attribut saknas Koden har storleken 50000 - mått saknas 23 Undvik vanliga misstag Treenigheten Entiteten måste definieras precist (mätning av längden med skorna på) Det måste finnas en rimlig intuitiv förståelse av attributet innan man föreslår mätning 24 12
Intuitiv förståelse för attributet? Intelligens - IQ test? Intelligens? Verbal förmåga? Problemlösningsförmåga? Kodkvalitet? Låg defekttäthet? Komplexitet? 25 Komplexitet av kod A B C B mer komplex än A C > A? B > C? 26 13
Övning Definiera kvalitet av programmerare Definiera kvalitet av kod Definiera komplexitet av kod 27 Ranking Vinprovning - provarens preferens Hundutställningar - domarens preferens Paper review till konferens - granskarens preferens Man har ännu inte common consensus för att mäta 28 14
Frågeställningar-1 Hur mycket måste man veta om ett attribut innan det är meningsfullt att börja tänka på att mäta det? Vet vi tillräckligt mycket om programkomplexitet för att mäta det? Hur vet vi att vi verkligen har mätt just attributet som vi avsåg? #fel som hittats i testfasen, mäter det kvalitet av test, eller kvalitet av kod före/efter testfasen, eller vad? 29 Frågeställningar-2 Vilken typ av meningsfulla utsagor kan vi göra om attribut och entiteter som har dessa attribut? Är det meningsfullt att tala om 20% ökning av designens kvalitet? Vilka meningsfulla operationer kan vi applicera på mätningar? Kan vi beräkna medelproduktiviteten för en grupp av personer? 30 15
Representationell mätteori Empiriska relationssystem Numeriska relationssystem Avbildningsregler Representationsvillkor 31 Mäta storlek? - empiriska relationer Olle Pelle Olle är längre än Pelle och Pelle är längre än Kalle Kalle är lång längre än är mycket längre än 32 16
Mäta storlek? - numeriska relationer 150 150 <= x <= 230 151 153 152 mängdtillhörighet: x tillhör mängden stora om x > 170 > ordningsrelationen mellan talen x mycket större än y: x > y+20 33 Empiriskt relationssystem E = (C,R) där C = {x x är entitet} R = {R 1,,R n } R i en empirisk relation på C för alla i = 1,,n 34 17
E = (C,R) där Exempel på ett empiriskt relationssystem C = {Olle, Pelle, Kalle} R = { längre än } längre än = {(Olle,Kalle),(Kalle,Pelle),(Olle,Pelle)} 35 Exempel på ett numeriskt relationssystem N = (I,P) I ={x: x heltal och 150 <= x <= 230} P = {P 1,P 2,P 3 } P 1 = {x x ε I och x >= 180} P 2 = {(x,y) x,y ε I och x > y} P 3 = {(x,y) x,y ε I och x > y+15} 36 18
Empiriska och numeriska E = (C,R) C = {Olle, Pelle, Kalle} R = {R 1,R 2,R 3 } R 1 = {x x ε C och x är lång} R 2 = {(x,y) x,y ε C och x är längre än y} R 3 = {(x,y) x,y ε C och x är mycket längre än y} N = (I,P) I = {150, 160, 180} P = {P 1,P 2,P 3 } P 1 = {x x ε I och x >= 180} P 2 = {(x,y) x,y ε I och x > y} P 3 = {(x,y) x,y ε I och x > y+15} 37 Mäta storlek? - avbildning M Olle M: Olle avbildas på 180, Pelle R1 på P1, R2 på P2,... Pelle M Kalle 150 160 180 38 19
E = (C,R) C = {Olle, Pelle, Kalle} R = {R 1,R 2,R 3 } R 1 = {x x ε C och x är lång} = {olle} E och N R 2 = {(x,y) x,y ε C och x är längre än y={(olle,pelle),(pelle,kalle),(olle,kalle)} R 3 = {(x,y) x,y ε C och x är mycket längre än y}= {(olle,pelle),(olle,kalle)} N = (I,P) I = {150, 160, 180} P = {P 1,P 2,P 3 } P 1 = {x x ε I och x >= 180}= {180} P 2 = {(x,y) x,y ε I och x > y}={(180,160),(180,150),(160,150)} P 3 = {(x,y) x,y ε I och x > y+15} = {(180,150),(180,160)} 39 Representationsvillkor M avbildar entiteter (av verkligheten) på tal eller symboler och empiriska relationer på numeriska relationer så att de empiriska relationerna bevarar de numeriska relationerna och de empiriska relationerna bevaras av de numeriska relationerna. 40 20
Representationsvillkoret Olle längre än Kalle omm M(Olle) > M(Kalle) 41 McCabe s cyklomatiska komplexitet G G v(g) = e-n+2 = 8-7+2 = 3 v(g ) = e-n+2 = 5-4+2 = 3 Representationsvillkoret uppfyllt? 42 21
Programvarutekniska mätningar - processer,resurser och produkter personal design designdokument kodning kod resurs process produkt/ process produkt resurs 43 Vilka entitetstyper mäter man i programutveckling? Produkter kod, specifikation, dokument Processer kravanalys, design, testfas Resurser personal, programvara, maskinvara 44 22
Flera entitetstyper vi vill mäta Projekt? Hela organisationen? 45 Skaltyper Nominell Ordinal Intervall Kvot Absolut 46 23
Nominell skala E = (C,R) C = {p p är ett programfel} R = {R 1,R 2,R 3 } R 1 = {x x ε C och x är syntaxfel} R 2 = {x x ε C och x är ett semantiskt fel} R 3 = {x x ε C och x är systemfel} Varje fel är något av ovanstående, ingen överlappning Partition, klassindelning Ingen ordning mellan klasserna Vilket som helst symboliskt numeriskt relationssystem duger R 2 R 3 R 1 47 Ordinalskala - allvarsgrad av fel E = (C,R) C = {p p är ett programfel} R = {R 1,R 2,R 3,R 4 } R 1 = {x x ε C och x är syntaxfel} R 2 = {x x ε C och x är ett semantiskt fel} R 3 = {x x ε C och x är systemfel} R 4 = {(x,y) x,y ε C och x är allvarligare fel än y} Systemfel allvarligare än semantiskt fel Semantiskt fel allvarligare än syntaxfel M(syntax)=1 M (syntax)=10 M (syntax) = 3 M(sem) = 4 M (sem) = 25 M (sem) = 1 M(system)=17 M (system)=300 M (system) = 4 48 24
Ordinalskala Ordning mellan klasserna Avbildningen måste bevara ordningen Tillåtna transformationer (byte av avbildning): alla monotont stigande funktioner 49 Intervallskala E = (C,R) C = {p p är ett programfel} R = {R 1,R 2,R 3,R 4 } R 1 = {x x ε C och x är syntaxfel} R 2 = {x x ε C och x är ett semantiskt fel} R 3 = {x x ε C och x är systemfel} R 4 = {(x,y) x,y ε C och x är allvarligare fel än y och om x syntaxfel, y semantiskt fel och zsystemfel, så är skillnaden mellan x och y lika stor som mellan y och z} Systemfel allvarligare än semantiskt fel Semantiskt fel allvarligare än syntaxfel M(syntax)=1 M (syntax)=10 M (syntax)=1 M(sem) = 2 M (sem) = 20 M (sem)=17 M(system)=3 M (system)=30 M (system)=26 50 25
Intervallskala Bevarar differensen mellan klasserna Tillåtna transformationer: M = am+b, a>0 F = 9/5C+32 M = Fahrenheit M = Celsius 51? Idag är det 20C Igår var det 10C Idag är det dubbelt så varmt som igår +20 +10 0-10 -20 52 26
Kvotskala Som intervallskala samt att det finns ett noll-element, som indikerar total brist på egenskapen M = am, a>0 Kvoten mellan talen bevaras M = foot (F), M = tum (I) I = 12F 53 Absolutskala #element i en mängd entiteter Alltid av typ #antalet förekomster Inga tillåtna transformationer 54 27
Ex absolutskala LOC räknas, är det på absolutskala? Nej, LOC inte på absolutskala eftersom det är mått på storlek, och det finns olika sätt att mäta storlek, t ex #tecken. LOC är ett mått på absolutskala för attributet #rader. På samma sätt, antal år är inte ett absolutmått på ålder, utan kvotmått, eftersom ålder kan uttryckas i t ex antal år, antal månader eller i antal dagar. 55 Skaltyper Nominell Ordinal Intervall Kvot ökning av restriktion av representationsvillkoret ökad rikhet av representation förfinad mätning ökad sofistikering på mätningen Absolut ökad manipuleringsmöjlighet 56 28
Skaltyper Nominell Etikettering, klassificering av eniteter, t ex kläder med färg, bussar med turnummer Ordinal Tillförsel av ordning, t ex militära grader, preferenslistor Intervall Innehåller begreppet enhet, t ex kalendertid, temperatur (F,C) Kvot Innehåller ett nollelement;talen börjar på noll och ökar med jämna intervall, t ex ålder, längd, hastighet, temperatur i K Absolut Uppräkning, t ex #mål i en match, #personer i rummet 57 Nominell Skaltyper med tillåtna transformationer -1 Empirisk relation: ekvivalensrelation har samma klass som Tillåtna transformationer: alla 1:1 Ordinal Empiriska relationer: som nominell+ordningsrelation Tillåtna transformationer: alla strikt monotont stigande funktioner Intervall Empiriska relationer: som ordinal + känd kvot av godtycklig intervall Tillåtna transformationer: M = am + b, a>0 58 29
Skaltyper med tillåtna transformationer -2 Kvot Empiriska relationer: som intervall + känd kvot av godtyckliga skalvärden Tillåtna transformationer: M = am, a>0 Absolut uppräkning Tillåtna transformationer: identitet M =M, dvs inga 59 Meningsfulla utsagor En utsaga som innehåller numerisk skala är meningsfull om dess sanningsvärde är oberoende av att varje skala M ersätts med en skala enligt tillåten transformation M. Temperaturen i Tokio idag dubbelt den i London M = Celsius M(Tokio)=40 M(London)=20 M = Fahrenheit M (Tokio)=104 M (London)=68 sant falskt 60 30
Vad kan vi göra med mätvärden på olika skalor? Nominell skala 20 entiteter sorteras efter färg röd 3 grön 4 gul 6 svart 2 vit 4 blå 1 Typvärde Frekvens Median Medelvärde 61 Vad kan vi göra med mätvärden på olika skalor Ordinal skala 20 entiteter rankas efter svårighet: enkel, mellansvår, svår Typvärde enkel 5 mellansvår 12 svår 3 Frekvens Median Medelvärde 62 31
Vad kan vi göra med mätvärden på olika skalor Intervallskala 10 dagars temperaturer mäts: 20 23 19 15 18 20 21 19 16 15 Typvärde Frekvens Median Medelvärde (aritmetiskt) Standardavvikelse Varians 63 Vad kan vi göra med mätvärden på olika skalor Kvotskala 10 leveransers storlek i KLOC mäts: 20 35 9 70 82 24 17 100 62 15 Typvärde Frekvens Median Medelvärde (aritmetiskt och geometriskt) Standardavvikelse Varians 64 32
Direkt resp indirekt mätning Direkt mätning av ett attribut för en entitet involverar inga andra attribut eller entiteter storleken av kod i LOC tidsåtgång för testprocessen (timmar, dagar) #upptäckta defekter i kodgranskning (uppräkning) Indirekt mätning produktivitet = kodstorlek/tid defekttäthet för en modul (#defekter/modulstorlek) kravens stabilitet (#initiala krav/#krav totalt) systemspill (arbetsinsats för felfix/total arbetsinsats för utveckling) 65 Direkt vs indirekt 100 50 0 A B C D E # fel per modul (direkt) 160 140 120 10 0 80 60 40 20 0 A B C D E Feltäthet = # fel/kloc (indirekt) 66 33
Interna (statiska) Typ av attribut kan mätas genom att studera entiteten t ex kodens storlek i LOC t ex #beroenden mellan modulerna i ett system Externa (dynamiska) kan mätas genom att studera hur entiteten förhåller sig till sin omgivning t ex #fel som användaren råkar ut för t ex svårighetsgraden av att navigera mellan skärmar t ex tid det tar att söka i databasen 67 Prediktion Hur många sidor (s) källkod kommer att skrivas ut på printern? s = x/a x = programlängd i LOC a = genomsnittligt LOC/sida 68 34
Prediktionssystem Def. Ett prediktionssystem är en matematisk modell, med procedurer för bestämning av modellparametrarna och för tolkning av resultatet. Uppskattning av arbetsinsats E i personmånader E = as b S = storlek i LOC a,b konstanter 69 Utökat numeriskt system M: E -> R 1 x x R n Köpa jeans Pris Kvalitet Hur dom sitter Färg Märke Implicit ranking (p,k,s,f,m) 70 35
Exempel på utökat numeriskt system - olika skalor på delarna? E = 2.7v+121w+26x+12y+22z-497 E = arbetsinsats (effort) v = #instruktioner w = subjektiv komplexitetsranking x = #interna dokument y = #externa dokument z = storlek w på ordinal skala z på kvotskala övriga på absolutskala E på ordinal skala -det lägsta 71 Identifiera attribut för entiteter Stegen i formell mätning Identifiera empiriska relationer E för attributen Identifiera motsvarande numeriska relationer N Definiera avbildning från entiteterna till tal Kontrollera att N bevarar och bevaras av E 72 36