SlideShare une entreprise Scribd logo
1  sur  28
Télécharger pour lire hors ligne
Les revues de code ou comment faire
        fructifier son capital humain


                                       1
Jean-Marc Fontaine
Passionné de web depuis 1996, de PHP depuis 2000 et de
musique depuis 1977




  Responsable de la qualité logicielle chez
  Profilsoft
3
Les revues de code
Kezako ?




  Une revue de code consiste à examiner le code
  de quelqu'un d'autre à la recherche de défauts
  ou d'améliorations potentielles
Outils d'analyse
Il n’y a pas une application pour ça ?




 ‣ Complémentaires
 ‣ Adaptés aux problèmes de syntaxe et
   d'optimisation subtile
 ‣ Pas adaptés aux problèmes fonctionnels ou de
   logique
 ‣ Un humain est plus doué qu’une machine

                                                  5
Et les tests automatisés ?
Tests unitaires, fonctionnels, <insérez un buzzword ici>, etc.




 ‣ Ils n’indiquent rien de la qualité et de la
   maintenabilité du code
 ‣ Ils trouvent les symptômes tandis que les
   revues de code trouvent les causes des
   problèmes



                                                                 6
But des revues de code
Choisissez bien, choisissez le but !




 ‣ Amélioration de la qualité du code
 ‣ Vérification de la conformité
 ‣ Vérification de l'exhaustivité



                                        7
Bénéfices indirects
Parce qu’il n’y a pas de petit profit




 ‣ Partage de la connaissance
 ‣ Formation des juniors
 ‣ Amélioration de la maîtrise collective du code
 ‣ Émergence d'idées neuves



                                                    8
Objections habituelles
Parce qu’il y a toujours des gens contre…




 ‣ Coût
 ‣ Perte de temps
 ‣ Freins humains
 ‣ Difficultés d'organisation
 ‣ Méthode non exhaustive


                                            9
C'est un truc expérimental ?!
Encore un truc de hispter qui mange bio !




 ‣ Les revues de code sont pratiquées par tous
   les acteurs importants
 ‣ Chez Google rien n'est commité sans être revu
   au préalable.



                                                   10
Organiser une revue de code
                              11
A quel moment ?
Pre-commit




 ‣ Assure la qualité du code commité
 ‣ Peut être bloquant si les auditeurs ne sont pas
   disponibles




                                                     12
A quel moment ?
Post-commit




 ‣ Pas de blocage
 ‣ Présence dans le dépôt de code en attente de
   revue
 ‣ Pas forcément un problème si branche dédiée



                                                  13
Constituer l’équipe

‣ Entre 3 et 7 personnes
‣ Rôles
  •   Auteur
  •   Inspecteur
  •   Modérateur
  •   Lecteur
  •   Secrétaire
  •   Vérificateur
                           14
Choisir un lieu




‣ Calme
‣ L'équipe doit rester isolée durant toute la revue




                                                      15
Sélectionner le code à étudier


‣ Systématique
‣ À la demande du développeur
‣ Parties problématique de l'application
‣ Couverture de code
‣ Expérience
‣ Hasard

                                           16
Préparer une revue


‣ Réunion de présentation
‣ Définition des règles, standards et
  spécifications en vigueur
‣ Le lecteur doit se familiariser avec le code
‣ Les inspecteurs doivent étudier le code à la
  recherche de problèmes et d'opportunités
  d'optimisations

                                                 17
Déroulement
               Le modérateur conduit la revue


           Le lecteur décrit le code avec ses mots


 Les inspecteurs questionnent et proposent des améliorations


       Le secrétaire note les remarques dans le journal


       Les inspecteurs notent la qualité du code étudié

                                                               18
Après la revue de code



‣ L'auteur modifie son code en fonction du
  journal des défauts
‣ Le modérateur rédige un compte-rendu de
  revue
‣ Le vérificateur s'assure que le code a été
  retravaillé comme convenu


                                              19
Livrables




‣ Code retravaillé
‣ Journal des défauts
‣ Compte-rendu de revue



                          20
Évaluer le fruit des
 revues de code
                       21
Mesures de base
            ‣Nombre de lignes à étudier
   Taille   ‣Nombre de lignes étudiées


            ‣Planification
            ‣Présentation
  Effort    ‣Préparation
            ‣Revue
            ‣Modification


            ‣Nombre de défauts mineurs et majeures trouvés
  Défauts   ‣Nombre de défauts mineurs et majeures corrigés



            ‣Durée de la revue
  Divers    ‣Nombre d’inspecteurs
            ‣Evaluation de la qualité du code
                                                              22
