ݺߣ

ݺߣShare a Scribd company logo
Kodgranskning
                    i 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
ղö?

                     Motfråga:
           Vilken är den dyraste buggen?




Mattias Jiderhamn
Dyraste buggen?
                    Ariane 5 – flight 501




                     370 000 000 USD
Mattias Jiderhamn
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
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
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
ղö?
                    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 job
                            but 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 av
                  att 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 / LOC
  Anvä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ä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
Ad

Recommended

Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ
Introduktion till Aspekt-orienterad programmering (AOP) med AspectJ
Mattias Jiderhamn
Kunskapsbaren 2011 Linköping - Koda om eller koda nytt?
Kunskapsbaren 2011 Linköping - Koda om eller koda nytt?
HiQInternational
Clean code
Clean code
Fredrik Wendt
Metodik - Versionshantering, pakethantering, paketering och testning
Metodik - Versionshantering, pakethantering, paketering och testning
Johan Holmberg
Enkelhet som medel möjlighet som mål - Niklas Lindstrom
Enkelhet som medel möjlighet som mål - Niklas Lindstrom
manssandstrom
Kth Nov 09
Kth Nov 09
oskarasbrink
Javaforum coin
Javaforum coin
Squeed
Introduktion till Test 1.0 (swe)
Introduktion till Test 1.0 (swe)
Alex Eriksson
.Net i verkligheten
.Net i verkligheten
kaboingsingen
Fel, fel, fel!
Fel, fel, fel!
Agila Sverige
Överlevnad i en komplex mjukvaruvärld
Överlevnad i en komplex mjukvaruvärld
Sigma IT Management
Projekt en agil bromsmedicin - Andreas Larsson
Projekt en agil bromsmedicin - Andreas Larsson
manssandstrom
Frukostseminarium 2011 - Kvalitet på webben
Frukostseminarium 2011 - Kvalitet på webben
Creuna Sverige
Foss sthlm maintain foss
Foss sthlm maintain foss
Daniel Stenberg
Vad är webb för oss?
Vad är webb för oss?
Andreas Ek
Sverige kan bli världsledande på god digital design
Sverige kan bli världsledande på god digital design
Jonas Söderström
Sverige kan bli världsledande på digital design
Sverige kan bli världsledande på digital design
inUse
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutveckling
Anton Tibblin
Curriculum Vitae - Anders Borg
Curriculum Vitae - Anders Borg
Abiro AB
Att leva med Öppen Källkod
Att leva med Öppen Källkod
Daniel Stenberg
Några ord om test på WPBar i Norrköping
Några ord om test på WPBar i Norrköping
flowcom
De tre vanligaste missarna när man väljer standardsystem
De tre vanligaste missarna när man väljer standardsystem
inUse
Den nya testarrollen
Den nya testarrollen
Agila Sverige
Affärssystem: Eget vs. standard
Affärssystem: Eget vs. standard
Alex Eriksson
Kreativa processer lektion 5 2011
Kreativa processer lektion 5 2011
Patrik Åkerman von Knorring
Vad är webb
Vad är webb
Andreas Ek

More Related Content

Similar to Kodgranskning - i en agil miljö (20)

.Net i verkligheten
.Net i verkligheten
kaboingsingen
Fel, fel, fel!
Fel, fel, fel!
Agila Sverige
Överlevnad i en komplex mjukvaruvärld
Överlevnad i en komplex mjukvaruvärld
Sigma IT Management
Projekt en agil bromsmedicin - Andreas Larsson
Projekt en agil bromsmedicin - Andreas Larsson
manssandstrom
Frukostseminarium 2011 - Kvalitet på webben
Frukostseminarium 2011 - Kvalitet på webben
Creuna Sverige
Foss sthlm maintain foss
Foss sthlm maintain foss
Daniel Stenberg
Vad är webb för oss?
Vad är webb för oss?
Andreas Ek
Sverige kan bli världsledande på god digital design
Sverige kan bli världsledande på god digital design
Jonas Söderström
Sverige kan bli världsledande på digital design
Sverige kan bli världsledande på digital design
inUse
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutveckling
Anton Tibblin
Curriculum Vitae - Anders Borg
Curriculum Vitae - Anders Borg
Abiro AB
Att leva med Öppen Källkod
Att leva med Öppen Källkod
Daniel Stenberg
Några ord om test på WPBar i Norrköping
Några ord om test på WPBar i Norrköping
flowcom
De tre vanligaste missarna när man väljer standardsystem
De tre vanligaste missarna när man väljer standardsystem
inUse
Den nya testarrollen
Den nya testarrollen
Agila Sverige
Affärssystem: Eget vs. standard
Affärssystem: Eget vs. standard
Alex Eriksson
Kreativa processer lektion 5 2011
Kreativa processer lektion 5 2011
Patrik Åkerman von Knorring
Vad är webb
Vad är webb
Andreas Ek
Överlevnad i en komplex mjukvaruvärld
Överlevnad i en komplex mjukvaruvärld
Sigma IT Management
Projekt en agil bromsmedicin - Andreas Larsson
Projekt en agil bromsmedicin - Andreas Larsson
manssandstrom
Frukostseminarium 2011 - Kvalitet på webben
Frukostseminarium 2011 - Kvalitet på webben
Creuna Sverige
Vad är webb för oss?
Vad är webb för oss?
Andreas Ek
Sverige kan bli världsledande på god digital design
Sverige kan bli världsledande på god digital design
Jonas Söderström
Sverige kan bli världsledande på digital design
Sverige kan bli världsledande på digital design
inUse
VT24 - Responsiv design & Ramverk inom webbutveckling
VT24 - Responsiv design & Ramverk inom webbutveckling
Anton Tibblin
Curriculum Vitae - Anders Borg
Curriculum Vitae - Anders Borg
Abiro AB
Några ord om test på WPBar i Norrköping
Några ord om test på WPBar i Norrköping
flowcom
De tre vanligaste missarna när man väljer standardsystem
De tre vanligaste missarna när man väljer standardsystem
inUse
Affärssystem: Eget vs. standard
Affärssystem: Eget vs. standard
Alex Eriksson

Kodgranskning - i en agil miljö

  • 1. Kodgranskning i en agil miljö Mattias Jiderhamn Mattias Jiderhamn
  • 2. Kodgranskning • Vad är kodgranskning? • Varför granska kod? • Hur granska kod? • När granska kod? • Demo • Erfarenheter och tips Mattias Jiderhamn
  • 3. Vad? Manuellt läsa kod med syfte att hitta fel Mattias Jiderhamn
  • 4. ղö? Motfråga: Vilken är den dyraste buggen? Mattias Jiderhamn
  • 5. Dyraste buggen? Ariane 5 – flight 501 370 000 000 USD Mattias Jiderhamn
  • 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. ղö? 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
  • 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 verktyg 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
  • 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

Editor's Notes

  • #4: http://www.ihasafunny.com/2010/01/10/code-reviews/
  • #6: 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
  • #7: http://www.hpl.hp.com/hpjournal/pdfs/IssuePDFs/1991-10.pdf sid 62 http://www.officialpsds.com/Money-In-Fire-PSD36849.html
  • #8: Spårade i 6 månader Ytterligare 162 buggar upptäcktes
  • #10: http://www.codinghorror.com/blog/2006/01/code-reviews-just-do-it.html
  • #23: 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