2. 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 »
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. 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
6. Utiliser l'application
» Échanger avec les gens du métier
» Les regarder manipuler l'application
» La manipuler soi-même
» Regarder les logs
22/07/11 ALTER WAY – Maintenir du code historique
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. Soyez prudent
» Les documents sont obsolètes
» Les documents sont erronés
» Les documents ne sont pas exhaustifs
22/07/11 ALTER WAY – Maintenir du code historique
11. Générer la documentation de l'API
» PHP Documentor
» Doxygen
22/07/11 ALTER WAY – Maintenir du code historique
12. Cartographier la base de données
» MySQL Workbench
22/07/11 ALTER WAY – Maintenir du code historique
13. Déterminer les pré-requis
» Librairies tierces
» Version et extensions de PHP avec PHP_CompatInfo
22/07/11 ALTER WAY – Maintenir du code historique
14. Créer de la documentation
» Documenter au fur et à mesure
» Ne pas repartir des documentations existantes
22/07/11 ALTER WAY – Maintenir du code historique
16. Filet de sécurité
» Encadre le comportement actuel
» Permet de repérer facilement les modifications de comportement
22/07/11 ALTER WAY – Maintenir du code historique
17. Efficacité
» Facile à mettre en œuvre sans connaître les détails internes
» Couvre plusieurs couches techniques
22/07/11 ALTER WAY – Maintenir du code historique
18. Outils
» Selenium
» Sikuli
22/07/11 ALTER WAY – Maintenir du code historique
19. Intégration continue
» Placer ces tests dans une intégration continue (Jenkins,
PHPUnderControl)
» Début de l'usine de développement
22/07/11 ALTER WAY – Maintenir du code historique
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. Rendre le code testable
» Injection de dépendance
22/07/11 ALTER WAY – Maintenir du code historique
23. Couverture de code (1/3)
» PHP_ChangeCoverage
22/07/11 ALTER WAY – Maintenir du code historique
24. Couverture de code (2/3)
» Sans prise en compte des changements
22/07/11 ALTER WAY – Maintenir du code historique
25. Couverture de code (3/3)
» Avec prise en compte des changements
22/07/11 ALTER WAY – Maintenir du code historique
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 deux
22/07/11 ALTER WAY – Maintenir du code historique
28. 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
22/07/11 ALTER WAY – Maintenir du code historique
29. 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
22/07/11 ALTER WAY – Maintenir du code historique
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_dcd
22/07/11 ALTER WAY – Maintenir du code historique
31. Factoriser le code dupliqué
» php_cpd
22/07/11 ALTER WAY – Maintenir du code historique
32. Code mélangé vers procédural
» Séparer les couches de l'application :
– HTML
– Javascript, CSS
– Manipulation des données (SQL, XML)
– Code structurant
22/07/11 ALTER WAY – Maintenir du code historique
33. Procédural vers Orienté Objet (1/2)
» Encapsuler l'ancien code
22/07/11 ALTER WAY – Maintenir du code historique
35. Déployer le nouveau code
» Automatiser le processus
» Déployer sur un serveur de test
22/07/11 ALTER WAY – Maintenir du code historique
36. Surveiller le comportement
» Mise en place de logs
» Surveillance des logs !
22/07/11 ALTER WAY – Maintenir du code historique
37. Merci !
» Email : jm@jmfontaine.net
» Twitter : jmfontaine
» Blog : www.jmfontaine.net
» Autre blog : www.industrialisation-php.net
22/07/11 ALTER WAY – Maintenir du code historique
Hinweis der Redaktion
Pas besoin d'argumenter : un dépôt de code est indispensable à partir d'un seul développeur