Mesures avancées
              ‣Nombre de défauts par unité de code étudiée
  Défauts     ‣Nombre total de défauts trouvés
              ‣Nombre total de défauts corrigés


              ‣Nombre d’heures consacrées à la revue dans son ensemble
   Effort     ‣Nombre d’heures moyen pour trouvé un défaut (hors correction)
              ‣Nombre d’heures moyen pour inspecter une unité de code



              ‣Pourcentage du code prévu qui a été effectivement revu
 Couverture   ‣Pourcentage de défauts considérés comme majeurs



              ‣Nombre moyen d’unités de code inspectées par revue
  Rythme      ‣Nombre moyen d’heures de préparation individuelle par unité de code
              ‣Nombre moyen d’heures pour corriger et vérifier un défaut
                                                                                     23
Outiller ses
revues de code
                 24
Outils Open Source




‣ Review Board
‣ Gerrit
‣ Github



                     25
Outils commerciaux




‣ SmartBear Code Collaborator
‣ Atlassian Crucible




                                26
10 commandements
Ca aurait de l’allure gravé sur une pierre, non ?


 ‣ Ne pas étudier plus de 300 lignes à la fois
 ‣ Adopter un rythme de 300 à 500 lignes étudiées par heure
 ‣ Ne pas dépasser 90 minutes pour une revue
 ‣ Les inspecteurs doivent étudier le code avant la réunion de revue
 ‣ Établir des objectifs quantifiables et recueillir des mesures
 ‣ Utiliser des checklists
 ‣ Vérifier que les problèmes trouvés sont effectivement corrigés
 ‣ Développer la culture de la revue de code
 ‣ Jouer sur la pression sociale
 ‣ Éviter le sentiment de surveillance
                                                                       27
Merci !




‣ jmfontaine.net
‣ @jmfontaine
‣ jm@jmfontaine.net



                      28

Contenu connexe

Tendances

2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1TelecomValley
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingGeeks Anonymes
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveFreddy Mallet
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !Lucian Precup
 
Le combat contre l'atrophie technique - Agile en Seine 2020
Le combat contre l'atrophie technique - Agile en Seine 2020Le combat contre l'atrophie technique - Agile en Seine 2020
Le combat contre l'atrophie technique - Agile en Seine 2020Agile En Seine
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17Marc Hage Chahine
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubePierre-Henri Gache
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
Indicateurs REPaRéD pour le testing craftsmanship
Indicateurs REPaRéD pour le testing craftsmanshipIndicateurs REPaRéD pour le testing craftsmanship
Indicateurs REPaRéD pour le testing craftsmanshipChristophe Moustier
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techMarine Karam
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...TelecomValley
 
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision QualiteSolutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualitefrancois.le.droff
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !Lucian Precup
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web modernehalleck45
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018Benjamin Lavialle
 
Présentation TDD UQAM
Présentation TDD UQAMPrésentation TDD UQAM
Présentation TDD UQAMNicholas Lemay
 

Tendances (20)

2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.12019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
2019 - HAGE CHAHINE - ALTRAN - Presentation-DecouverteMondeAgile_V1.1
 
Le rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testingLe rôle du testeur et le Blackbox testing
Le rôle du testeur et le Blackbox testing
 
Sonar 2.0 au JUG Genève
Sonar 2.0 au JUG GenèveSonar 2.0 au JUG Genève
Sonar 2.0 au JUG Genève
 
La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !La revue de code : agile, lean, indispensable !
La revue de code : agile, lean, indispensable !
 
Le combat contre l'atrophie technique - Agile en Seine 2020
Le combat contre l'atrophie technique - Agile en Seine 2020Le combat contre l'atrophie technique - Agile en Seine 2020
Le combat contre l'atrophie technique - Agile en Seine 2020
 
Altran soirée du test logiciel - assez des c 05-10-17
Altran   soirée du test logiciel - assez des c 05-10-17Altran   soirée du test logiciel - assez des c 05-10-17
Altran soirée du test logiciel - assez des c 05-10-17
 
Gérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQubeGérer sa dette technique avec SonarQube
Gérer sa dette technique avec SonarQube
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
Indicateurs REPaRéD pour le testing craftsmanship
Indicateurs REPaRéD pour le testing craftsmanshipIndicateurs REPaRéD pour le testing craftsmanship
Indicateurs REPaRéD pour le testing craftsmanship
 
Tester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue techTester c'est douter - Linkvalue tech
Tester c'est douter - Linkvalue tech
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
Soirée du Test Logiciel - Les dernières tendances du test logiciel - B. LEGEA...
 
Solutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision QualiteSolutions Linux2008 Construire Sa Vision Qualite
Solutions Linux2008 Construire Sa Vision Qualite
 
