SlideShare une entreprise Scribd logo
1  sur  31
La revue de code : c’est Agile,
c’est Lean, c’est Indispensable !
Lucian Precup
conf.agile-france.org
2010-05-31
Lucian Precup
• Développeur, architecte, chef de projets et
responsable des développements (Java EE,
ETL, BI)
• Consultant en industrialisation des
développements (outils ALM, méthodes de
développement, organisation)
Objectif de la présentation
• Mise en place de la revue de code …
• Formelle … et
• Assistée par les outils …
Qu’est-ce la revue de code?
• Inspection systématique du code source
• Buts:
– Trouver et corriger des erreurs
– Améliorer la qualité du logiciel
– Améliorer les compétences des développeurs
• Types de revue de code
– Formelle ou informelle, pré ou post commit
– « Over-the-shoulder », par e-mail
– « Pair-programming »
Avantages
• Trouver des bugs
• Promouvoir l’apprentissage
• Former
• Promouvoir le partage
• Rendre le code plus maintenable
• Trouver des meilleures solutions techniques
La revue du code
augmente la durée
des développements
C’est n’est qu’une
impression. Regardez
la suite.
Développement Test Bugfix (et dév) Bugfix
Chez le clientEn interne
Dév (et bugfix) Test Bugfix BugfixRevue
Trouver/corriger bugs en QA 200 x 200€
Trouver/corriger bugs chez
le client
100 x 2000€
Développement 100xxx €
Trouver/corriger bugs à la revue 135 x 60€
Trouver/corriger bugs en QA 110 x 200€
Trouver/corriger bugs chez le
client
55 x 2000€
Développement 90xxx €
La revue de code et le cout des
développements
Nos développeurs sont
très bons, ils n’ont pas
besoin de revue de code
La revue de code c’est
la meilleure veille
technologique qui
puisse exister
Les Tech Leads n’ont pas
besoin de revue de code
Il ne faut pas oublier le
partage et la formation. Et
puis, personne n’est à l’abri
des bugs 
Il n’y a personne dans
l’équipe qui puisse
examiner mon code car
je suis le seul à
connaître Delphi
Le regard d’un
développeur Java sur un
code Delphi peut
donner des idées
Mais qui
implémente la
revue de code?
Tous les grands éditeurs
de logiciels ainsi que
beaucoup de projets
open source
Le monde Open Source
SCM
CI
RM
Review
Refactoring
Modifications
Super Review
patch
patch
checkin
checkin
Processus de mozilla.org
• Revue obligatoire pour pouvoir commiter
• Intégration du processus dans Bugzilla
• Listes d’examinateurs « accrédités » par area
et sous-module
• « Super-review » nécessaire dans certains cas
avec une « Super-Review Policy » bien définie
• « Ui-review » pour IHM et User Experience
Implémentations et témoignages
• INRIA Transfert et Medience
– Implémentation avec Aegis
– Très bonne qualité malgré le turn-over
de l’équipe
• Business Objects
– « Les développements de l’équipe Data
Federator étaient plus longs mais, en revanche,
ils se stabilisaient très rapidement et les délais
de livraisons étaient très prévisibles »
Autres témoignages
• Grand éditeur de logiciel
– Équipe de huit personnes (France et Etats Unis)
– Très productive grâce à la revue asynchrone
pendant la « nuit »
• Equipe de moteur de recherche d’un grand
site d’e-commerce
– La revue de code a réussi à optimiser la mise en
recette
– Très bon retour des développeurs
Peut-on
automatiser la
revue?
Des outils trouvent des bugs
et peuvent nous apprendre
beaucoup. Mais il ne faut pas
oublier le partage de la
connaissance
Revue automatisée?
• Analyse de la qualité du code
• Scripts pour vérification des normes internes.
Ex:
– Suffisamment de tests unitaires
– Respect des règles d’architecture d’entreprise
• Tests automatiques
Hudson FindBugs Sonar
Donc les tests, les outils
d’analyse, l’intégration
continue ne remplacent
pas la revue de code?
Il faut tous les
avoir et ils se
complètent
La revue de code comparée à ...
• Un bon département QA
– le coût d’un département QA est plus
important; plus on trouve le bug tard plus il
coûte cher
• Des outils automatiques
– la revue de code ne trouve pas que des
bugs; il y a aussi l’apprentissage, le partage,
la maintenance
• L’intégration continue
– Même si les problèmes sont détectés très
tôt, la revue de code permet de les trouver
encore plus tôt
Et le « pair
programming » ?
Bonne remarque !
Quid du Pair Programming ?
• Revue de code en continu
• Très efficace pour trouver des bugs et pour
favoriser la connaissance
Mais
• L’examinateur – très impliqué dans le code
• Trop coûteux à implémenter
• Présence physique au même endroit
Les outils qui m’aident à
bien implémenter la revue
coûtent cher
Pas forcément
Outils et intégration
• Code Collaborator de SmartBear
– Intégration avec les gestionnaires de code source
et avec les gestionnaires des anomalies
• Atlassian Crucible
– Intégration avec JIRA et les autres outils Atlassian
• Eclipse + Bugzilla + Mylyn + patch (CVS, SVN)
– Intégration avec l’IDE, possibilité de faire plus que
juste regarder le code
Exemple d’implémentation avec
Bugzilla, Mylyn, Eclipse et CVS
Revue
Upload patch
Review passed
=> Checkin« Self-review »
Création du patch
Download patch
Mise en œuvre
• Taille des projets?
• Par qui, comment?
• Avant l’intégration ou après?
• Regarder juste le code ou faire plus?
• Quel type de revue de code est le mieux
adapté à ma situation?
Et l’agilité dans tout ça ?
La revue de code fait
partie d’une démarche
agile, lean et industrielle
La revue de code c’est agile!
• Le manifeste agile (extrait)
– Les individus et les interactions à l’opposé des processus et
outils
– Logiciels qui fonctionnent à l’opposé de documentation
exhaustive
• Les principes agiles (extrait)
– Satisfaire le client est le plus important – livrer un logiciel qui
fonctionne bien, le plus tôt et le plus souvent possible
– L’avancement est mesuré d’abord à travers le logiciel qui
fonctionne
– Les équipes s’auto-organisent et les individus sont très motivés
– Les discussions face à face sont privilégiées pour la
communication
– Des rétrospectives et ajustements sont faits de façon régulière
La revue de code c’est Lean!
• Approche Lean
– améliorer la qualité et les délais
– réduire les coûts en tirant le meilleur parti des ressources
humaines et matérielles, et en évitant toute forme de gaspillage
• Principes (extrait)
– Éliminer les gaspillages (trop de fonctionnalités, travail
partiellement fait, réapprentissage, transmission de
l’information, commutation entre tâches, retards, défauts)
– Favoriser la connaissance
– Construire la qualité intrinsèque
– Livrer rapidement
– Respecter les personnes
– Optimiser le système dans son ensemble
La revue de code - conclusion
• Mettez-la en place tout de suite
• Favoriser la revue formelle
• Appuyez-vous sur des outils
Questions et réponses
Quelques références
• Mozilla
– http://www.mozilla.org/projects/firefox/review.html
– http://www-archive.mozilla.org/hacking/code-review-
faq.html
– http://www.mozilla.org/hacking/reviewers.html
• Atlassian
– http://www.atlassian.com/software/crucible/learn/coderevi
ewwhitepaper.pdf
• SmartBear
– http://smartbear.com/docs/BestPracticesForPeerCodeRevie
w.pdf
• http://LucianPrecup.com
– Livre blanc bientôt disponible

