SlideShare ist ein Scribd-Unternehmen logo
1 von 37
Downloaden Sie, um offline zu lesen
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

Weitere ähnliche Inhalte

Andere mochten auch

Sigloxxpinturaexpresionismoabstractoamericano
SigloxxpinturaexpresionismoabstractoamericanoSigloxxpinturaexpresionismoabstractoamericano
SigloxxpinturaexpresionismoabstractoamericanoJOHN BONILLA
 
Observatorio de análisis de políticas públicas
Observatorio de análisis de políticas públicasObservatorio de análisis de políticas públicas
Observatorio de análisis de políticas públicasGobernabilidad
 
Présentation Icybee
Présentation IcybeePrésentation Icybee
Présentation Icybeeolvlvl
 
Bretons et fiers de l'etre 26 09 12
Bretons et fiers de l'etre 26 09 12Bretons et fiers de l'etre 26 09 12
Bretons et fiers de l'etre 26 09 12Gerard Houdinet
 
María victoria meca y rocío fernández
María victoria meca y rocío fernándezMaría victoria meca y rocío fernández
María victoria meca y rocío fernándezJOSÉ TOMÁS
 
Corporate Presentation January 2012 French
Corporate Presentation January 2012 FrenchCorporate Presentation January 2012 French
Corporate Presentation January 2012 FrenchQMX Gold Corporation
 
Avet pharma
Avet pharmaAvet pharma
Avet pharmamaryzuky
 
Cahier des charges_de_realisation_de_site_internet
Cahier des charges_de_realisation_de_site_internetCahier des charges_de_realisation_de_site_internet
Cahier des charges_de_realisation_de_site_internetKarim Ayari
 
Renovamos la Experiencia por nuestra APUSB
Renovamos la Experiencia por nuestra APUSBRenovamos la Experiencia por nuestra APUSB
Renovamos la Experiencia por nuestra APUSBFreddy Figueira
 
Atelier Hitachi Information forum 2012 - Le Conseil Général du Val de Marne d...
Atelier Hitachi Information forum 2012 - Le Conseil Général du Val de Marne d...Atelier Hitachi Information forum 2012 - Le Conseil Général du Val de Marne d...
Atelier Hitachi Information forum 2012 - Le Conseil Général du Val de Marne d...Hitachi Data Systems France
 
Presentation le snowboard style libre corrigé
Presentation le snowboard style libre corrigéPresentation le snowboard style libre corrigé
Presentation le snowboard style libre corrigéCatherine Parent
 
Conference TDWI BI Open Source - 2011 11 29
Conference TDWI BI Open Source - 2011 11 29Conference TDWI BI Open Source - 2011 11 29
Conference TDWI BI Open Source - 2011 11 29canadadri
 

Andere mochten auch (18)

Sigloxxpinturaexpresionismoabstractoamericano
SigloxxpinturaexpresionismoabstractoamericanoSigloxxpinturaexpresionismoabstractoamericano
Sigloxxpinturaexpresionismoabstractoamericano
 
Observatorio de análisis de políticas públicas
Observatorio de análisis de políticas públicasObservatorio de análisis de políticas públicas
Observatorio de análisis de políticas públicas
 
Présentation Icybee
Présentation IcybeePrésentation Icybee
Présentation Icybee
 
Bretons et fiers de l'etre 26 09 12
Bretons et fiers de l'etre 26 09 12Bretons et fiers de l'etre 26 09 12
Bretons et fiers de l'etre 26 09 12
 
María victoria meca y rocío fernández
María victoria meca y rocío fernándezMaría victoria meca y rocío fernández
María victoria meca y rocío fernández
 
My blee
My bleeMy blee
My blee
 
Nueva web
Nueva webNueva web
Nueva web
 
Corporate Presentation January 2012 French
Corporate Presentation January 2012 FrenchCorporate Presentation January 2012 French
Corporate Presentation January 2012 French
 
Avet pharma
Avet pharmaAvet pharma
Avet pharma
 
He apres que...
He apres que...He apres que...
He apres que...
 
Cahier des charges_de_realisation_de_site_internet
Cahier des charges_de_realisation_de_site_internetCahier des charges_de_realisation_de_site_internet
Cahier des charges_de_realisation_de_site_internet
 
Renovamos la Experiencia por nuestra APUSB
Renovamos la Experiencia por nuestra APUSBRenovamos la Experiencia por nuestra APUSB
Renovamos la Experiencia por nuestra APUSB
 
Menu x
Menu  xMenu  x
Menu x
 
Atelier Hitachi Information forum 2012 - Le Conseil Général du Val de Marne d...
Atelier Hitachi Information forum 2012 - Le Conseil Général du Val de Marne d...Atelier Hitachi Information forum 2012 - Le Conseil Général du Val de Marne d...
Atelier Hitachi Information forum 2012 - Le Conseil Général du Val de Marne d...
 
Presentation le snowboard style libre corrigé
Presentation le snowboard style libre corrigéPresentation le snowboard style libre corrigé
Presentation le snowboard style libre corrigé
 
Conference TDWI BI Open Source - 2011 11 29
Conference TDWI BI Open Source - 2011 11 29Conference TDWI BI Open Source - 2011 11 29
Conference TDWI BI Open Source - 2011 11 29
 
Un defaut dans la femme
Un defaut dans la femmeUn defaut dans la femme
Un defaut dans la femme
 
CóMo Crear Un Blogger
CóMo Crear Un BloggerCóMo Crear Un Blogger
CóMo Crear Un Blogger
 