La revue de code : facile !
La revue de code : facile !La revue de code : facile !
La revue de code : facile !
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
Outils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderneOutils et pratiques : tester une application web moderne
Outils et pratiques : tester une application web moderne
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018Code Review Cocoaheads Lyon 2018
Code Review Cocoaheads Lyon 2018
 
Présentation TDD UQAM
Présentation TDD UQAMPrésentation TDD UQAM
Présentation TDD UQAM
 

En vedette

Table ronde equip auto 2013 lea partners synthèse intervenants
Table ronde equip auto 2013    lea partners synthèse intervenantsTable ronde equip auto 2013    lea partners synthèse intervenants
Table ronde equip auto 2013 lea partners synthèse intervenantsDavid Rajsavong
 
Atelier Gestion du Capital Humain - IBM Forum SaaS DRH
Atelier Gestion du Capital Humain - IBM Forum SaaS DRHAtelier Gestion du Capital Humain - IBM Forum SaaS DRH
Atelier Gestion du Capital Humain - IBM Forum SaaS DRHTalentsoft France
 
Qu'est ce que l'optimisation du capital humain?
Qu'est ce que l'optimisation du capital humain?Qu'est ce que l'optimisation du capital humain?
Qu'est ce que l'optimisation du capital humain?REPEX
 
Enjeux Du Capital Humain RH Club Alliances
Enjeux Du Capital Humain RH Club AlliancesEnjeux Du Capital Humain RH Club Alliances
Enjeux Du Capital Humain RH Club AlliancesSaaS Guru
 
Accenture strategie-du-capital-humain-et-efficacite-des-organisations
Accenture strategie-du-capital-humain-et-efficacite-des-organisationsAccenture strategie-du-capital-humain-et-efficacite-des-organisations
Accenture strategie-du-capital-humain-et-efficacite-des-organisationsCFigarol
 
Communautés 2.0 - partie 2 : Entreprise 2.0
Communautés 2.0 - partie 2 : Entreprise 2.0Communautés 2.0 - partie 2 : Entreprise 2.0
Communautés 2.0 - partie 2 : Entreprise 2.0nous sommes vivants
 
La Valorisation Du Capital Humain Enjeux, StratéGies Et Solutions
La Valorisation Du Capital Humain   Enjeux, StratéGies Et SolutionsLa Valorisation Du Capital Humain   Enjeux, StratéGies Et Solutions
La Valorisation Du Capital Humain Enjeux, StratéGies Et SolutionsSaaS Guru
 
Présentation de la loi transition energétique pour la croissance verte par le...
Présentation de la loi transition energétique pour la croissance verte par le...Présentation de la loi transition energétique pour la croissance verte par le...
Présentation de la loi transition energétique pour la croissance verte par le...Novabuild
 
Business & Decision - Blockchain et applications : Etat de l'art
Business & Decision - Blockchain et applications : Etat de l'artBusiness & Decision - Blockchain et applications : Etat de l'art
Business & Decision - Blockchain et applications : Etat de l'artBusiness & Decision
 
Dimensions stratégique des rh et du capital humain v2
Dimensions stratégique des rh et du capital humain v2Dimensions stratégique des rh et du capital humain v2
Dimensions stratégique des rh et du capital humain v2MARCEL NIZON, Marcel
 
IBM Technology Day 2013 Transformer Capital Humain Salle Lake Placid
IBM Technology Day 2013 Transformer Capital Humain Salle Lake PlacidIBM Technology Day 2013 Transformer Capital Humain Salle Lake Placid
IBM Technology Day 2013 Transformer Capital Humain Salle Lake PlacidIBM Switzerland
 
MobiliteaTime #7 : Blockchain
MobiliteaTime #7 : BlockchainMobiliteaTime #7 : Blockchain
MobiliteaTime #7 : BlockchainUSERADGENTS
 
Synthèse n°52 : Et si les DSI tiraient enfin parti de leur capital humain ?
Synthèse n°52 : Et si les DSI tiraient enfin parti de leur capital humain ?Synthèse n°52 : Et si les DSI tiraient enfin parti de leur capital humain ?
Synthèse n°52 : Et si les DSI tiraient enfin parti de leur capital humain ?Wavestone
 
Capital humain, facteur de réussite des projets
Capital humain, facteur de réussite des projetsCapital humain, facteur de réussite des projets
Capital humain, facteur de réussite des projetsFabrice Thomas
 
Trophée du Capital Humain 2015
Trophée du Capital Humain 2015Trophée du Capital Humain 2015
Trophée du Capital Humain 2015Michael Page
 
