Industrialisation en PHP
         UTT, Troyes, France, 20 mai 2010

vendredi 28 mai 2010
Agenda


               Maîtriser les cycles de développements
               Accélérer le développement PHP
               Connaître et utiliser les outils et méthodes




vendredi 28 mai 2010
Qui parle?
                Damien Seguy
                Services expert en Open Source
                Sécurité, performances,
                industrialisation
                Eleveurs d’elePHPants
                damien.seguy@alterway.fr




vendredi 28 mai 2010
vendredi 28 mai 2010
Yes, we take
         questions


vendredi 28 mai 2010
vendredi 28 mai 2010
PHP romantique




vendredi 28 mai 2010
PHP aujourd’hui

vendredi 28 mai 2010
Sur le terrain
               65 portails à refaire en 6 mois
               6 personnes pour mettre à niveau 350 intranets
               120 événements par an, sur 150 serveurs
               Une application sur une ville : 12 villes pour Noel,
               2 pays l’an prochain.
               Un employé à temps plein pour le déploiement
               Multiplier les commandes par 6 en 2 mois


vendredi 28 mai 2010
Trois mantra




vendredi 28 mai 2010
Trois mantra


               Libérez-vous du code




vendredi 28 mai 2010
Trois mantra


               Libérez-vous du code
               Capitalisez



vendredi 28 mai 2010
Trois mantra


               Libérez-vous du code
               Capitalisez
               Impliquez vos utilisateurs

vendredi 28 mai 2010
∆ Convention
                        ∆ IDE        ∆ Conception
                        ∆ Framework ∆ Déploiement
                                     ∆ VCS     Capitalisation
                       Code
                                             ∆ Tests unitaires
                                 ∆ CI
                               ∆ Docs         ∆ Bug
                             ∆ Méthodes      Tracking

                                 ∆ Tests fonctionnels
                                     Implication



vendredi 28 mai 2010
Libérez-vous
         du code



vendredi 28 mai 2010
Libérez vous du code

               Le facteur bus
                       Ne soyez pas le seul
               Le facteur WTF
                       Écrivez du code qui peut être compris
               50% du temps consacré à la production
                       Ne vous mettez pas en travers du chemin


vendredi 28 mai 2010
Libérez vous du code


               S’arranger pour que l’on puisse travailler sans vous
               Ne vous investissez pas dans votre code
               Rendez votre code accessible aux autres




vendredi 28 mai 2010
Conventions de code




vendredi 28 mai 2010
Conventions de code
               Il en existe de nombreuses
                       PEAR, Zend Frameworks, Symfony...
               Choisissez en une
                       Évitez de créer la votre
               Cela apporte de l’unité au travail en équipe
               Pour vérifier son application
                       Code_sniffer


vendredi 28 mai 2010
IDE


               Choisissez celui qui vous convient le mieux
                       Évitez les éditeurs trop simples
               Netbean / Symfony,
               Zend tools / Zend Framework
               Komodo / cakePHP



vendredi 28 mai 2010
IDE

               Il faut au moins
                       Navigateur de code, intégration avec un framework
                       Editeur, coloration syntaxique, support des
                       encodages
                       intégration avec les tests unitaires
                       interface avec VCS


vendredi 28 mai 2010
vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks




vendredi 28 mai 2010
Frameworks

               Choisissez en un
                       Pour accélérer le développement
                       Pour son coté agréable et pratique
               Il doit avoir
                       Des composants, des conventions, des tests
                       unitaires, des utilitaires de mise en place
                       Une communauté, des experts, des formations

vendredi 28 mai 2010
Au dela des frameworks


               Les frameworks sont généralistes et techniques
               Bâtissez votre propre bibliothèque métier
               Nous verrons bientôt des bibliothèques métier




vendredi 28 mai 2010
VCS

               Version Control System
                       Subversion, git, CVS, mercurial
               Résolution des conflits
               Permet le développement parallèle,
               le retour en arrière, les versions.
               Stocke et distribue le code



vendredi 28 mai 2010
vendredi 28 mai 2010
VCS                            Développement



                        Tests
                                                        Production
                       unitaires
                                           VCS




                             Suivi de             Intégration
                              bugs                 continue


                            Le code hors du VCS n’existe pas!
vendredi 28 mai 2010
Le coeur du développement




vendredi 28 mai 2010
∆ Convention
                        ∆ IDE        ∆ Conception
                        ∆ Framework ∆ Déploiement
                                     ∆ VCS     Capitalisation
                       Code
                                             ∆ Tests unitaires
                                 ∆ CI
                               ∆ Docs         ∆ Bug
                             ∆ Méthodes      Tracking

                                 ∆ Tests fonctionnels
                                     Implication