Contenu connexe

Tendances

Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...TelecomValley
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
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
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciellauraty3204
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)Cellenza
 
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
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeTelecomValley
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionSylvain Leroy
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logicielsSylvain Leroy
 
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
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineGeeks Anonymes
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Sylvain Leroy
 
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
 
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
 
Qu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéQu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéSylvain Leroy
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 

Tendances (20)

Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
Soirée du Test Logiciel - Intelligence Artificielle dans le test - J. VAN QUA...
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
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
 
4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel4-Cours de Géniel Logiciel
4-Cours de Géniel Logiciel
 
[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)[Agile Testing Day] Test Driven Development (TDD)
[Agile Testing Day] Test Driven Development (TDD)
 
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
 
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualifeSoirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
Soirée du Test Logiciel - Démystifier les xDD - C. TARDIEU, Acp qualife
 
Cleancode / Tocea / Introduction
Cleancode / Tocea / IntroductionCleancode / Tocea / Introduction
Cleancode / Tocea / Introduction
 
Industrialisation des développements logiciels
Industrialisation des développements logicielsIndustrialisation des développements logiciels
Industrialisation des développements logiciels
 
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
 
Futur tunis
Futur tunisFutur tunis
Futur tunis
 
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet CytomineLa qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
La qualité logicielle et l'intégration continue - Cas concret du projet Cytomine
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
Rappels Modularisation application C/C++
Rappels Modularisation application C/C++Rappels Modularisation application C/C++
Rappels Modularisation application C/C++
 