La soirée place capital humain 13 Décembre 2012
La soirée place capital humain 13 Décembre 2012La soirée place capital humain 13 Décembre 2012
La soirée place capital humain 13 Décembre 2012Lille_Place_Tertiaire
 
Présentation de BlockChain Strategists
Présentation de BlockChain StrategistsPrésentation de BlockChain Strategists
Présentation de BlockChain StrategistsEric Lévy-Bencheton
 
La blockchain pour les nuls - Petit déjeuner OCTO Technology & d'Alverny
La blockchain pour les nuls - Petit déjeuner OCTO Technology & d'AlvernyLa blockchain pour les nuls - Petit déjeuner OCTO Technology & d'Alverny
La blockchain pour les nuls - Petit déjeuner OCTO Technology & d'AlvernySébastien Bourguignon
 
Tendances relatives au capital humain en 2015
Tendances relatives au capital humain en 2015Tendances relatives au capital humain en 2015
Tendances relatives au capital humain en 2015Deloitte Canada
 

En vedette (20)

Table ronde equip auto 2013 lea partners synthèse intervenants
Table ronde equip auto 2013    lea partners synthèse intervenantsTable ronde equip auto 2013    lea partners synthèse intervenants
Table ronde equip auto 2013 lea partners synthèse intervenants
 
Atelier Gestion du Capital Humain - IBM Forum SaaS DRH
Atelier Gestion du Capital Humain - IBM Forum SaaS DRHAtelier Gestion du Capital Humain - IBM Forum SaaS DRH
Atelier Gestion du Capital Humain - IBM Forum SaaS DRH
 
Qu'est ce que l'optimisation du capital humain?
Qu'est ce que l'optimisation du capital humain?Qu'est ce que l'optimisation du capital humain?
Qu'est ce que l'optimisation du capital humain?
 
Enjeux Du Capital Humain RH Club Alliances
Enjeux Du Capital Humain RH Club AlliancesEnjeux Du Capital Humain RH Club Alliances
Enjeux Du Capital Humain RH Club Alliances
 
Accenture strategie-du-capital-humain-et-efficacite-des-organisations
Accenture strategie-du-capital-humain-et-efficacite-des-organisationsAccenture strategie-du-capital-humain-et-efficacite-des-organisations
Accenture strategie-du-capital-humain-et-efficacite-des-organisations
 
socio performance 2
socio performance 2socio performance 2
socio performance 2
 
Communautés 2.0 - partie 2 : Entreprise 2.0
Communautés 2.0 - partie 2 : Entreprise 2.0Communautés 2.0 - partie 2 : Entreprise 2.0
Communautés 2.0 - partie 2 : Entreprise 2.0
 
La Valorisation Du Capital Humain Enjeux, StratéGies Et Solutions
La Valorisation Du Capital Humain   Enjeux, StratéGies Et SolutionsLa Valorisation Du Capital Humain   Enjeux, StratéGies Et Solutions
La Valorisation Du Capital Humain Enjeux, StratéGies Et Solutions
 
Présentation de la loi transition energétique pour la croissance verte par le...
Présentation de la loi transition energétique pour la croissance verte par le...Présentation de la loi transition energétique pour la croissance verte par le...
Présentation de la loi transition energétique pour la croissance verte par le...
 
Business & Decision - Blockchain et applications : Etat de l'art
Business & Decision - Blockchain et applications : Etat de l'artBusiness & Decision - Blockchain et applications : Etat de l'art
Business & Decision - Blockchain et applications : Etat de l'art
 
Dimensions stratégique des rh et du capital humain v2
Dimensions stratégique des rh et du capital humain v2Dimensions stratégique des rh et du capital humain v2
Dimensions stratégique des rh et du capital humain v2
 
IBM Technology Day 2013 Transformer Capital Humain Salle Lake Placid
IBM Technology Day 2013 Transformer Capital Humain Salle Lake PlacidIBM Technology Day 2013 Transformer Capital Humain Salle Lake Placid
IBM Technology Day 2013 Transformer Capital Humain Salle Lake Placid
 
MobiliteaTime #7 : Blockchain
MobiliteaTime #7 : BlockchainMobiliteaTime #7 : Blockchain
MobiliteaTime #7 : Blockchain
 
Synthèse n°52 : Et si les DSI tiraient enfin parti de leur capital humain ?
Synthèse n°52 : Et si les DSI tiraient enfin parti de leur capital humain ?Synthèse n°52 : Et si les DSI tiraient enfin parti de leur capital humain ?
Synthèse n°52 : Et si les DSI tiraient enfin parti de leur capital humain ?
 
