SlideShare une entreprise Scribd logo
Maintenir du code
   historique


     RMLL 2011
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 »
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
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
Se familiariser avec l'application
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
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
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
Lister les langages



»    SLOCCount




22/07/11         ALTER WAY – Maintenir du code historique
Cartographier le code



»    phploc




22/07/11      ALTER WAY – Maintenir du code historique
Générer la documentation de l'API



»    PHP Documentor
»    Doxygen




22/07/11              ALTER WAY – Maintenir du code historique
Cartographier la base de données



»    MySQL Workbench




22/07/11               ALTER WAY – Maintenir du code historique
Déterminer les pré-requis



»    Librairies tierces
»    Version et extensions de PHP avec PHP_CompatInfo




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




22/07/11                  ALTER WAY – Maintenir du code historique
Tests d'intégration

22/07/11
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
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
Outils



»    Selenium
»    Sikuli




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




22/07/11                   ALTER WAY – Maintenir du code historique
Tests unitaires

22/07/11
•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
Rendre le code testable



»    Injection de dépendance




22/07/11                 ALTER WAY – Maintenir du code historique
Couverture de code (1/3)



»    PHP_ChangeCoverage




22/07/11                  ALTER WAY – Maintenir du code historique
Couverture de code (2/3)



»    Sans prise en compte des changements




22/07/11                 ALTER WAY – Maintenir du code historique
Couverture de code (3/3)



»    Avec prise en compte des changements




22/07/11                 ALTER WAY – Maintenir du code historique
Modification du code

22/07/11
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
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
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
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
Factoriser le code dupliqué



»    php_cpd




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




22/07/11                       ALTER WAY – Maintenir du code historique
Procédural vers Orienté Objet (1/2)



»    Encapsuler l'ancien code




22/07/11                  ALTER WAY – Maintenir du code historique
Procédural vers Orienté Objet (2/2)




22/07/11   ALTER WAY – Maintenir du code historique
Déployer le nouveau code



»    Automatiser le processus
»    Déployer sur un serveur de test




22/07/11                  ALTER WAY – Maintenir du code historique
Surveiller le comportement



»    Mise en place de logs
»    Surveillance des logs !




22/07/11                       ALTER WAY – Maintenir du code historique
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

Contenu connexe

Tendances

Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
Emmanuel Hugonnet
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
Ippon
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
Fabien Potencier
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
Stéphane Traumat
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
Ippon
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
Ippon
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
Stéphane Liétard
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
laurent_opnworks
 
Industrialisation des développements Java
Industrialisation des développements JavaIndustrialisation des développements Java
Industrialisation des développements Java
Christian Blavier
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
Frédéric Sagez
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
Arnaud Héritier
 
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
Jean-Marc Fontaine
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Ippon
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
Arnaud Héritier
 
Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010
Jean-Marc Fontaine
 
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
Julien Jakubowski
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
Ippon
 
AFUP Forum PHP 2009 : Oui ! PHP est industriel !
AFUP Forum PHP 2009 : Oui ! PHP est industriel !AFUP Forum PHP 2009 : Oui ! PHP est industriel !
AFUP Forum PHP 2009 : Oui ! PHP est industriel !
PHPPRO
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
Microsoft
 

Tendances (20)

Usine logicielle à Orange Labs
Usine logicielle à Orange LabsUsine logicielle à Orange Labs
Usine logicielle à Orange Labs
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Seminaire Portail Open Source
Seminaire Portail Open SourceSeminaire Portail Open Source
Seminaire Portail Open Source
 
Présentation Rex GWT 2.0
Présentation Rex GWT 2.0Présentation Rex GWT 2.0
Présentation Rex GWT 2.0
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Intégration continue transco
Intégration continue transcoIntégration continue transco
Intégration continue transco
 
Industrialisation des développements Java
Industrialisation des développements JavaIndustrialisation des développements Java
Industrialisation des développements Java
 
Concept de l’Intégration Continue
Concept de l’Intégration ContinueConcept de l’Intégration Continue
Concept de l’Intégration Continue
 
20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven20080311 - Paris Vi Master STL TA - Initiation Maven
20080311 - Paris Vi Master STL TA - Initiation Maven
 
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
 
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et MobileNouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
Nouveau look pour une nouvelle vie : HTML5, Spring, NoSQL et Mobile
 
