Maintenir du code historique , par Jean Marc Fontaine

933 views
849 views

Published on

Les bonnes pratiques de développement ont généralement pour pré-requis implicite d’avoir toute latitude sur le projet. Malheureusement, on hérite souvent d’un code historique plus ou moins bien conçu.

Faut-il simplement renoncer aux bonnes pratiques sous prétexte qu’on ne commence pas un projet de zéro ?

Nous verrons qu’en introduisant une bonne dose de pragmatisme, il est possible d’intégrer petit à petit des bonnes pratiques dans un code afin d’en faire progresser la qualité par étapes.

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

No Downloads
Views
Total views
933
On SlideShare
0
From Embeds
0
Number of Embeds
10
Actions
Shares
0
Downloads
6
Comments
0
Likes
1
Embeds 0
No embeds

No notes for slide

Maintenir du code historique , par Jean Marc Fontaine

  1. 1. Maintenir du code historique RMLL 2011
  2. 2. Qui suis-je ?» Jean-Marc Fontaine» Consultant pour Alter Way Consulting» Président de lAFUP» Formateur / Professeur vacataire à luniversité de Saint Quentin» Auteur du blog Industrialisation-PHP.com» Co-auteur du livre blanc « Industrialisation PHP »
  3. 3. Le problème» Application existe depuis longtemps» Application fonctionne (à peu près)» La connaissance est diffuse voire inexistante» Les évolutions prennent du temps» Chaque modification est très dangereuse
  4. 4. Bien démarrer» Ne pas se sentir noyé» Être pragmatique et non idéaliste» Privilégier le retour sur investissement» Utiliser les outils avec un certain recul
  5. 5. Se familiariser avec lapplication
  6. 6. Utiliser lapplication» Échanger avec les gens du métier» Les regarder manipuler lapplication» La manipuler soi-même» Regarder les logs22/07/11 ALTER WAY – Maintenir du code historique
  7. 7. Etudier tous les documents disponibles» Documentations (fonctionnelle, technique, architecture)» Schémas (architecture, base de données)» Procédures de déploiement» Cahier de recette» Comptes-rendus de réunions» Emails» Gestionnaire de tickets» Outil de planification» Historique du gestionnaire de code» Etc.22/07/11 ALTER WAY – Maintenir du code historique
  8. 8. Soyez prudent» Les documents sont obsolètes» Les documents sont erronés» Les documents ne sont pas exhaustifs22/07/11 ALTER WAY – Maintenir du code historique
  9. 9. Lister les langages» SLOCCount22/07/11 ALTER WAY – Maintenir du code historique
  10. 10. Cartographier le code» phploc22/07/11 ALTER WAY – Maintenir du code historique
  11. 11. Générer la documentation de lAPI» PHP Documentor» Doxygen22/07/11 ALTER WAY – Maintenir du code historique
  12. 12. Cartographier la base de données» MySQL Workbench22/07/11 ALTER WAY – Maintenir du code historique
  13. 13. Déterminer les pré-requis» Librairies tierces» Version et extensions de PHP avec PHP_CompatInfo22/07/11 ALTER WAY – Maintenir du code historique
  14. 14. Créer de la documentation» Documenter au fur et à mesure» Ne pas repartir des documentations existantes22/07/11 ALTER WAY – Maintenir du code historique
  15. 15. Tests dintégration22/07/11
  16. 16. Filet de sécurité» Encadre le comportement actuel» Permet de repérer facilement les modifications de comportement22/07/11 ALTER WAY – Maintenir du code historique
  17. 17. Efficacité» Facile à mettre en œuvre sans connaître les détails internes» Couvre plusieurs couches techniques22/07/11 ALTER WAY – Maintenir du code historique
  18. 18. Outils» Selenium» Sikuli22/07/11 ALTER WAY – Maintenir du code historique
  19. 19. Intégration continue» Placer ces tests dans une intégration continue (Jenkins, PHPUnderControl)» Début de lusine de développement22/07/11 ALTER WAY – Maintenir du code historique
  20. 20. Tests unitaires22/07/11
  21. 21. •3 approches possibles» Écrire des tests unitaires pour tout le code» Écrire des tests pour le nouveau code uniquement» Écrire des tests pour le nouveau code et le vieux code lié22/07/11 ALTER WAY – Maintenir du code historique
  22. 22. Rendre le code testable» Injection de dépendance22/07/11 ALTER WAY – Maintenir du code historique
  23. 23. Couverture de code (1/3)» PHP_ChangeCoverage22/07/11 ALTER WAY – Maintenir du code historique
  24. 24. Couverture de code (2/3)» Sans prise en compte des changements22/07/11 ALTER WAY – Maintenir du code historique
  25. 25. Couverture de code (3/3)» Avec prise en compte des changements22/07/11 ALTER WAY – Maintenir du code historique
  26. 26. Modification du code22/07/11
  27. 27. Refactorisation / réécriture» Refactorisation : Modification du code source sans modifier le comportement – Les tests unitaires continuent de passer» Réécriture : Modification du code source qui change son comportement – Les tests unitaires doivent être adaptés» Ne jamais mélanger les deux22/07/11 ALTER WAY – Maintenir du code historique
  28. 28. Procéder avec précaution» Une petite modification peut avoir beaucoup deffet» Procéder par petites touches» Faire des commits fréquents et atomiques22/07/11 ALTER WAY – Maintenir du code historique
  29. 29. Standard de codage» En choisir un (PEAR, Zend Framework, Symfony) et sy tenir» Corriger uniquement le code touché par les modifications» Vérifier avec PHP_CodeSniffer22/07/11 ALTER WAY – Maintenir du code historique
  30. 30. Supprimer le code mort» Plusieurs types : – Jamais appelé – Impossible à appeler – Commenté» Apporte de la confusion» Reste dans le dépôt de code au cas où» php_dcd22/07/11 ALTER WAY – Maintenir du code historique
  31. 31. Factoriser le code dupliqué» php_cpd22/07/11 ALTER WAY – Maintenir du code historique
  32. 32. Code mélangé vers procédural» Séparer les couches de lapplication : – HTML – Javascript, CSS – Manipulation des données (SQL, XML) – Code structurant22/07/11 ALTER WAY – Maintenir du code historique
  33. 33. Procédural vers Orienté Objet (1/2)» Encapsuler lancien code22/07/11 ALTER WAY – Maintenir du code historique
  34. 34. Procédural vers Orienté Objet (2/2)22/07/11 ALTER WAY – Maintenir du code historique
  35. 35. Déployer le nouveau code» Automatiser le processus» Déployer sur un serveur de test22/07/11 ALTER WAY – Maintenir du code historique
  36. 36. Surveiller le comportement» Mise en place de logs» Surveillance des logs !22/07/11 ALTER WAY – Maintenir du code historique
  37. 37. Merci !» Email : jm@jmfontaine.net» Twitter : jmfontaine» Blog : www.jmfontaine.net» Autre blog : www.industrialisation-php.net22/07/11 ALTER WAY – Maintenir du code historique

×