Capital humain, facteur de réussite des projets
Capital humain, facteur de réussite des projetsCapital humain, facteur de réussite des projets
Capital humain, facteur de réussite des projets
 
Trophée du Capital Humain 2015
Trophée du Capital Humain 2015Trophée du Capital Humain 2015
Trophée du Capital Humain 2015
 
La soirée place capital humain 13 Décembre 2012
La soirée place capital humain 13 Décembre 2012La soirée place capital humain 13 Décembre 2012
La soirée place capital humain 13 Décembre 2012
 
Présentation de BlockChain Strategists
Présentation de BlockChain StrategistsPrésentation de BlockChain Strategists
Présentation de BlockChain Strategists
 
La blockchain pour les nuls - Petit déjeuner OCTO Technology & d'Alverny
La blockchain pour les nuls - Petit déjeuner OCTO Technology & d'AlvernyLa blockchain pour les nuls - Petit déjeuner OCTO Technology & d'Alverny
La blockchain pour les nuls - Petit déjeuner OCTO Technology & d'Alverny
 
Tendances relatives au capital humain en 2015
Tendances relatives au capital humain en 2015Tendances relatives au capital humain en 2015
Tendances relatives au capital humain en 2015
 

Similaire à Revue de code - PHP Tour Nantes 2012

La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesEric SIBER
 
Agile tour 2015 alliés contre les défauts
Agile tour 2015   alliés contre les défautsAgile tour 2015   alliés contre les défauts
Agile tour 2015 alliés contre les défautsJulien Jakubowski
 
Agile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAgile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAntoine Blk
 
[BreizhCamp 2016] La relecture de code : avant tout des pratiques
[BreizhCamp 2016] La relecture de code : avant tout des pratiques[BreizhCamp 2016] La relecture de code : avant tout des pratiques
[BreizhCamp 2016] La relecture de code : avant tout des pratiquesEric SIBER
 
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016André De Sousa
 
[Agile Laval 2016] La relecture de code : avant tout des pratiques
[Agile Laval 2016] La relecture de code : avant tout des pratiques[Agile Laval 2016] La relecture de code : avant tout des pratiques
[Agile Laval 2016] La relecture de code : avant tout des pratiquesEric SIBER
 
Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Julien Deneuville
 
Et si nos pratiques de test étaient le frein à notre agilité ?
Et si nos pratiques de test étaient le frein à notre agilité ?Et si nos pratiques de test étaient le frein à notre agilité ?
Et si nos pratiques de test étaient le frein à notre agilité ?Frantz Degrigny
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgileAgile Tour 2009 Québec
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_allCARA_Lyon
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?CGI Québec Formation
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survieNicolas VERINAUD
 
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...OCTO Technology
 
Enib cours c.a.i. web - séance #6 : autour de la webapp
Enib   cours c.a.i. web - séance #6 : autour de la webappEnib   cours c.a.i. web - séance #6 : autour de la webapp
Enib cours c.a.i. web - séance #6 : autour de la webappHoracio Gonzalez
 
Pas d'agilité sans qualité
Pas d'agilité sans qualitéPas d'agilité sans qualité
Pas d'agilité sans qualitéAgile Montréal
 
Developement logiciel: comment livrer de la qualite ?
Developement logiciel: comment livrer  de la qualite ?Developement logiciel: comment livrer  de la qualite ?
Developement logiciel: comment livrer de la qualite ?Innobec
 
Tdd en action - refactoring
Tdd en action - refactoringTdd en action - refactoring
Tdd en action - refactoringEric Mignot
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptxGuillaume Saint Etienne
 

Similaire à Revue de code - PHP Tour Nantes 2012 (20)

La relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiquesLa relecture de code : avant tout des pratiques
La relecture de code : avant tout des pratiques
 
Agile tour 2015 alliés contre les défauts
Agile tour 2015   alliés contre les défautsAgile tour 2015   alliés contre les défauts
Agile tour 2015 alliés contre les défauts
 
Agile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defautsAgile tour Lille 2015 allies ensemble contre les defauts
Agile tour Lille 2015 allies ensemble contre les defauts
 
[BreizhCamp 2016] La relecture de code : avant tout des pratiques
[BreizhCamp 2016] La relecture de code : avant tout des pratiques[BreizhCamp 2016] La relecture de code : avant tout des pratiques
[BreizhCamp 2016] La relecture de code : avant tout des pratiques
 
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
Mob programming 101 @Morpho (Groupe Safran) - 08/03/2016
 
