kodgranskning - i en agil miljö
TRANSCRIPT
Mattias Jiderhamn
Kodgranskningi en agil miljö
Mattias Jiderhamn
Mattias Jiderhamn
Kodgranskning• Vad är kodgranskning?• Varför granska kod?• Hur granska kod?• När granska kod?• Demo• Erfarenheter och tips
Mattias Jiderhamn
Vad?Manuellt läsa kod med syfte att hitta fel
Mattias Jiderhamn
Varför?
Motfråga:Vilken är den dyraste buggen?
Mattias Jiderhamn
Dyraste buggen?Ariane 5 – flight 501
370 000 000 USD
Mattias Jiderhamn
Dyraste buggenDen 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
Exempel10 utvecklare - 3 månader - 10 000 LOC
Buggar rättade under 6 månader
Utan granskning / Med granskning
120 000 USD
174 000 USD
Kostnad
Utan granskning / Med granskning
269 st
431 stAntal
Fler designfel identifierades
Mattias Jiderhamn
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
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
Varför?
Hitta buggar tidigt
Spara tid
Spara pengar
+ Du blir en bättre utvecklare!
Mattias Jiderhamn
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 jobbut someone’s
gotta do it
Mattias Jiderhamn
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
Typer av granskning• Formell granskning (Michael Fagan, 1976)
Formal inspection / Fagan inspection
• Lättviktiga: Parprogrammering ”Över-axeln-granskning” E-postbaserad / patch-granskning Granskning mha verktyg
Mattias Jiderhamn
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 avatt granska och granskas
Mattias Jiderhamn
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
Metrics• LOC = Antal rader granskad kod• Tid = Tid för granskning• Antal defekter
• Hastighet: LOC / h Defekter / h
• Densitet: defekter / LOCAnvänd ej för utvärdering av utvecklare
Mattias Jiderhamn
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
Hur börja?• Frivilligt vid behov?• Obligatoriskt i viss kod?• Stickprov?
Mattias Jiderhamn
Hur vi började
CVS query
E-post
Word
Verktyg
Demo!
Mattias Jiderhamn
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
Personlighetstyper• Diktatorn• Mobbaren• Politikern• ”Maskaren”/”Mjölkaren”• Vilde Bill• Smugglaren• Curling-barnet• Den frälse• Dumparen• Den orättvisa
Mattias Jiderhamn
Länkarhttp://java.jiderhamn.se
Länkar till Code Collaborator, Collaborative Code Review, Klocwork, Gerrit, Jupiter, ReviewBoard, ReviewClipse, AgileReview och Java Code Reviewer
Frågor?
Granskar du?