Download - Maintenir du code historique - RMLL 2011
![Page 1: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/1.jpg)
RMLL 2011
Maintenir du code historique
![Page 2: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/2.jpg)
Qui suis-je ?
» Jean-Marc Fontaine
» Consultant pour Alter Way Consulting
» Président de l'AFUP
» Formateur / Professeur vacataire à l'université de Saint Quentin
» Auteur du blog Industrialisation-PHP.com
» Co-auteur du livre blanc « Industrialisation PHP »
![Page 3: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/3.jpg)
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
![Page 4: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/4.jpg)
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
![Page 5: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/5.jpg)
Se familiariser avec l'applicationSe familiariser avec l'application
![Page 6: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/6.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Utiliser l'application
» Échanger avec les gens du métier
» Les regarder manipuler l'application
» La manipuler soi-même
» Regarder les logs
![Page 7: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/7.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
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.
![Page 8: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/8.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Soyez prudent
» Les documents sont obsolètes
» Les documents sont erronés
» Les documents ne sont pas exhaustifs
![Page 9: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/9.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Lister les langages
» SLOCCount
![Page 10: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/10.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Cartographier le code
» phploc
![Page 11: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/11.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Générer la documentation de l'API
» PHP Documentor
» Doxygen
![Page 12: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/12.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Cartographier la base de données
» MySQL Workbench
![Page 13: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/13.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Déterminer les pré-requis
» Librairies tierces
» Version et extensions de PHP avec PHP_CompatInfo
![Page 14: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/14.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Créer de la documentation
» Documenter au fur et à mesure
» Ne pas repartir des documentations existantes
![Page 15: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/15.jpg)
22/07/11
Tests d'intégrationTests d'intégration
![Page 16: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/16.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Filet de sécurité
» Encadre le comportement actuel
» Permet de repérer facilement les modifications de comportement
![Page 17: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/17.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Efficacité
» Facile à mettre en œuvre sans connaître les détails internes
» Couvre plusieurs couches techniques
![Page 18: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/18.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Outils
» Selenium
» Sikuli
![Page 19: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/19.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Intégration continue
» Placer ces tests dans une intégration continue (Jenkins, PHPUnderControl)
» Début de l'usine de développement
![Page 20: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/20.jpg)
22/07/11
Tests unitairesTests unitaires
![Page 21: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/21.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
•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é
![Page 22: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/22.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Rendre le code testable
» Injection de dépendance
![Page 23: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/23.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Couverture de code (1/3)
» PHP_ChangeCoverage
![Page 24: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/24.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Couverture de code (2/3)
» Sans prise en compte des changements
![Page 25: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/25.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Couverture de code (3/3)
» Avec prise en compte des changements
![Page 26: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/26.jpg)
22/07/11
Modification du codeModification du code
![Page 27: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/27.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
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 deux
![Page 28: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/28.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Procéder avec précaution
» Une petite modification peut avoir beaucoup d'effet
» Procéder par petites touches
» Faire des commits fréquents et atomiques
![Page 29: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/29.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Standard de codage
» En choisir un (PEAR, Zend Framework, Symfony) et s'y tenir
» Corriger uniquement le code touché par les modifications
» Vérifier avec PHP_CodeSniffer
![Page 30: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/30.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
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_dcd
![Page 31: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/31.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Factoriser le code dupliqué
» php_cpd
![Page 32: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/32.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Code mélangé vers procédural
» Séparer les couches de l'application :– HTML– Javascript, CSS– Manipulation des données (SQL, XML)– Code structurant
![Page 33: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/33.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Procédural vers Orienté Objet (1/2)
» Encapsuler l'ancien code
![Page 34: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/34.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Procédural vers Orienté Objet (2/2)
![Page 35: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/35.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Déployer le nouveau code
» Automatiser le processus
» Déployer sur un serveur de test
![Page 36: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/36.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Surveiller le comportement
» Mise en place de logs
» Surveillance des logs !
![Page 37: Maintenir du code historique - RMLL 2011](https://reader034.vdocuments.site/reader034/viewer/2022052412/558559b5d8b42a0a3a8b5368/html5/thumbnails/37.jpg)
22/07/11 ALTER WAY – Maintenir du code historique
Merci !
» Email : [email protected]
» Twitter : jmfontaine
» Blog : www.jmfontaine.net
» Autre blog : www.industrialisation-php.net