vendredi 28 mai 2010
Capitalisation




vendredi 28 mai 2010
Capitalisation


               Accumuler à toutes les phases du projet
               Capturer l’information au fil de l’eau
               Evitez les culs de sacs
                       Toujours se demander qui va l’utiliser?




vendredi 28 mai 2010
Tests
  unitaires



vendredi 28 mai 2010
Les tests aident à découpler

               Évite les régressions             Production
                                         Code
               Préviens votre rappel
               Affiche les progres
               Sert de manuel
               Aide aux communications
                                                Client



vendredi 28 mai 2010
Tests unitaires


               PHP Unit : standard de facto
               Simple Test, Lemon, Zend_Test, phpt




vendredi 28 mai 2010
Conception
               Description générale de l’application
               Documents très variés
               Diagrammes d’architecture
                       Visio, Omnigraffle, Dia
               Diagrammes UML
                       Diagrammes de classes, Cas d’utilisation
                       StarUML, ArgoUML, BOUML,


vendredi 28 mai 2010
Conception


               Captures d’écran : WireFraming
                       Axure, Basalmiq, pencil sketching
               Modèle de données
                       Power Architect, MySQL WorkBench




vendredi 28 mai 2010
Conception

               Ayez un inventaire
                       Classes, méthodes, constantes, $_SESSION,
                       inclusions, fichiers, dossiers,...
               Vérifiez l’utilisation réelle
               Prévoyez de faire des allers-retours avec la réalité
               La conception n’est pas la programmation



vendredi 28 mai 2010
Déploiement automatisé


               Phing, maven, ant, pear
               Nécessaire pour l’intégration continue
               L’aspect le plus souvent négligé du développement
               Obligatoire pour les grandes architectures




vendredi 28 mai 2010
∆ Convention
                        ∆ IDE        ∆ Conception
                        ∆ Framework ∆ Déploiement
                                     ∆ VCS     Capitalisation
                       Code
                                             ∆ Tests unitaires
                                 ∆ CI
                               ∆ Docs         ∆ Bug
                             ∆ Méthodes      Tracking

                                 ∆ Tests fonctionnels
                                     Implication



vendredi 28 mai 2010
Impliquer les
          utilisateurs



vendredi 28 mai 2010
Impliquer les utilisateurs

               Eviter l’effet tunnel
               Savoir affronter le tsunami des questions
                       bugs, changements, nouveautés, adaptations,
                       accélérations, etc.
               Rendre les utilisateurs autonome,
                       faire qu’ils se prennent en charge



vendredi 28 mai 2010
Bug tracker

               Mantis, Trac, Redline, Jira
               Rassembler les retours des utilisateurs et clients en un
               seul endroit
               Suivre leur évolution jusqu’à la conclusion
               Permet de produire le changelog
               A relier avec le VCS et le déploiement


vendredi 28 mai 2010
vendredi 28 mai 2010
vendredi 28 mai 2010
vendredi 28 mai 2010
vendredi 28 mai 2010
vendredi 28 mai 2010
vendredi 28 mai 2010
Tests fonctionnels

               A base de wiki : accessibles aux non-techniciens
               Collecte de tests métiers, et non plus techniques
               Tests a priori, tests en direct
               Les développeurs assurent la liaison avec le code
               Green pepper, fitnesse, concordion




vendredi 28 mai 2010
Intégration continue
               Vérification du code en tâche de fond
               phpUnderControl, Rephlux, Hudson, Maven, sonar,
               Xinc, script maison
               Présentation en graphique des résultats
                       Compilation, code sniffer, tests unitaires, couverture
                       de code
                       Journaux, inclusion, performances...



vendredi 28 mai 2010
vendredi 28 mai 2010
Méthodologies

               Expliquer comment on produit le code
                       Justifier comment on assure la qualité
               Impliquer les utilisateurs!
               Cycles de développement courts
                       Production, correction, adaptation
               Méthodologies agiles :
                       SCRUM, XP, Lean SD, Open Unified Process

vendredi 28 mai 2010
Pratiques agiles
               Les pratiques agiles sont souvent suffisantes
               Codage par paire
               Tester avant de coder
               Cycles courts de production
               Scénarios utilisateurs
               Poker collectif
               Point journalier (Daily Scrum)


vendredi 28 mai 2010
vendredi 28 mai 2010
La documentation
               A transférer des développeurs aux utilisateurs
               Les développeurs font la première version
               Ajouter un système de commentaires
                       Voir PHP.net : les commentaires sont plus
                       intéressants que la documentation!
               Utiliser un Wiki
               Les utilisateurs font la documentation


vendredi 28 mai 2010
vendredi 28 mai 2010
Encore plus loin?


               Déploiement continu (a la flickr)
               Audits croisés
               Audits collaboratifs
               Analyse statique