DevOps
DevOpsDevOps
DevOps
 
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
 
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
 
Qu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualitéQu'est ce qu'un logiciel de qualité
Qu'est ce qu'un logiciel de qualité
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 

Similaire à La revue de code : agile, lean, indispensable !

qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015Julien Vq
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOpsMicrosoft
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement MicrosoftChristophe HERAL
 
Agile Data Warehousing - 7 pillars - Procima Experts
Agile Data Warehousing - 7 pillars - Procima ExpertsAgile Data Warehousing - 7 pillars - Procima Experts
Agile Data Warehousing - 7 pillars - Procima ExpertsMarc-Eric LaRocque
 
Pas d'agilité sans qualité
Pas d'agilité sans qualitéPas d'agilité sans qualité
Pas d'agilité sans qualitéAgile Montréal
 
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
 
Agilite togo jug_final
Agilite togo jug_finalAgilite togo jug_final
Agilite togo jug_finalagnes_crepet
 
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelHa zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelAgile Montréal
 
Présentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxPrésentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxZALIMAZA
 
Vincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret
 
Présentation DEVOPS_CONSOLE.pptx
Présentation DEVOPS_CONSOLE.pptxPrésentation DEVOPS_CONSOLE.pptx
Présentation DEVOPS_CONSOLE.pptxZALIMAZA
 
Présentation DEVOPS_hyper.pptx
Présentation DEVOPS_hyper.pptxPrésentation DEVOPS_hyper.pptx
Présentation DEVOPS_hyper.pptxZALIMAZA
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptxboulonvert
 
Présentation DEVOPS_Kola.pptx
Présentation DEVOPS_Kola.pptxPrésentation DEVOPS_Kola.pptx
Présentation DEVOPS_Kola.pptxssuserf298861
 
De la livraison continue dans mon organisation?
De la livraison continue dans mon organisation?De la livraison continue dans mon organisation?
De la livraison continue dans mon organisation?Goood!
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agilelaurent bristiel
 
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxPrésentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxZALIMAZA
 

Similaire à La revue de code : agile, lean, indispensable ! (20)

Lunch learn 5 sep2013
Lunch learn 5 sep2013Lunch learn 5 sep2013
Lunch learn 5 sep2013
 
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
qualimétrie logiciel -  Entreprise Software Analytic - nov 2015qualimétrie logiciel -  Entreprise Software Analytic - nov 2015
qualimétrie logiciel - Entreprise Software Analytic - nov 2015
 
Introduction à DevOps
Introduction à DevOpsIntroduction à DevOps
Introduction à DevOps
 
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
[Scrum Day 2011] Outillage Agile dans un environnement Microsoft
 
Agile Data Warehousing - 7 pillars - Procima Experts
Agile Data Warehousing - 7 pillars - Procima ExpertsAgile Data Warehousing - 7 pillars - Procima Experts
Agile Data Warehousing - 7 pillars - Procima Experts
 
Pas d'agilité sans qualité
Pas d'agilité sans qualitéPas d'agilité sans qualité
Pas d'agilité sans qualité
 
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
 
Symposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec MicrosoftSymposium TFS - DevOps avec Microsoft
Symposium TFS - DevOps avec Microsoft
 
