Kodgranskning - i en agil miljö

Preview:

Citation preview

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?

Recommended