SlideShare une entreprise Scribd logo
1  sur  22
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
Varför?

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

Contenu connexe

Similaire à Kodgranskning - i en agil miljö

Några ord om test på WPBar i Norrköping
Några ord om test på WPBar i NorrköpingNågra ord om test på WPBar i Norrköping
Några ord om test på WPBar i Norrköpingflowcom
 
VT2019 - DA355A - CSS Grid & Webbramverk
VT2019 - DA355A - CSS Grid & WebbramverkVT2019 - DA355A - CSS Grid & Webbramverk
VT2019 - DA355A - CSS Grid & WebbramverkAnton Tibblin
 
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017Frontit
 
Makalösa resultat med Evolutionär webbdesign & AB-testning
Makalösa resultat med Evolutionär webbdesign & AB-testningMakalösa resultat med Evolutionär webbdesign & AB-testning
Makalösa resultat med Evolutionär webbdesign & AB-testningConversionista
 
DIBS E-handelsskola: Kom igång med konverteringsoptimering med Marie Horneman...
DIBS E-handelsskola: Kom igång med konverteringsoptimering med Marie Horneman...DIBS E-handelsskola: Kom igång med konverteringsoptimering med Marie Horneman...
DIBS E-handelsskola: Kom igång med konverteringsoptimering med Marie Horneman...Elin Moritz
 
Digitaliseringen ändrar allt - Utom din hjärna
Digitaliseringen ändrar allt -  Utom din hjärnaDigitaliseringen ändrar allt -  Utom din hjärna
Digitaliseringen ändrar allt - Utom din hjärnaConversionista
 
Testdriven Utveckling GeekGirlMeetup November 2010
Testdriven Utveckling GeekGirlMeetup November 2010Testdriven Utveckling GeekGirlMeetup November 2010
Testdriven Utveckling GeekGirlMeetup November 2010javaHelena
 
Kravhantering i praktiken publikt
Kravhantering i praktiken publiktKravhantering i praktiken publikt
Kravhantering i praktiken publiktLars Blixt
 
IBM Rational - Fördelarna med modellbaserad Test och Functional Tester
IBM Rational - Fördelarna med modellbaserad Test och Functional TesterIBM Rational - Fördelarna med modellbaserad Test och Functional Tester
IBM Rational - Fördelarna med modellbaserad Test och Functional TesterIBM Sverige
 
Välj rätt i teknikdjungeln
Välj rätt i teknikdjungeln Välj rätt i teknikdjungeln
Välj rätt i teknikdjungeln Creuna Sverige
 
Vad innebär Cloud Computing ur ett testperspektiv?
Vad innebär Cloud Computing ur ett testperspektiv?Vad innebär Cloud Computing ur ett testperspektiv?
Vad innebär Cloud Computing ur ett testperspektiv?Jonas Hermansson
 

Similaire à Kodgranskning - i en agil miljö (13)

Några ord om test på WPBar i Norrköping
Några ord om test på WPBar i NorrköpingNågra ord om test på WPBar i Norrköping
Några ord om test på WPBar i Norrköping
 
VT2019 - DA355A - CSS Grid & Webbramverk
VT2019 - DA355A - CSS Grid & WebbramverkVT2019 - DA355A - CSS Grid & Webbramverk
VT2019 - DA355A - CSS Grid & Webbramverk
 
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
Frontit Seminarium: Snabbt, effektivt, agilt - men bra? Malmö 29 mars 2017
 
Vad är webb
Vad är webbVad är webb
Vad är webb
 
Makalösa resultat med Evolutionär webbdesign & AB-testning
Makalösa resultat med Evolutionär webbdesign & AB-testningMakalösa resultat med Evolutionär webbdesign & AB-testning
Makalösa resultat med Evolutionär webbdesign & AB-testning
 
DIBS E-handelsskola: Kom igång med konverteringsoptimering med Marie Horneman...
DIBS E-handelsskola: Kom igång med konverteringsoptimering med Marie Horneman...DIBS E-handelsskola: Kom igång med konverteringsoptimering med Marie Horneman...
DIBS E-handelsskola: Kom igång med konverteringsoptimering med Marie Horneman...
 
Digitaliseringen ändrar allt - Utom din hjärna
Digitaliseringen ändrar allt -  Utom din hjärnaDigitaliseringen ändrar allt -  Utom din hjärna
Digitaliseringen ändrar allt - Utom din hjärna
 
Testdriven Utveckling GeekGirlMeetup November 2010
Testdriven Utveckling GeekGirlMeetup November 2010Testdriven Utveckling GeekGirlMeetup November 2010
Testdriven Utveckling GeekGirlMeetup November 2010
 
Kravhantering i praktiken publikt
Kravhantering i praktiken publiktKravhantering i praktiken publikt
Kravhantering i praktiken publikt
 
Kth Nov 09
Kth Nov 09Kth Nov 09
Kth Nov 09
 
IBM Rational - Fördelarna med modellbaserad Test och Functional Tester
IBM Rational - Fördelarna med modellbaserad Test och Functional TesterIBM Rational - Fördelarna med modellbaserad Test och Functional Tester
IBM Rational - Fördelarna med modellbaserad Test och Functional Tester
 
Välj rätt i teknikdjungeln
Välj rätt i teknikdjungeln Välj rätt i teknikdjungeln
Välj rätt i teknikdjungeln
 
Vad innebär Cloud Computing ur ett testperspektiv?
Vad innebär Cloud Computing ur ett testperspektiv?Vad innebär Cloud Computing ur ett testperspektiv?
Vad innebär Cloud Computing ur ett testperspektiv?
 

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. Varför? 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. Varför? 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

Notes de l'éditeur

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