Agilite togo jug_final
Agilite togo jug_finalAgilite togo jug_final
Agilite togo jug_final
 
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie TrudelHa zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
Ha zut, le DevOps a mangé ma vélocité par Jean-Marc Lavoie & Sylvie Trudel
 
Présentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptxPrésentation DEVOPS_DIR.pptx
Présentation DEVOPS_DIR.pptx
 
Vincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops SherbrookeVincent Biret Societic devops Sherbrooke
Vincent Biret Societic devops Sherbrooke
 
Présentation DEVOPS_CONSOLE.pptx
Présentation DEVOPS_CONSOLE.pptxPrésentation DEVOPS_CONSOLE.pptx
Présentation DEVOPS_CONSOLE.pptx
 
Présentation DEVOPS_hyper.pptx
Présentation DEVOPS_hyper.pptxPrésentation DEVOPS_hyper.pptx
Présentation DEVOPS_hyper.pptx
 
Présentation DEVOPS.pptx
Présentation DEVOPS.pptxPrésentation DEVOPS.pptx
Présentation DEVOPS.pptx
 
Présentation DEVOPS_Kola.pptx
Présentation DEVOPS_Kola.pptxPrésentation DEVOPS_Kola.pptx
Présentation DEVOPS_Kola.pptx
 
De la livraison continue dans mon organisation?
De la livraison continue dans mon organisation?De la livraison continue dans mon organisation?
De la livraison continue dans mon organisation?
 
Développement en méthode agile
Développement en méthode agileDéveloppement en méthode agile
Développement en méthode agile
 
Présentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptxPrésentation DEVOPS_PO.pptx
Présentation DEVOPS_PO.pptx
 

Plus de Lucian Precup

Enrich data and rewrite queries with the Elasticsearch percolator
Enrich data and rewrite queries with the Elasticsearch percolatorEnrich data and rewrite queries with the Elasticsearch percolator
Enrich data and rewrite queries with the Elasticsearch percolatorLucian Precup
 
Joins in a distributed world Distributed Matters Barcelona 2015
Joins in a distributed world Distributed Matters Barcelona 2015Joins in a distributed world Distributed Matters Barcelona 2015
Joins in a distributed world Distributed Matters Barcelona 2015Lucian Precup
 
Search and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneSearch and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneLucian Precup
 
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014Lucian Precup
 
Back to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
Back to the future : SQL 92 for Elasticsearch @nosqlmatters ParisBack to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
Back to the future : SQL 92 for Elasticsearch @nosqlmatters ParisLucian Precup
 
Search, nosql et bigdata avec les moteurs de recherche
Search, nosql et bigdata avec les moteurs de rechercheSearch, nosql et bigdata avec les moteurs de recherche
Search, nosql et bigdata avec les moteurs de rechercheLucian Precup
 
ALM et Agilite : la convergence
ALM et Agilite : la convergenceALM et Agilite : la convergence
ALM et Agilite : la convergenceLucian Precup
 
Moteurs de recherche et Lucene at LorraineJUG
Moteurs de recherche et Lucene at LorraineJUGMoteurs de recherche et Lucene at LorraineJUG
Moteurs de recherche et Lucene at LorraineJUGLucian Precup
 
Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)Lucian Precup
 

Plus de Lucian Precup (9)

Enrich data and rewrite queries with the Elasticsearch percolator
Enrich data and rewrite queries with the Elasticsearch percolatorEnrich data and rewrite queries with the Elasticsearch percolator
Enrich data and rewrite queries with the Elasticsearch percolator
 
Joins in a distributed world Distributed Matters Barcelona 2015
Joins in a distributed world Distributed Matters Barcelona 2015Joins in a distributed world Distributed Matters Barcelona 2015
Joins in a distributed world Distributed Matters Barcelona 2015
 
Search and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters CologneSearch and nosql for information management @nosqlmatters Cologne
Search and nosql for information management @nosqlmatters Cologne
 
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
Back to the future : SQL 92 for Elasticsearch ? @nosqlmatters Dublin 2014
 
Back to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
Back to the future : SQL 92 for Elasticsearch @nosqlmatters ParisBack to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
Back to the future : SQL 92 for Elasticsearch @nosqlmatters Paris
 
