kodgranskning - i en agil miljö

22
Mattias Jiderhamn Kodgranskning i en agil miljö Mattias Jiderhamn

Upload: mattias-jiderhamn

Post on 30-Jun-2015

3.791 views

Category:

Technology


5 download

TRANSCRIPT

Page 1: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Kodgranskningi en agil miljö

Mattias Jiderhamn

Page 2: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Kodgranskning• Vad är kodgranskning?• Varför granska kod?• Hur granska kod?• När granska kod?• Demo• Erfarenheter och tips

Page 3: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Vad?Manuellt läsa kod med syfte att hitta fel

Page 4: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Varför?

Motfråga:Vilken är den dyraste buggen?

Page 5: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Dyraste buggen?Ariane 5 – flight 501

370 000 000 USD

Page 6: Kodgranskning - i en agil miljö

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

Page 7: Kodgranskning - i en agil miljö

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

Page 8: Kodgranskning - i en agil miljö

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

Page 9: Kodgranskning - i en agil miljö

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

Page 10: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Varför?

Hitta buggar tidigt

Spara tid

Spara pengar

+ Du blir en bättre utvecklare!

Page 11: Kodgranskning - i en agil miljö

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

Page 12: Kodgranskning - i en agil miljö

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!

Page 13: Kodgranskning - i en agil miljö

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

Page 14: Kodgranskning - i en agil miljö

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

Page 15: Kodgranskning - i en agil miljö

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?

Page 16: Kodgranskning - i en agil miljö

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

Page 17: Kodgranskning - i en agil miljö

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, …

Page 18: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Hur börja?• Frivilligt vid behov?• Obligatoriskt i viss kod?• Stickprov?

Page 19: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Hur vi började

CVS query

E-post

Word

Verktyg

Demo!

Page 20: Kodgranskning - i en agil miljö

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!

Page 21: Kodgranskning - i en agil miljö

Mattias Jiderhamn

Personlighetstyper• Diktatorn• Mobbaren• Politikern• ”Maskaren”/”Mjölkaren”• Vilde Bill• Smugglaren• Curling-barnet• Den frälse• Dumparen• Den orättvisa

Page 22: Kodgranskning - i en agil miljö

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?