20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven20081113 - Nantes Jug - Apache Maven
20081113 - Nantes Jug - Apache Maven
 
Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010Revues de code - Forum PHP 2010
Revues de code - Forum PHP 2010
 
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
 
Les usines à logiciels
Les usines à logicielsLes usines à logiciels
Les usines à logiciels
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 
AFUP Forum PHP 2009 : Oui ! PHP est industriel !
AFUP Forum PHP 2009 : Oui ! PHP est industriel !AFUP Forum PHP 2009 : Oui ! PHP est industriel !
AFUP Forum PHP 2009 : Oui ! PHP est industriel !
 
Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5Les nouveautés du Framework .NET 4.5
Les nouveautés du Framework .NET 4.5
 

Similaire à Maintenir du code historique - 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
Jean-Marc Fontaine
 
Organiser efficacement son depot de code par Jean Marc Fontaine
Organiser efficacement son depot de code par Jean Marc FontaineOrganiser efficacement son depot de code par Jean Marc Fontaine
Organiser efficacement son depot de code par Jean Marc Fontaine
ALTER WAY
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
julien pauli
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
badrfathallah2
 
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
Henri Gomez
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend Search
Robert Viseur
 
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
Henri Gomez
 
PHPotes: Codeigniter
PHPotes: CodeigniterPHPotes: Codeigniter
PHPotes: Codeigniter
AnDaolVras
 
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
Henri Gomez
 
La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015
Sebastien Gioria
 

Similaire à Maintenir du code historique - RMLL 2011 (11)

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
 
Organiser efficacement son depot de code par Jean Marc Fontaine
Organiser efficacement son depot de code par Jean Marc FontaineOrganiser efficacement son depot de code par Jean Marc Fontaine
Organiser efficacement son depot de code par Jean Marc Fontaine
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Octo Maven.pdf
Octo Maven.pdfOcto Maven.pdf
Octo Maven.pdf
 
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
DevOps - Retour d’expérience - AlpesJug du 20 Septembre 2011
 
Développement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend SearchDéveloppement d'un moteur de recherche avec Zend Search
Développement d'un moteur de recherche avec Zend Search
 
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
DevOps - Retour d’expérience - RivieraDev du 20 Octobre 2011
 
PHPotes: Codeigniter
PHPotes: CodeigniterPHPotes: Codeigniter
PHPotes: Codeigniter
 
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
DevOps - Retour d'expérience - GenevaJug du 30 Aout 2011
 
La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015La Quete du code source fiable et sécurisé - GSDAYS 2015
La Quete du code source fiable et sécurisé - GSDAYS 2015
 
Splunk
SplunkSplunk
Splunk
 

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 2012
Jean-Marc Fontaine
 
Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012
Jean-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 2012
Jean-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 2012
Jean-Marc Fontaine
 
Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011Reprise sur incident - RMLL 2011
Reprise sur incident - RMLL 2011
Jean-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
 
PHP : Etat des lieux
PHP : Etat des lieuxPHP : Etat des lieux
PHP : Etat des lieux
Jean-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 6
Jean-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 FirePHP
Jean-Marc Fontaine
 
Utilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHPUtilisation optimale et professionnelle de PHP
Utilisation optimale et professionnelle de PHP
Jean-Marc Fontaine
 

Plus de Jean-Marc Fontaine (10)

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
 
Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 2012Revue de code - PHP Tour Nantes 2012
Revue de code - PHP Tour Nantes 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
 
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 - RMLL 2011
Reprise sur incident - RMLL 2011Reprise sur incident - RMLL 2011
Reprise sur incident - 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 ?
 
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
 

Maintenir du code historique - RMLL 2011

  • 1. Maintenir du code historique RMLL 2011
  • 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
  • 5. Se familiariser avec l'application
  • 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
  • 9. Lister les langages » SLOCCount 22/07/11 ALTER WAY – Maintenir du code historique
  • 10. Cartographier le code » phploc 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
  • 34. Procédural vers Orienté Objet (2/2) 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

Notes de l'éditeur

  1. Pas besoin d'argumenter : un dépôt de code est indispensable à partir d'un seul développeur