Kodgranskning                    i en agil miljö                    Mattias JiderhamnMattias Jiderhamn
Kodgranskning  •   Vad är kodgranskning?  •   Varför granska kod?  •   Hur granska kod?  •   När granska kod?  •   Demo  •...
Vad?  Manuellt läsa kod med syfte att hitta felMattias Jiderhamn
Varför?                     Motfråga:           Vilken är den dyraste buggen?Mattias Jiderhamn
Dyraste buggen?                    Ariane 5 – flight 501                     370 000 000 USDMattias Jiderhamn
Dyraste buggen           Den som produktionssätts          och hittas av slutanvändaren   HP: 100 gånger dyrare att laga b...
Exempel       10 utvecklare - 3 månader - 10 000 LOC          Buggar rättade under 6 månader             Antal            ...
Fungerar det?  AT&T, 200 personer  • 90% minskning av buggar  • 14% ökad produktivitet  Aetna  • 82% av felen hittades  • ...
Fungerar det?  Samma grupp utvecklare  • 5 program utan granskning: 4,5 fel / 100 LOC  • 6 program med granskning: 0,82 fe...
Varför?                    Hitta buggar tidigt                        Spara tid                      Spara pengar         ...
Självklart…?  • Jämför korrekturläsa böcker  • Fortsätt samarbeta efter krav och design!  • För jobbigt / för tråkigt?    ...
vs TDD  • Enhetstester 25%  • Granskning 55-60%, uppåt 80-90%  Fyller olika syften:  • Granskning minskar buggar etc i ny ...
Typer av granskning  • Formell granskning (Michael Fagan, 1976)     Formal inspection / Fagan inspection  • Lättviktiga:  ...
Positiva bieffekter  • Vetskapen att (eventuellt) bli granskad och    förberedelsen leder i sig till bättre kod  • Kunskap...
När granska?  •   Efter lyckad kompilering…  •   Efter ev statisk kodanalys  •   Före eller efter incheckning/merge?  •   ...
Metrics  • LOC = Antal rader granskad kod  • Tid = Tid för granskning  • Antal defekter  • Hastighet:     LOC / h     De...
Hur granska?  Experterna säger  • Max 200 – 400 LOC / tillfälle  • Hastighet: 300 – 500 LOC / h  • Max 1 h / dag       Slu...
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...
Personlighetstyper •   Diktatorn •   Mobbaren •   Politikern •   ”Maskaren”/”Mjölkaren” •   Vilde Bill •   Smugglaren •   ...
Länkar  http://java.jiderhamn.se  Länkar till Code Collaborator, Collaborative Code Review,    Klocwork, Gerrit, Jupiter, ...
Upcoming SlideShare
Loading in …5
×

Kodgranskning - i en agil miljö

4,521 views

Published on

Published in: Technology
0 Comments
0 Likes
Statistics
Notes
  • Be the first to comment

  • Be the first to like this

No Downloads
Views
Total views
4,521
On SlideShare
0
From Embeds
0
Number of Embeds
2,243
Actions
Shares
0
Downloads
10
Comments
0
Likes
0
Embeds 0
No embeds

No notes for slide
  • http://www.ihasafunny.com/2010/01/10/code-reviews/
  • http://www.airliners.net/aviation-forums/military/read.main/56113/ -> http://wwwbode.in.tum.de/~walterm/ariane5.jpg http://www.capcomespace.net/dossiers/espace_europeen/ariane/ariane5/AR501/V88%20explosion%2003.jpg http://www.vuw.ac.nz/staff/stephen_marshall/SE/Failures/SE_Ariane.html
  • http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1991-10.pdf sid 62 http://www.officialpsds.com/Money-In-Fire-PSD36849.html
  • Spårade i 6 månader Ytterligare 162 buggar upptäcktes
  • http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html
  • http://smartbear.com/products/development-tools/code-review/ http://www.klocwork.com/products/insight-pro/inspect-code-review/ http://code.google.com/p/gerrit/ https://github.com/features/projects/codereview http://code.google.com/p/jupiter-eclipse-plugin/ http://www.reviewboard.org/ http://www.inso.tuwien.ac.at/projects/reviewclipse/ http://agilereview.sourceforge.net/ http://jcodereview.sourceforge.net/ http://marketplace.eclipse.org/content/collaborative-code-review-tool
  • Kodgranskning - i en agil miljö

    1. 1. Kodgranskning i en agil miljö Mattias JiderhamnMattias Jiderhamn
    2. 2. Kodgranskning • Vad är kodgranskning? • Varför granska kod? • Hur granska kod? • När granska kod? • Demo • Erfarenheter och tipsMattias Jiderhamn
    3. 3. Vad? Manuellt läsa kod med syfte att hitta felMattias Jiderhamn
    4. 4. Varför? Motfråga: Vilken är den dyraste buggen?Mattias Jiderhamn
    5. 5. Dyraste buggen? Ariane 5 – flight 501 370 000 000 USDMattias Jiderhamn
    6. 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. 1991Mattias Jiderhamn
    7. 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 USDUtan granskning / Med granskning Utan granskning / Med granskning Fler designfel identifieradesMattias Jiderhamn
    8. 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 McConnellMattias Jiderhamn
    9. 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 McConnellMattias Jiderhamn
    10. 10. Varför? Hitta buggar tidigt Spara tid Spara pengar + Du blir en bättre utvecklare!Mattias Jiderhamn
    11. 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 itMattias Jiderhamn
    12. 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
    13. 13. Typer av granskning • Formell granskning (Michael Fagan, 1976) Formal inspection / Fagan inspection • Lättviktiga:  Parprogrammering  ”Över-axeln-granskning”  E-postbaserad / patch-granskning  Granskning mha verktygMattias Jiderhamn
    14. 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 granskasMattias Jiderhamn
    15. 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. 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 utvecklareMattias Jiderhamn
    17. 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. 18. Hur börja? • Frivilligt vid behov? • Obligatoriskt i viss kod? • Stickprov?Mattias Jiderhamn
    19. 19. Hur vi började CVS query E-post Word Verktyg Demo!Mattias Jiderhamn
    20. 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. 21. Personlighetstyper • Diktatorn • Mobbaren • Politikern • ”Maskaren”/”Mjölkaren” • Vilde Bill • Smugglaren • Curling-barnet • Den frälse • Dumparen • Den orättvisaMattias Jiderhamn
    22. 22. Länkar http://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?Mattias Jiderhamn

    ×