[Agile Laval 2016] La relecture de code : avant tout des pratiques
[Agile Laval 2016] La relecture de code : avant tout des pratiques[Agile Laval 2016] La relecture de code : avant tout des pratiques
[Agile Laval 2016] La relecture de code : avant tout des pratiques
 
Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?Analyse de logs SEO : pour qui, pour quoi, comment ?
Analyse de logs SEO : pour qui, pour quoi, comment ?
 
Et si nos pratiques de test étaient le frein à notre agilité ?
Et si nos pratiques de test étaient le frein à notre agilité ?Et si nos pratiques de test étaient le frein à notre agilité ?
Et si nos pratiques de test étaient le frein à notre agilité ?
 
Pratiques de développement pour équipes Agile
Pratiques de développement pour équipes AgilePratiques de développement pour équipes Agile
Pratiques de développement pour équipes Agile
 
20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all20110519 cara tests_agiles_grenoble_all
20110519 cara tests_agiles_grenoble_all
 
Normandy JUG integration Continue
Normandy JUG integration ContinueNormandy JUG integration Continue
Normandy JUG integration Continue
 
Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?Tester du legacy code, mission impossible ?
Tester du legacy code, mission impossible ?
 
Les Code Reviews : le guide de survie
Les Code Reviews : le guide de survieLes Code Reviews : le guide de survie
Les Code Reviews : le guide de survie
 
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
Petit-déjeuner "Cultiver l'art du code de qualité... Afin de livrer plus vite...
 
Hands on Sonar
Hands on SonarHands on Sonar
Hands on Sonar
 
Enib cours c.a.i. web - séance #6 : autour de la webapp
Enib   cours c.a.i. web - séance #6 : autour de la webappEnib   cours c.a.i. web - séance #6 : autour de la webapp
Enib cours c.a.i. web - séance #6 : autour de la webapp
 
Pas d'agilité sans qualité
Pas d'agilité sans qualitéPas d'agilité sans qualité
Pas d'agilité sans qualité
 
Developement logiciel: comment livrer de la qualite ?
Developement logiciel: comment livrer  de la qualite ?Developement logiciel: comment livrer  de la qualite ?
Developement logiciel: comment livrer de la qualite ?
 
Tdd en action - refactoring
Tdd en action - refactoringTdd en action - refactoring
Tdd en action - refactoring
 
10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx10 ans de Code (Agile Bordeaux 2019).pptx
10 ans de Code (Agile Bordeaux 2019).pptx
 

Plus de Jean-Marc Fontaine

Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012Jean-Marc Fontaine
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Jean-Marc Fontaine
 
Gérer ses environnements de développement avec Vagrant - RMLL 2012
Gérer ses environnements de développement avec Vagrant - RMLL 2012Gérer ses environnements de développement avec Vagrant - RMLL 2012
Gérer ses environnements de développement avec Vagrant - RMLL 2012Jean-Marc Fontaine
 
La qualité au delà du code - Forum PHP 2012
La qualité au delà du code - Forum PHP 2012La qualité au delà du code - Forum PHP 2012
La qualité au delà du code - Forum PHP 2012Jean-Marc Fontaine
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Jean-Marc Fontaine
 
Reprise sur incident - ConFoo 2012
Reprise sur incident - ConFoo 2012Reprise sur incident - ConFoo 2012
Reprise sur incident - ConFoo 2012Jean-Marc Fontaine
 
La qualité au-delà du code - ConFoo 2012
La qualité au-delà du code - ConFoo 2012La qualité au-delà du code - ConFoo 2012
La qualité au-delà du code - ConFoo 2012Jean-Marc Fontaine
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 
Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011Jean-Marc Fontaine
 
Organiser efficacement son dépôt de code - RMLL 2011
Organiser efficacement son dépôt de code - RMLL 2011Organiser efficacement son dépôt de code - RMLL 2011
Organiser efficacement son dépôt de code - RMLL 2011Jean-Marc Fontaine
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Jean-Marc Fontaine
 
Comment monter son business grâce à l'Open Source ?
Comment monter son business grâce à l'Open Source ?Comment monter son business grâce à l'Open Source ?
Comment monter son business grâce à l'Open Source ?Jean-Marc Fontaine
 
Industrialiser ses développements PHP - RMLL 2010
Industrialiser ses développements PHP - RMLL 2010Industrialiser ses développements PHP - RMLL 2010
Industrialiser ses développements PHP - RMLL 2010Jean-Marc Fontaine
 
Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Jean-Marc Fontaine
 
Industrialisation de PHP - Be Zend 2010
Industrialisation de PHP - Be Zend 2010Industrialisation de PHP - Be Zend 2010
Industrialisation de PHP - Be Zend 2010Jean-Marc Fontaine
 
Solutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPSolutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPJean-Marc Fontaine
 