vendredi 28 mai 2010
Merci!


               http://www.alterway.fr/
               publications/
               livre-blanc-industrialisation-php
               Damien Seguy :
               damien.seguy@alterway.fr




vendredi 28 mai 2010
damien.seguy@alterway.fr
         http://www.slideshare.net/dseguy/

vendredi 28 mai 2010

Industrialisation en PHP

  • 1.
    Industrialisation en PHP UTT, Troyes, France, 20 mai 2010 vendredi 28 mai 2010
  • 2.
    Agenda Maîtriser les cycles de développements Accélérer le développement PHP Connaître et utiliser les outils et méthodes vendredi 28 mai 2010
  • 3.
    Qui parle? Damien Seguy Services expert en Open Source Sécurité, performances, industrialisation Eleveurs d’elePHPants damien.seguy@alterway.fr vendredi 28 mai 2010
  • 4.
  • 5.
    Yes, we take questions vendredi 28 mai 2010
  • 6.
  • 7.
  • 8.
  • 9.
    Sur le terrain 65 portails à refaire en 6 mois 6 personnes pour mettre à niveau 350 intranets 120 événements par an, sur 150 serveurs Une application sur une ville : 12 villes pour Noel, 2 pays l’an prochain. Un employé à temps plein pour le déploiement Multiplier les commandes par 6 en 2 mois vendredi 28 mai 2010
  • 10.
  • 11.
    Trois mantra Libérez-vous du code vendredi 28 mai 2010
  • 12.
    Trois mantra Libérez-vous du code Capitalisez vendredi 28 mai 2010
  • 13.
    Trois mantra Libérez-vous du code Capitalisez Impliquez vos utilisateurs vendredi 28 mai 2010
  • 14.
    ∆ Convention ∆ IDE ∆ Conception ∆ Framework ∆ Déploiement ∆ VCS Capitalisation Code ∆ Tests unitaires ∆ CI ∆ Docs ∆ Bug ∆ Méthodes Tracking ∆ Tests fonctionnels Implication vendredi 28 mai 2010
  • 15.
    Libérez-vous du code vendredi 28 mai 2010
  • 16.
    Libérez vous ducode Le facteur bus Ne soyez pas le seul Le facteur WTF Écrivez du code qui peut être compris 50% du temps consacré à la production Ne vous mettez pas en travers du chemin vendredi 28 mai 2010
  • 17.
    Libérez vous ducode S’arranger pour que l’on puisse travailler sans vous Ne vous investissez pas dans votre code Rendez votre code accessible aux autres vendredi 28 mai 2010
  • 18.
  • 19.
    Conventions de code Il en existe de nombreuses PEAR, Zend Frameworks, Symfony... Choisissez en une Évitez de créer la votre Cela apporte de l’unité au travail en équipe Pour vérifier son application Code_sniffer vendredi 28 mai 2010
  • 20.
    IDE Choisissez celui qui vous convient le mieux Évitez les éditeurs trop simples Netbean / Symfony, Zend tools / Zend Framework Komodo / cakePHP vendredi 28 mai 2010
  • 21.
    IDE Il faut au moins Navigateur de code, intégration avec un framework Editeur, coloration syntaxique, support des encodages intégration avec les tests unitaires interface avec VCS vendredi 28 mai 2010
  • 22.
  • 23.
  • 24.
  • 25.
  • 26.
  • 27.
  • 28.
  • 29.
  • 30.
  • 31.
  • 32.
  • 33.
  • 34.
  • 35.
  • 36.
  • 37.
  • 38.
  • 39.
  • 40.
    Frameworks Choisissez en un Pour accélérer le développement Pour son coté agréable et pratique Il doit avoir Des composants, des conventions, des tests unitaires, des utilitaires de mise en place Une communauté, des experts, des formations vendredi 28 mai 2010
  • 41.
    Au dela desframeworks Les frameworks sont généralistes et techniques Bâtissez votre propre bibliothèque métier Nous verrons bientôt des bibliothèques métier vendredi 28 mai 2010
  • 42.
    VCS Version Control System Subversion, git, CVS, mercurial Résolution des conflits Permet le développement parallèle, le retour en arrière, les versions. Stocke et distribue le code vendredi 28 mai 2010
  • 43.
  • 44.
    VCS Développement Tests Production unitaires VCS Suivi de Intégration bugs continue Le code hors du VCS n’existe pas! vendredi 28 mai 2010
  • 45.
    Le coeur dudéveloppement vendredi 28 mai 2010
  • 46.
    ∆ Convention ∆ IDE ∆ Conception ∆ Framework ∆ Déploiement ∆ VCS Capitalisation Code ∆ Tests unitaires ∆ CI ∆ Docs ∆ Bug ∆ Méthodes Tracking ∆ Tests fonctionnels Implication vendredi 28 mai 2010
  • 47.
  • 48.
    Capitalisation Accumuler à toutes les phases du projet Capturer l’information au fil de l’eau Evitez les culs de sacs Toujours se demander qui va l’utiliser? vendredi 28 mai 2010
  • 49.
  • 50.
    Les tests aidentà découpler Évite les régressions Production Code Préviens votre rappel Affiche les progres Sert de manuel Aide aux communications Client vendredi 28 mai 2010
  • 51.
    Tests unitaires PHP Unit : standard de facto Simple Test, Lemon, Zend_Test, phpt vendredi 28 mai 2010
  • 52.
    Conception Description générale de l’application Documents très variés Diagrammes d’architecture Visio, Omnigraffle, Dia Diagrammes UML Diagrammes de classes, Cas d’utilisation StarUML, ArgoUML, BOUML, vendredi 28 mai 2010
  • 53.
    Conception Captures d’écran : WireFraming Axure, Basalmiq, pencil sketching Modèle de données Power Architect, MySQL WorkBench vendredi 28 mai 2010
  • 54.
    Conception Ayez un inventaire Classes, méthodes, constantes, $_SESSION, inclusions, fichiers, dossiers,... Vérifiez l’utilisation réelle Prévoyez de faire des allers-retours avec la réalité La conception n’est pas la programmation vendredi 28 mai 2010
  • 55.
    Déploiement automatisé Phing, maven, ant, pear Nécessaire pour l’intégration continue L’aspect le plus souvent négligé du développement Obligatoire pour les grandes architectures vendredi 28 mai 2010
  • 56.
    ∆ Convention ∆ IDE ∆ Conception ∆ Framework ∆ Déploiement ∆ VCS Capitalisation Code ∆ Tests unitaires ∆ CI ∆ Docs ∆ Bug ∆ Méthodes Tracking ∆ Tests fonctionnels Implication vendredi 28 mai 2010
  • 57.
    Impliquer les utilisateurs vendredi 28 mai 2010
  • 58.
    Impliquer les utilisateurs Eviter l’effet tunnel Savoir affronter le tsunami des questions bugs, changements, nouveautés, adaptations, accélérations, etc. Rendre les utilisateurs autonome, faire qu’ils se prennent en charge vendredi 28 mai 2010
  • 59.
    Bug tracker Mantis, Trac, Redline, Jira Rassembler les retours des utilisateurs et clients en un seul endroit Suivre leur évolution jusqu’à la conclusion Permet de produire le changelog A relier avec le VCS et le déploiement vendredi 28 mai 2010
  • 60.
  • 61.
  • 62.
  • 63.
  • 64.
  • 65.
  • 66.
    Tests fonctionnels A base de wiki : accessibles aux non-techniciens Collecte de tests métiers, et non plus techniques Tests a priori, tests en direct Les développeurs assurent la liaison avec le code Green pepper, fitnesse, concordion vendredi 28 mai 2010
  • 67.
    Intégration continue Vérification du code en tâche de fond phpUnderControl, Rephlux, Hudson, Maven, sonar, Xinc, script maison Présentation en graphique des résultats Compilation, code sniffer, tests unitaires, couverture de code Journaux, inclusion, performances... vendredi 28 mai 2010
  • 68.
  • 69.
    Méthodologies Expliquer comment on produit le code Justifier comment on assure la qualité Impliquer les utilisateurs! Cycles de développement courts Production, correction, adaptation Méthodologies agiles : SCRUM, XP, Lean SD, Open Unified Process vendredi 28 mai 2010
  • 70.
    Pratiques agiles Les pratiques agiles sont souvent suffisantes Codage par paire Tester avant de coder Cycles courts de production Scénarios utilisateurs Poker collectif Point journalier (Daily Scrum) vendredi 28 mai 2010
  • 71.
  • 72.
    La documentation A transférer des développeurs aux utilisateurs Les développeurs font la première version Ajouter un système de commentaires Voir PHP.net : les commentaires sont plus intéressants que la documentation! Utiliser un Wiki Les utilisateurs font la documentation vendredi 28 mai 2010
  • 73.
  • 74.
    Encore plus loin? Déploiement continu (a la flickr) Audits croisés Audits collaboratifs Analyse statique vendredi 28 mai 2010
  • 75.
    Merci! http://www.alterway.fr/ publications/ livre-blanc-industrialisation-php Damien Seguy : damien.seguy@alterway.fr vendredi 28 mai 2010
  • 76.
    damien.seguy@alterway.fr http://www.slideshare.net/dseguy/ vendredi 28 mai 2010