4 2 5 The race for quality has no finish line, so technically it s more like a death march Kod och kvalitet Effektkartan Mjukvarukvalitet Vi blir alltmer beroende av de olika tekniska system vi omger oss med och att dessa fungerar utan fel. Exempelvis använder vi kärnkraft för energiförsörjning, flyg och bilar för transporter och datorer är ett viktigt hjälpmedel för lagring och överföring av information. Konsekvensen av störningar eller en olycka är ofta stor och ödesdiger. Genom att mäta och kontrollera under utvecklingsprocessen ökar man den slutliga produktens kvalitet Vilket i sin tur innebär att man uppfyller både effekt och kundens mål Att upprätthålla god kvalitet på dokument, process och kod är livsviktigt Mjukvarukvalitet Ett system har god kvalitet om det möter kundens behov är tillförlitligt är enkelt att underhålla Extern kvalitet Intern kvalitet Synliga symptom Hittas vid testning Osynliga orsaker Hittas vid mätning Mjukvarutest Användbarhetstest Kvalitetsmått Effektstyrning Orsaker: Dålig programstruktur, hög komplexitet, hög koppling, dålig läsbarhet, med mera. 3 -ilities Usability (användbarhet) Programmets känsla och måluppfyllelse Mjukvarans förmåga att bibehålla sin prestanda under en viss belastning under en viss tid Functionality (funktionalitet) Funktionella krav, men inte funktioner Efficiency (ung. effektivitet) Mjukvarans prestanda jämfört med vilka resurser som finns under en viss tid Maintainability (underhållbarhet) Hur lätt det är att underhålla den här programvaran Portability (portabilitet) Hur lätt det är att flytta ett system till en annan miljö? Testability (testbarhet) Mjukvarans förmåga att kunna testas Operation -ilities Example metrics
7 8 9 Usability-mätning Man mäter ändamålsenlighet, effektivitet, lärbarhet, m.m. Användarnas prestation följer en normalfördelning Standardavvikelsen är nästan alltid 52% av medelvärdet Runt 20 användare ger ett tillräckligt bra konfidensintervanll Ungefär 76 användare krävs för statistisk signifikans, men vi vill se trender Feluppskattning Antalet gäddor i Boren ska uppskattas. Fånga ett antal gäddor, säg N stycken. Märk dessa och släng i dem igen. "Blanda om", dvs vänta någon vecka till de har simmat runt ordentligt. Fånga på nytt ett antal gäddor, säg M stycken. Antag att av dessa M stycken gäddor är M' stycken märkta. Enkel statistikberäkning ger en uppskattning av antal gäddor i Boren till Sifferexempel: g = (M*N) / M N = 100, M = 100, M' = 20. g = (100*100)/20 = 500 gäddor 10... är mjukvarans förmåga att bibehålla sin prestanda under en viss belastning under en viss tid Syftet är att finna orsaker till fel och försöka eliminera dessa orsaker att finna konsekvenserna av fel och om möjligt lindra eller eliminera dessa Felbenägenhet Felintervall Tid till fel Föregående tid till fel MTTF (Mean Time To Failure) Medelvärdet av felintervallen MTTR (Mean Time To Repair) Medelvärdet av reparationsintervallen MTBF (Mean Time Between Failures) MTBF = MTTF + MTTR 11 Antal fel, feltolerans, felbenägenhet mäts Error (human mistake) leder till ett Fault (defect in product) som i sin tur leder till ett Failure (defect in operation) När man upptäcker ett failure utför man en fault identification för att hitta rätt fault till aktuellt failure, sen utför man fault correction eller fault removal När systemet blir mer tillförlitligt, ökar MTTF Vi vill mäta mellan 0 och 1, för att få jämförelsevärden Reliability growth curve (R) R = MTTF / (1 + MTTF) Reliability stability or growth 12
0 13 Andra ilities att mäta Availability growth curve (A) A = MTBF / (1 + MTBF) Maintainability growth curve (M) M = 1 / (1 + MTTR) 16 350 300 250 200 150 100 50 0 5 10 15 20 Failure time Failure interval MTTF 14 Kvalitetsarbete under projektet Kommentera varandras arbete Inspektera dokument Kvalitetskontroller Utvärdera varje fas Teambuilding Mätningar 17 1.00 0.90 1 3 5 7 9 11 13 15 15 Kvalitetsrapport Innehåller Planerade mätningar Genomförda mätningar Mätresultat Analys och diskussion Är en del av testrapporten 18
God kodkvalitet Följ en kodstandard Formatera för att främja förståelse Använd meningsfulla identifierarnamn Använd pseudokod som modulbeskrivningar Återanvändning Don t repeat yourself! Once and only once! Refactoring 19 CMM Capability Maturity Model är ett instrument för att utveckla företagets rutiner mot ett mer planerat och förutsägbart projektarbete Hänsyn tas till förmågan att genomföra projekt samt organisationens mognad vid genomförandet av projektet Målet med metoden är att öka förmågan och mognadsgraden hos företaget 22 Kvalitetsarbete vid kodning Tänk efter före, men inte för mycket "Debugging is twice as hard as writing the code in the first place. Therefore, if you write the code as cleverly as possible, you are, by definition, not smart enough to debug it." Enkelhet You ain t gonna need it! KISS! Kodinspektion Sparar tid vid debugging Parprogrammering 20 CMM Ett företag som ligger lågt på CMM-skalan har förmodligen improviserade och ineffektiva processer. Om en plan finns så följs den ändå inte. Kvalitet och funktionalitet blir lidande för att blir klar till deadline. Ett företag som ligger högre har dokumenterad erfarenhet från tidigare projekt och kan göra realistiska planer. Brister upptäcks i tid och kan bekämpas. 23 Parprogrammering Parprogrammerare spenderar ungefär 15% mer tid än individuella programmerare på samma uppgift. Dock är denna extra tid inte statistiskt signifikant Parprogrammerare får 15% färre fel i koden än individuella programmerare. Denna högre kvalitet är statistiskt signifikant 95% av parprogrammerare säger att de trivs bättre med arbetet, är mer självsäkra och litar på att den kod de har producerat fungerar. I det långa loppet tjänar man alltså både moral och pengar, eftersom det tar mycket lång tid att rätta buggar 21 1 2 3 CMM - nivåer 4 5 Optimizing Managed Defined Repeatable Initial 24
CMM nivå 1 Initial Problem att leverera system i tid Regelbundet uppstår kriser Planer och kvalitet överges för kod och test Sprucken budget Beroende av hjältedåd Inga åtgärder har tagits för att öka processutvecklingsförmågan 25 CMM nivå 4 Managed Kvantitativ processtyrning Kvalitetsstyrning Förutsägbar process 28 CMM nivå 2 Repeatable Kravhantering Projektplanering Projektuppföljning Underleverantörshantering Kvalitetssäkring Konfigurationskontroll Disciplinerad process 26 CMM nivå 5 Optimized Kontrollerat processbyte Kontrollerat teknikbyte Felförebyggande åtgärder Kontinuerligt förbättrande process 29 CMM nivå 3 Defined Organisationen har processfokus Organisationen har en processdefinition Integrerad mjukvarustyrning Mjukvaruproduktion Koordination mellan grupper Utbildningsprogram Granskningar Standardiserad process 27 CMM - företagskultur CMM med fokus på företagskultur: 1. -- 2. Fokus på ledningens ansvar för att leda anställda. Man ger lön, utbildning och liknande. 3. Kompetensbaserad arbetsstyrka. Deltagande företagskultur, karriärmöjligheter 4. Effektivt mätande, indelning i högprestandateam. Teambuilding, mentorskap, jämförelser mellan grupper, samstämmighet 5. Medveten kontinuerlig förbättring av kunskap och färdigheter. Coaching, personlig kompetensutveckling 30
CMM - Metod Det finns två metoder för att bedöma en organisations mognad: Processbedömning Utvärdering av förmåga Båda använder samma grund, CMM, men målet med deras användning är olika 31 CMM - Metod Indicate Process Capability Achieve Goals Address Implementation and Institutionalization Describe 34 CMM - Metod 32 Referenser Software Engineering for Students, kapitel 29 RUT 10.7, 10.9, 10.11, 10.18, 10.19, 17.2 http://en.wikipedia.org/wiki/ You_Ain't_Gonna_Need_It http://en.wikipedia.org/wiki/don% 27t_repeat_yourself 35 CMM Metod 1. Först väljer man medlemmar till gruppen som skall genomföra utvärderingeneller bedömningen. Dessa personer bör samtliga vara väl förtrogna med CMM, mjukvaruutveckling och projektstyrning. 2. Den undersökta organisationen eller gruppen fyller i enkäter om organisationens verksamhet och genomför eventuellt också andra diagnostiska tester. Syftet med detta är att få underlag för nästa steg. 3. Svaren från föregående steg analyseras. Man identifierar vilka områden som man bör fokusera på i framtiden. Dessa områden motsvarar CMM:s nyckelprocessområden, nivåer. 4. Undersökningsgruppen besöker nu objektet för att där undersöka processer och granska dokument m.m. 5. Organisationens starka respektive svaga sidor sammanställs. Om man genomför man en processbedömning blir denna 33