PHP 5.3 : Une étape importante sur la route vers PHP 6
PHP 5.3 : Une étape importante sur la route vers PHP 6PHP 5.3 : Une étape importante sur la route vers PHP 6
PHP 5.3 : Une étape importante sur la route vers PHP 6Jean-Marc Fontaine
 
Déboguer une application web avec FirePHP
Déboguer une application web avec FirePHPDéboguer une application web avec FirePHP
Déboguer une application web avec FirePHPJean-Marc Fontaine
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPJean-Marc Fontaine
 

Plus de Jean-Marc Fontaine (20)

Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
Gérer ses environnements de développement avec vagrant - PHP Tour Nantes 2012
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012
 
Gérer ses environnements de développement avec Vagrant - RMLL 2012
Gérer ses environnements de développement avec Vagrant - RMLL 2012Gérer ses environnements de développement avec Vagrant - RMLL 2012
Gérer ses environnements de développement avec Vagrant - RMLL 2012
 
La qualité au delà du code - Forum PHP 2012
La qualité au delà du code - Forum PHP 2012La qualité au delà du code - Forum PHP 2012
La qualité au delà du code - Forum PHP 2012
 
Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012Gestion des dépendances dans un projet PHP - Forum PHP 2012
Gestion des dépendances dans un projet PHP - Forum PHP 2012
 
Reprise sur incident - ConFoo 2012
Reprise sur incident - ConFoo 2012Reprise sur incident - ConFoo 2012
Reprise sur incident - ConFoo 2012
 
La qualité au-delà du code - ConFoo 2012
La qualité au-delà du code - ConFoo 2012La qualité au-delà du code - ConFoo 2012
La qualité au-delà du code - ConFoo 2012
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011
 
Organiser efficacement son dépôt de code - RMLL 2011
Organiser efficacement son dépôt de code - RMLL 2011Organiser efficacement son dépôt de code - RMLL 2011
Organiser efficacement son dépôt de code - RMLL 2011
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011
 
Comment monter son business grâce à l'Open Source ?
Comment monter son business grâce à l'Open Source ?Comment monter son business grâce à l'Open Source ?
Comment monter son business grâce à l'Open Source ?
 
Industrialiser ses développements PHP - RMLL 2010
Industrialiser ses développements PHP - RMLL 2010Industrialiser ses développements PHP - RMLL 2010
Industrialiser ses développements PHP - RMLL 2010
 
Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010
 
Industrialisation de PHP - Be Zend 2010
Industrialisation de PHP - Be Zend 2010Industrialisation de PHP - Be Zend 2010
Industrialisation de PHP - Be Zend 2010
 
Solutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHPSolutions Linux 2010 - Maîtrise du développement PHP
Solutions Linux 2010 - Maîtrise du développement PHP
 
PHP : Etat des lieux
PHP : Etat des lieuxPHP : Etat des lieux
PHP : Etat des lieux
 
PHP 5.3 : Une étape importante sur la route vers PHP 6
PHP 5.3 : Une étape importante sur la route vers PHP 6PHP 5.3 : Une étape importante sur la route vers PHP 6
PHP 5.3 : Une étape importante sur la route vers PHP 6
 
Déboguer une application web avec FirePHP
Déboguer une application web avec FirePHPDéboguer une application web avec FirePHP
Déboguer une application web avec FirePHP
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
 