Search, nosql et bigdata avec les moteurs de recherche
Search, nosql et bigdata avec les moteurs de rechercheSearch, nosql et bigdata avec les moteurs de recherche
Search, nosql et bigdata avec les moteurs de recherche
 
ALM et Agilite : la convergence
ALM et Agilite : la convergenceALM et Agilite : la convergence
ALM et Agilite : la convergence
 
Moteurs de recherche et Lucene at LorraineJUG
Moteurs de recherche et Lucene at LorraineJUGMoteurs de recherche et Lucene at LorraineJUG
Moteurs de recherche et Lucene at LorraineJUG
 
Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)Solr and Elasticsearch in Action (at Breizhcamp)
Solr and Elasticsearch in Action (at Breizhcamp)
 

La revue de code : agile, lean, indispensable !

  • 1. La revue de code : c’est Agile, c’est Lean, c’est Indispensable ! Lucian Precup conf.agile-france.org 2010-05-31
  • 2. Lucian Precup • Développeur, architecte, chef de projets et responsable des développements (Java EE, ETL, BI) • Consultant en industrialisation des développements (outils ALM, méthodes de développement, organisation)
  • 3. Objectif de la présentation • Mise en place de la revue de code … • Formelle … et • Assistée par les outils …
  • 4. Qu’est-ce la revue de code? • Inspection systématique du code source • Buts: – Trouver et corriger des erreurs – Améliorer la qualité du logiciel – Améliorer les compétences des développeurs • Types de revue de code – Formelle ou informelle, pré ou post commit – « Over-the-shoulder », par e-mail – « Pair-programming »
  • 5. Avantages • Trouver des bugs • Promouvoir l’apprentissage • Former • Promouvoir le partage • Rendre le code plus maintenable • Trouver des meilleures solutions techniques
  • 6. La revue du code augmente la durée des développements C’est n’est qu’une impression. Regardez la suite.
  • 7. Développement Test Bugfix (et dév) Bugfix Chez le clientEn interne Dév (et bugfix) Test Bugfix BugfixRevue Trouver/corriger bugs en QA 200 x 200€ Trouver/corriger bugs chez le client 100 x 2000€ Développement 100xxx € Trouver/corriger bugs à la revue 135 x 60€ Trouver/corriger bugs en QA 110 x 200€ Trouver/corriger bugs chez le client 55 x 2000€ Développement 90xxx € La revue de code et le cout des développements
  • 8. Nos développeurs sont très bons, ils n’ont pas besoin de revue de code La revue de code c’est la meilleure veille technologique qui puisse exister
  • 9. Les Tech Leads n’ont pas besoin de revue de code Il ne faut pas oublier le partage et la formation. Et puis, personne n’est à l’abri des bugs 
  • 10. Il n’y a personne dans l’équipe qui puisse examiner mon code car je suis le seul à connaître Delphi Le regard d’un développeur Java sur un code Delphi peut donner des idées
  • 11. Mais qui implémente la revue de code? Tous les grands éditeurs de logiciels ainsi que beaucoup de projets open source
  • 12. Le monde Open Source SCM CI RM Review Refactoring Modifications Super Review patch patch checkin checkin
  • 13. Processus de mozilla.org • Revue obligatoire pour pouvoir commiter • Intégration du processus dans Bugzilla • Listes d’examinateurs « accrédités » par area et sous-module • « Super-review » nécessaire dans certains cas avec une « Super-Review Policy » bien définie • « Ui-review » pour IHM et User Experience
  • 14. Implémentations et témoignages • INRIA Transfert et Medience – Implémentation avec Aegis – Très bonne qualité malgré le turn-over de l’équipe • Business Objects – « Les développements de l’équipe Data Federator étaient plus longs mais, en revanche, ils se stabilisaient très rapidement et les délais de livraisons étaient très prévisibles »
  • 15. Autres témoignages • Grand éditeur de logiciel – Équipe de huit personnes (France et Etats Unis) – Très productive grâce à la revue asynchrone pendant la « nuit » • Equipe de moteur de recherche d’un grand site d’e-commerce – La revue de code a réussi à optimiser la mise en recette – Très bon retour des développeurs
  • 16. Peut-on automatiser la revue? Des outils trouvent des bugs et peuvent nous apprendre beaucoup. Mais il ne faut pas oublier le partage de la connaissance
  • 17. Revue automatisée? • Analyse de la qualité du code • Scripts pour vérification des normes internes. Ex: – Suffisamment de tests unitaires – Respect des règles d’architecture d’entreprise • Tests automatiques Hudson FindBugs Sonar
  • 18. Donc les tests, les outils d’analyse, l’intégration continue ne remplacent pas la revue de code? Il faut tous les avoir et ils se complètent
  • 19. La revue de code comparée à ... • Un bon département QA – le coût d’un département QA est plus important; plus on trouve le bug tard plus il coûte cher • Des outils automatiques – la revue de code ne trouve pas que des bugs; il y a aussi l’apprentissage, le partage, la maintenance • L’intégration continue – Même si les problèmes sont détectés très tôt, la revue de code permet de les trouver encore plus tôt
  • 20. Et le « pair programming » ? Bonne remarque !
  • 21. Quid du Pair Programming ? • Revue de code en continu • Très efficace pour trouver des bugs et pour favoriser la connaissance Mais • L’examinateur – très impliqué dans le code • Trop coûteux à implémenter • Présence physique au même endroit
  • 22. Les outils qui m’aident à bien implémenter la revue coûtent cher Pas forcément
  • 23. Outils et intégration • Code Collaborator de SmartBear – Intégration avec les gestionnaires de code source et avec les gestionnaires des anomalies • Atlassian Crucible – Intégration avec JIRA et les autres outils Atlassian • Eclipse + Bugzilla + Mylyn + patch (CVS, SVN) – Intégration avec l’IDE, possibilité de faire plus que juste regarder le code
  • 24. Exemple d’implémentation avec Bugzilla, Mylyn, Eclipse et CVS Revue Upload patch Review passed => Checkin« Self-review » Création du patch Download patch
  • 25. Mise en œuvre • Taille des projets? • Par qui, comment? • Avant l’intégration ou après? • Regarder juste le code ou faire plus? • Quel type de revue de code est le mieux adapté à ma situation?
  • 26. Et l’agilité dans tout ça ? La revue de code fait partie d’une démarche agile, lean et industrielle
  • 27. La revue de code c’est agile! • Le manifeste agile (extrait) – Les individus et les interactions à l’opposé des processus et outils – Logiciels qui fonctionnent à l’opposé de documentation exhaustive • Les principes agiles (extrait) – Satisfaire le client est le plus important – livrer un logiciel qui fonctionne bien, le plus tôt et le plus souvent possible – L’avancement est mesuré d’abord à travers le logiciel qui fonctionne – Les équipes s’auto-organisent et les individus sont très motivés – Les discussions face à face sont privilégiées pour la communication – Des rétrospectives et ajustements sont faits de façon régulière
  • 28. La revue de code c’est Lean! • Approche Lean – améliorer la qualité et les délais – réduire les coûts en tirant le meilleur parti des ressources humaines et matérielles, et en évitant toute forme de gaspillage • Principes (extrait) – Éliminer les gaspillages (trop de fonctionnalités, travail partiellement fait, réapprentissage, transmission de l’information, commutation entre tâches, retards, défauts) – Favoriser la connaissance – Construire la qualité intrinsèque – Livrer rapidement – Respecter les personnes – Optimiser le système dans son ensemble
  • 29. La revue de code - conclusion • Mettez-la en place tout de suite • Favoriser la revue formelle • Appuyez-vous sur des outils
  • 31. Quelques références • Mozilla – http://www.mozilla.org/projects/firefox/review.html – http://www-archive.mozilla.org/hacking/code-review- faq.html – http://www.mozilla.org/hacking/reviewers.html • Atlassian – http://www.atlassian.com/software/crucible/learn/coderevi ewwhitepaper.pdf • SmartBear – http://smartbear.com/docs/BestPracticesForPeerCodeRevie w.pdf • http://LucianPrecup.com – Livre blanc bientôt disponible