6. Dyraste buggen
Den som produktionssätts
och hittas av slutanvändaren
HP: 100 gånger dyrare att laga bugg
efter release än vid granskning
– exklusive badwill!
Källa: Frank W. Blakely and Mark E. Boles. "A Case Study of Code Inspections"
Hewlett-Packard Journal, Oct. 1991
Mattias Jiderhamn
7. Exempel
10 utvecklare - 3 månader - 10 000 LOC
Buggar rättade under 6 månader
Antal Kostnad
431 st
174 000 USD
269 st 120 000 USD
Utan granskning / Med granskning Utan granskning / Med granskning
Fler designfel identifierades
Mattias Jiderhamn
8. Fungerar det?
AT&T, 200 personer
• 90% minskning av buggar
• 14% ökad produktivitet
Aetna
• 82% av felen hittades
• 20% lägre kostnad
Källa: Code Complete, Steve McConnell
Mattias Jiderhamn
9. Fungerar det?
Samma grupp utvecklare
• 5 program utan granskning: 4,5 fel / 100 LOC
• 6 program med granskning: 0,82 fel / 100 LOC
• Över 80% av felen eliminerades
Förvaltnings-organisation
• 55% av enrads-ändringar var fel
• Med granskning: 2%
Källa: Code Complete, Steve McConnell
Mattias Jiderhamn
10. Varför?
Hitta buggar tidigt
Spara tid
Spara pengar
+ Du blir en bättre utvecklare!
Mattias Jiderhamn
11. Självklart…?
• Jämför korrekturläsa böcker
• Fortsätt samarbeta efter krav och design!
• För jobbigt / för tråkigt?
It’s a dirty job
but someone’s
gotta do it
Mattias Jiderhamn
12. vs TDD
• Enhetstester 25%
• Granskning 55-60%, uppåt 80-90%
Fyller olika syften:
• Granskning minskar buggar etc i ny kod
• TDD/JUnit minskar regressionsbuggar
• Tester minskar konceptuella buggar
Alla tre behövs!
Mattias Jiderhamn
14. Positiva bieffekter
• Vetskapen att (eventuellt) bli granskad och
förberedelsen leder i sig till bättre kod
• Kunskapsöverföring - åt båda hållen
Du blir en bättre utvecklare av
att granska och granskas
Mattias Jiderhamn
15. När granska?
• Efter lyckad kompilering…
• Efter ev statisk kodanalys
• Före eller efter incheckning/merge?
• Före eller efter manuell testning + debug?
• Granska testfall före implementation?
Mattias Jiderhamn
16. Metrics
• LOC = Antal rader granskad kod
• Tid = Tid för granskning
• Antal defekter
• Hastighet:
LOC / h
Defekter / h
• Densitet: defekter / LOC
Använd ej för utvärdering av utvecklare
Mattias Jiderhamn
17. Hur granska?
Experterna säger
• Max 200 – 400 LOC / tillfälle
• Hastighet: 300 – 500 LOC / h
• Max 1 h / dag
Slutsats: Mer tid = fler buggar funna
Checklista
• Dokumentation, enhetstester, parameter-
kontroll, trådsäkerhet, prestanda, …
Mattias Jiderhamn
18. Hur börja?
• Frivilligt vid behov?
• Obligatoriskt i viss kod?
• Stickprov?
Mattias Jiderhamn
19. Hur vi började
CVS query
E-post
Word
Verktyg
Demo!
Mattias Jiderhamn
20. Mattias råd
• Preskribera all gammal kod när du börjar
• Ta fram en gemensam coding convention
• Jämföra med spec eller ej?
• Pre-checkin / pre merge
• Granska testfall, ev före implementation
• Anpassa kommentarerna till nivån hos kodaren
• Utmaning: Lagom portioner
• Utmaning: Refaktoreringar
• Fokusera på en bra slutprodukt!
Mattias Jiderhamn
21. Personlighetstyper
• Diktatorn
• Mobbaren
• Politikern
• ”Maskaren”/”Mjölkaren”
• Vilde Bill
• Smugglaren
• Curling-barnet
• Den frälse
• Dumparen
• Den orättvisa
Mattias Jiderhamn