Revue de code - PHP Tour Nantes 2012

  • 1. Les revues de code ou comment faire fructifier son capital humain 1
  • 2. Jean-Marc Fontaine Passionné de web depuis 1996, de PHP depuis 2000 et de musique depuis 1977 Responsable de la qualité logicielle chez Profilsoft
  • 3. 3
  • 4. Les revues de code Kezako ? Une revue de code consiste à examiner le code de quelqu'un d'autre à la recherche de défauts ou d'améliorations potentielles
  • 5. Outils d'analyse Il n’y a pas une application pour ça ? ‣ Complémentaires ‣ Adaptés aux problèmes de syntaxe et d'optimisation subtile ‣ Pas adaptés aux problèmes fonctionnels ou de logique ‣ Un humain est plus doué qu’une machine 5
  • 6. Et les tests automatisés ? Tests unitaires, fonctionnels, <insérez un buzzword ici>, etc. ‣ Ils n’indiquent rien de la qualité et de la maintenabilité du code ‣ Ils trouvent les symptômes tandis que les revues de code trouvent les causes des problèmes 6
  • 7. But des revues de code Choisissez bien, choisissez le but ! ‣ Amélioration de la qualité du code ‣ Vérification de la conformité ‣ Vérification de l'exhaustivité 7
  • 8. Bénéfices indirects Parce qu’il n’y a pas de petit profit ‣ Partage de la connaissance ‣ Formation des juniors ‣ Amélioration de la maîtrise collective du code ‣ Émergence d'idées neuves 8
  • 9. Objections habituelles Parce qu’il y a toujours des gens contre… ‣ Coût ‣ Perte de temps ‣ Freins humains ‣ Difficultés d'organisation ‣ Méthode non exhaustive 9
  • 10. C'est un truc expérimental ?! Encore un truc de hispter qui mange bio ! ‣ Les revues de code sont pratiquées par tous les acteurs importants ‣ Chez Google rien n'est commité sans être revu au préalable. 10
  • 11. Organiser une revue de code 11
  • 12. A quel moment ? Pre-commit ‣ Assure la qualité du code commité ‣ Peut être bloquant si les auditeurs ne sont pas disponibles 12
  • 13. A quel moment ? Post-commit ‣ Pas de blocage ‣ Présence dans le dépôt de code en attente de revue ‣ Pas forcément un problème si branche dédiée 13
  • 14. Constituer l’équipe ‣ Entre 3 et 7 personnes ‣ Rôles • Auteur • Inspecteur • Modérateur • Lecteur • Secrétaire • Vérificateur 14
  • 15. Choisir un lieu ‣ Calme ‣ L'équipe doit rester isolée durant toute la revue 15
  • 16. Sélectionner le code à étudier ‣ Systématique ‣ À la demande du développeur ‣ Parties problématique de l'application ‣ Couverture de code ‣ Expérience ‣ Hasard 16
  • 17. Préparer une revue ‣ Réunion de présentation ‣ Définition des règles, standards et spécifications en vigueur ‣ Le lecteur doit se familiariser avec le code ‣ Les inspecteurs doivent étudier le code à la recherche de problèmes et d'opportunités d'optimisations 17
  • 18. Déroulement Le modérateur conduit la revue Le lecteur décrit le code avec ses mots Les inspecteurs questionnent et proposent des améliorations Le secrétaire note les remarques dans le journal Les inspecteurs notent la qualité du code étudié 18
  • 19. Après la revue de code ‣ L'auteur modifie son code en fonction du journal des défauts ‣ Le modérateur rédige un compte-rendu de revue ‣ Le vérificateur s'assure que le code a été retravaillé comme convenu 19
  • 20. Livrables ‣ Code retravaillé ‣ Journal des défauts ‣ Compte-rendu de revue 20
  • 21. Évaluer le fruit des revues de code 21
  • 22. Mesures de base ‣Nombre de lignes à étudier Taille ‣Nombre de lignes étudiées ‣Planification ‣Présentation Effort ‣Préparation ‣Revue ‣Modification ‣Nombre de défauts mineurs et majeures trouvés Défauts ‣Nombre de défauts mineurs et majeures corrigés ‣Durée de la revue Divers ‣Nombre d’inspecteurs ‣Evaluation de la qualité du code 22
  • 23. Mesures avancées ‣Nombre de défauts par unité de code étudiée Défauts ‣Nombre total de défauts trouvés ‣Nombre total de défauts corrigés ‣Nombre d’heures consacrées à la revue dans son ensemble Effort ‣Nombre d’heures moyen pour trouvé un défaut (hors correction) ‣Nombre d’heures moyen pour inspecter une unité de code ‣Pourcentage du code prévu qui a été effectivement revu Couverture ‣Pourcentage de défauts considérés comme majeurs ‣Nombre moyen d’unités de code inspectées par revue Rythme ‣Nombre moyen d’heures de préparation individuelle par unité de code ‣Nombre moyen d’heures pour corriger et vérifier un défaut 23
  • 25. Outils Open Source ‣ Review Board ‣ Gerrit ‣ Github 25
  • 26. Outils commerciaux ‣ SmartBear Code Collaborator ‣ Atlassian Crucible 26
  • 27. 10 commandements Ca aurait de l’allure gravé sur une pierre, non ? ‣ Ne pas étudier plus de 300 lignes à la fois ‣ Adopter un rythme de 300 à 500 lignes étudiées par heure ‣ Ne pas dépasser 90 minutes pour une revue ‣ Les inspecteurs doivent étudier le code avant la réunion de revue ‣ Établir des objectifs quantifiables et recueillir des mesures ‣ Utiliser des checklists ‣ Vérifier que les problèmes trouvés sont effectivement corrigés ‣ Développer la culture de la revue de code ‣ Jouer sur la pression sociale ‣ Éviter le sentiment de surveillance 27
  • 28. Merci ! ‣ jmfontaine.net ‣ @jmfontaine ‣ jm@jmfontaine.net 28