Ähnlich wie Maintenir du code historique , par Jean Marc Fontaine

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 2011Jean-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 FontaineALTER WAY
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 
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 2011Henri 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 SearchRobert 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 2011Henri Gomez
 
PHPotes: Codeigniter
PHPotes: CodeigniterPHPotes: Codeigniter
PHPotes: CodeigniterAnDaolVras
 
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 2011Henri 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 2015Sebastien Gioria
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Jean-Marc Fontaine
 

Ähnlich wie Maintenir du code historique , par Jean Marc Fontaine (12)

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
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 

Mehr von ALTER WAY

Drupagora 2019 : Drupal, accessibilité et RGAA
Drupagora 2019 : Drupal, accessibilité et RGAADrupagora 2019 : Drupal, accessibilité et RGAA
Drupagora 2019 : Drupal, accessibilité et RGAAALTER WAY
 
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...ALTER WAY
 
Flyer promotions Alter Way Formation Avril Mai 2015
Flyer promotions Alter Way Formation Avril Mai 2015Flyer promotions Alter Way Formation Avril Mai 2015
Flyer promotions Alter Way Formation Avril Mai 2015ALTER WAY
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ? Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ? ALTER WAY
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?ALTER WAY
 
Open World Forum 2014 : From ES6 to Javascript 2.0. What use today ? par Jon...
Open World Forum 2014  : From ES6 to Javascript 2.0. What use today ? par Jon...Open World Forum 2014  : From ES6 to Javascript 2.0. What use today ? par Jon...
Open World Forum 2014 : From ES6 to Javascript 2.0. What use today ? par Jon...ALTER WAY
 
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent ALTER WAY
 
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014ALTER WAY
 
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch ALTER WAY
 
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSASolutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSAALTER WAY
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...ALTER WAY
 
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF ALTER WAY
 
Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014ALTER WAY
 
Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014ALTER WAY
 
Présentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysPrésentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysALTER WAY
 
OpenStack havana tour d'horizon
OpenStack havana tour d'horizonOpenStack havana tour d'horizon
OpenStack havana tour d'horizonALTER WAY
 
H2O, le Cloud par Alter Way
H2O, le Cloud par Alter WayH2O, le Cloud par Alter Way
H2O, le Cloud par Alter WayALTER WAY
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php ALTER WAY
 
Reprise sur incident , par Jean Marc Fontaine
Reprise sur incident , par Jean Marc FontaineReprise sur incident , par Jean Marc Fontaine
Reprise sur incident , par Jean Marc FontaineALTER WAY
 
Objets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliObjets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliALTER WAY
 

Mehr von ALTER WAY (20)

Drupagora 2019 : Drupal, accessibilité et RGAA
Drupagora 2019 : Drupal, accessibilité et RGAADrupagora 2019 : Drupal, accessibilité et RGAA
Drupagora 2019 : Drupal, accessibilité et RGAA
 
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
#sharingLille : L'Open Source pour une société numérique ouverte, transparent...
 
Flyer promotions Alter Way Formation Avril Mai 2015
Flyer promotions Alter Way Formation Avril Mai 2015Flyer promotions Alter Way Formation Avril Mai 2015
Flyer promotions Alter Way Formation Avril Mai 2015
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ? Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?Alter Way's digitalks - Docker  : des conteneurs pour tout faire ?
Alter Way's digitalks - Docker : des conteneurs pour tout faire ?
 
Open World Forum 2014 : From ES6 to Javascript 2.0. What use today ? par Jon...
Open World Forum 2014  : From ES6 to Javascript 2.0. What use today ? par Jon...Open World Forum 2014  : From ES6 to Javascript 2.0. What use today ? par Jon...
Open World Forum 2014 : From ES6 to Javascript 2.0. What use today ? par Jon...
 
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
Open World Forum 2014 : Guerre des IAAS par Stéphane Vincent
 
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
Séminaire Big Data Alter Way - Elasticsearch - octobre 2014
 
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch Meetup Drupal Paris : Connexion Drupal et Elasticsearch
Meetup Drupal Paris : Connexion Drupal et Elasticsearch
 
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSASolutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
Solutions Linux 2014 – Alter Way : Révélations sur les pratiques de la NSA
 
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
Solutions Linux 2014 – Alter Way : Industrialisation des développements en Ja...
 
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
Solutions Linux 2014 - Alter Way : Évolutions des back offices des CMS/CMF
 
Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014Elasticsearch : petit déjeuner du 13 mars 2014
Elasticsearch : petit déjeuner du 13 mars 2014
 
Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014Alter way-wordcamp-paris-2014
Alter way-wordcamp-paris-2014
 
Présentation Drupal - Global Training Days
Présentation Drupal - Global Training DaysPrésentation Drupal - Global Training Days
Présentation Drupal - Global Training Days
 
OpenStack havana tour d'horizon
OpenStack havana tour d'horizonOpenStack havana tour d'horizon
OpenStack havana tour d'horizon
 
H2O, le Cloud par Alter Way
H2O, le Cloud par Alter WayH2O, le Cloud par Alter Way
H2O, le Cloud par Alter Way
 
Industrialisez vos projets Php
Industrialisez vos projets Php Industrialisez vos projets Php
Industrialisez vos projets Php
 
Reprise sur incident , par Jean Marc Fontaine
Reprise sur incident , par Jean Marc FontaineReprise sur incident , par Jean Marc Fontaine
Reprise sur incident , par Jean Marc Fontaine
 
Objets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien PauliObjets patterns et genie logiciel , par Julien Pauli
Objets patterns et genie logiciel , par Julien Pauli
 

Maintenir du code historique , par Jean Marc Fontaine

  • 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