Puisque je suis dans les présentations en ce moment, j'ai décidé de refactorer un draft de présentation que j'avais réalisé pour l'Université du Système d'Information et que finalement j'avais abandonné pour une version plus "light". Attention, c'est une histoire, beaucoup de texte, pressé s'abstenir... ou presque ;)
PHP : Une Plateforme Industrialisable Au Service De L'Agilité
1. Agile Software INSIDE Une plateforme industrialisableau service de l’Agilité Olivier Hoareau – PHPPRO 28 Septembre 2009 www.phppro.fr
2. A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
3. A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
4. Qui suis-je ? Animateur Méthodologies Agiles Animateur Equipes Technique Expert Certifié PHP 5 Consultant Indépendant (PHPPRO) 10 ans de développement Web/PHP/OSS 5 ans de projets Grands Comptes 2 ans de Coaching Agile Bordeaux / Paris / Montpellier… Bloggeur / AFUP / Conférencier
6. A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
7. La philosophie « agile » Servir avant tout la satisfaction client Livrer une application qui fonctionne / est utile Travailler ensemble Privilégiez les interactions entre les personnes Collaborer plutôt que contractualiser S’adapter constamment plutôt que suivre un plan Livrer régulièrement, un logiciel n’est jamais fini Faire (toujours le plus) simple S’améliorer constamment (feedback) Cultiver la motivation Source : Agile Manifesto, http://agilemanifesto.org/
8. Les pratiques agiles Itération / Sprint Stand Up Meeting (10min: quotidien, même heure, debout) Engagement / Responsabilisation TDD : Test DrivenDevelopment Pair Programming « Commits » sur barre verte Refactoring Intégration Continue Design Patterns TDR : Test DrivenRequirements LEAN : Amélioration des Processus Dojo …
9. A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
10. PHP : kezako ? Langage de programmation de script dynamique(interprété) Engendré par le web, exploitéaussidans le SI Plus de 15 ansd’existence 5 millions de développeurs Procédural (> 1000 fonctions) et Objet (>300 interfaces) 3ième technologieaprès Java et C/C++ (Tiobe) Langage de script préféré des développeurs 50 % des serveurs web mondiaux 200 AO du gouvernementFrançais 1500 contributeurs 100 % CAC 40, 90 % fortune 500 et 2000 45% des sites Web en France 30 conférencesinternationales par an … Source : « Oui ! PHP est industriel ! », Damien Seguy, Olivier Hoareau
11. Au commencement, il y avait ça !Chez nous, chez vous, partout ! Pas beau + Pas maintenable + Pas robuste + Pas testable + Pas « WHATEVER youwant »
13. Mais surtout, PHP c’est… Démarrer Simplement Démarrer Rapidement Monter en complexité à votre rythme
14. A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
15. Il était une fois… Damien, qui est ingénieur et travaille chez X depuis plusieurs années, et qui a la charge développer une application innovante pour son employeur. Olivier, qui est ingénieur et viens d’arriver chez X depuis quelques semaines, il connait encore peu le fonctionnement chez X, et doit travailler avec Damien Tous les deux doivent réaliser une application innovante dans un délai assez court (quelques semaines), dont l’enjeu semble à première vue sans importance pour l’entreprise… * Toute ressemblance ne serait que fortuite…
16. Oui mais… Damien de part son expérience connait bien les technologies traditionnelles du Système d’Information de X : Java, .NET, C++… Olivier quant à lui ayant plutôt travaillé dans le domaine du web, n’est pas très à l’aise avec ces technologies… Il y a bien une technologie avec laquelle Olivier pourrait réaliser l’application, mais ce n’est ni Java ni .NET : c’est PHP Damien se souvient avoir fait un peu de PHP pour son site internet personnel, à l’époque il avait trouvé ce langage assez abordable, mais est-ce une vraie technologie professionnelle ? De toute façon, il n’a pas trop le choix car Olivier ne maîtrise pas suffisamment les technologies traditionnelles de son entreprise et il doit « sortir » l’application rapidement : Banco pour PHP ! De toute façon, Damien se dit qu’il s’agit encore d’une de ses applications « jetables » que tout le monde aura oublié 6 mois après la fin du projet…
18. « Je code sous VI (« vi-aille ») » Damien: « Bon, j’ai écrit les specs de l’appli dans ce document word sur le partage réseau, tu vas le lire ce matin, me poser tes questions en début d’après-midi et commencer à développer cette après-midi, de toute façon il faut qu’on y aille » Olivier: « Pas de problème ! J’ai déjà lu le doc rapidement, j’ai récupéré les codes d’accès FTP, créé mon fichier index.php qui fait « hello world » sur le serveur, je suis prêt, tu peux y accéder avec ton navigateur à cette adresse http://... !
19. « Délai tenus » Voix Off: Quelques semaines plus tard… Damien: « Bravo Olivier ! J’ai vu Robert hier, avec ces 2 collègues ils ont regardés ton appli, bon ils ont quelques remarques mais globalement ils sont content car c’est simple et très rapide et ils peuvent commencer à l’utiliser » Olivier: « Merci ;) Oui Robert m’a appelé hier matin, j’ai dû modifier un ou deux trucs sur l’écran principal et changer des libellés qui n’étaient pas clair, 3-4 lignes de code PHPpar contre j’ai noté pas mal d’améliorations qu’ils demandent, tout seul ca va être long pour moi… Damien: « J’en ai parlé au patron, il y a Adrien le nouveau stagiaire, qui a fait un peu de PHP à l’école, qui vient t’aider dès demain matin, tu pourras lui montrer comment l’appli tourne et lui montrer ton code pour qu’il t’aide
20. Résumé Acte I« Faire vite avec les moyens du bord » Equipe 1 développeur 1 chef de projet Quelques utilisateurs Développements « VI », Editeur PHP / Texte Navigateur Web Déploiement Edition directe en prod FTP manuel Exécution (Poste local) Serveur mutualisé Méthodologie Aucune ou marginale Caractéristique Chaotique Relation Utilisateurs Orale Age Projet Nouveau-né Niveau de service Mono-service Satisfaction client Haute: « C’est simple mais rapide ! »
21. Acte IOutillage Editeur et IDE (Environnement de développement intégrés) Notepad, VI, Notepad++, Emacs, Komodo, PHPEdit… Navigateurs Web Internet Explorer 6-7-8, Firefox 3, Google Chrome, Safari, Opera Client FTP et SCP FileZilla FTP Client, WinSCP,… Plateforme de développement PHP 5.2+ (5.2.11 actuellement)
23. « J’utilise Subversion » Voix Off: Une semaine plus tard… Damien: « Alors ca avance avec Adrien ? » Olivier: « Oui ! On a mis en place une gestion de source via Subversion pour se synchroniser, Adrien m’a montré Eclipse PDT 2et son support de PHP que je commence à utiliser et on fait tourner l’appli sur notre poste de développeur via WAMP Server » Damien: « Vous perdez pas trop de temps avec tout ça ? »
24. « Je fais des tests (pas encore unitaires) » Olivier: « Ca nous a pris seulement une demi-journée ! Par contre, je me rends compte que certaines partie sont à réécrire, on en a discuté avec Adrien et on va simplifier le code. Mais pour éviter de rajouter trop de bugs on est en train de coder 1 ou 2 tests de PHPTpour vérifier que tout se passe bien…» Damien: « Au fait, le service DDRAQ à commencé à utiliser votre appli, ils sont environ une quarantaine, j’ai une liste de bugs je les mets où ? Et ils m’ont demandé une doc, j’ai envoyé les specs v1.12, c ’est la bonne ? C’est celle que j’ai testé la semaine dernière suite à votre livraison… Et puis il y a 2 autres développeurs du service R&D qui aime bien PHP qui vont vous aider ce mois-ici ! Olivier: « On t’a mis en place Mantis pour les bugs, si tu veux on te montre… »
25. « On veut faire mieux » Olivier: « On aimerait bien utiliser un framework et faire des tests plus automatisés, mais on est pas expert… On pourrait y arriver mais on sait pas trop par quel bout le prendre pour notre projet » Damien: « J’ai entendu parlé de ces coach techlead qui viennent vous aider à mettre en place une usine de développement en quelques jours lors d’un séminaire, je vais voir avec le patron si je peux pas en faire venir un rapidement pour vous aider à mettre en place tout ça… Olivier: « On a regardé un peu le Zend Framework et Symfony, et on a posé quelques questions sur la mailing list de l’AFUP. On ne sait pas trop lequel choisir… Pareil entre SimpleTest et PHPUnit, leur aide nous serait précieuse ! »
26. Résumé Acte II« S’organiser, à plusieurs » Equipe 2-3 développeurs 1 chef de projet Quelques dizaines d’utilisateurs Développements Editeur PHP, Eclipse-like, VI WAMP-like Déploiement FTP / SCP scripté Exécution Poste local Serveur mutualisé Méthodologie Cycle Cascade Caractéristique Actif Relation Utilisateurs Email Age Projet Enfant Niveau de service Plusieurs services Satisfaction client Haute: « On me prends au sérieux, on m’écoute ! »
27. Acte IIOutillage Les outils du Niveau 0 avec en plus : Editeur et IDE (Environnement de développement intégrés) Eclipse PDT 2.0 (Open Source), Zend Studio for Eclipse 7+ (Commercial) Gestion de sources Subversion 1.6+ Plateforme de développement L(inux)AMP / W(indows)AMP / M(ac)AMP : Apache 2.2+, MySQL 5.1+, PHP 5.2+ WAMP Server 5+, Zend Server Community Edition, EasyPHP
29. « Notre nouvelle usine de développement open source » Voix Off: Le Coach Tech Lead PHP est rapidement venu et à aidé Olivier, Adrien et les autres développeurs à commencer à mettre en place une usine de développement adaptées à leurs besoins, contraintes et façon de travailler, qui sera basée (progressivement, et à leur rythme) sur : PHP 5 (Procédural et Objet) SVN Tests Unitaires (ex: PHPUnit) Intégration Continue (ex: Hudson + Phing) Bug Tracker (ex: Mantis) Framework Socle (ex: Zend Framework, ExtJS) Dépôt central pour stocker les releases (ex: PEAR Channel) Tests fonctionnels exécutables (ex: Fitnesse) Tests IHM (ex: Selenium) Rapports Qualité (ex: Métriques de PHPUnit, PHPLOC, PHPMD, PHPCS…) Voix Off: Grâce à l’UDD* on peut faire ressortir plus facilement des briques réutilisables sous forme de services, on créé une librairie maison car d’autres projets ont des besoins similaires… *Usine de développement
30. « Framework, Tests Unitaires et Intégration Continue » Damien: « Alors ces nouveaux outils, vous vous en sortez ? » Olivier: « Oui ! C’est très intéressant, quand on commit sur SVN, on a des tests qui sont joués automatiquement et on reçois des mails quand il y a un problème ! » Damien: « Et cette nouvelle méthodologie agile, comment vous trouvez? » Olivier: « C’est pas mal, en plus on fait les tests avant de coder grâce au coach ! D’ailleurs on aura plein de trucs à vous montrer lors du bilan d’itération de vendredi, on est train d’installer Fitnesse pour que tu écrives les fonctionnalités dans le wiki ca sera mieux qu’un document word qui n’est pas à jour !»
31. Résumé Acte III« Une vraie usine de développement » Equipe 3 à 10 développeurs 1 Product Owner 0 à 1 Scrum Master ou éq. Quelques centaines d’utilisateurs Développements Tests Unitaires / Fonctionnels Librairie(s) maison Déploiement Edition directe en prod FTP manuel Exécution Plusieurs serveurs en prod Méthodologie Itérative (XP / Scrum…) Caractéristique Efficace Relation Utilisateurs Documentation Wiki Age Projet Adolescent Niveau de service Clients / Utilisateurs Satisfaction client Haute: « Je peux me passer de cahier des charges ! »
34. « Apprendre de nos erreurs, s’améliorer sans cesse et mettre la barre toujours plus haut » Voix Off: Quelques mois plus tard… Damien: « J’ai vu que vous aviez 250 erreurs de convention de codage sur la couche services, vous pensez les traiter ? » Olivier: « Oui, on vient de rajouter une règle de plus dans le système de vérification de la qualité de code, on met à jour nos conventions cette semaine ! Tu vois tout ! » Damien: « Vous avez remarqué les temps de chargement sur les pages ? Ca devient un peu long non ? » Olivier: « On doit mettre en place le composant Cache du framework, on devra gagner 300% à la prochaine mise en prod . Pour le déploiement on vient de mettre en place Capistrano, ca nous facilite le déploiement sur les 3 serveurs, c’est fait automatiquement maintenant depuis hudson »
35. « Mesurer la qualité et l’usage pour maîtriser le projet sur le long terme » Damien: « Donc faisons le point, 100% des 548 tests unitaires passent au vert, 25 tests fonctionnels restent à coder pour la fin de l’itération, 50 violations de conventions de codage sont à rectifier, … tiens, je vois un taux de complexité accrue sur cette partie du code, c’est normal ? » Olivier: « Tu as raison, on a vus ça avec l’équipe, on doit complètement recoder cette partie, lors de la prochaine itération, on est au courant, on estime ça à une complexité de 7 sur notre échelle habituelle. On profitera des évolutions sur les user story X et Y pour le faire» Damien: « L’équipe de production vient de finir de paramétrer la nouvelle plateforme de production, l’installation sera faite demain matin, on devrait passer dans une autre dimension en terme de performance ! » Olivier: « Depuis qu’on propose l’application en marque blanche c’est vrai qu’on a un accroissement de 20% du nombre d’utilisateur par mois, d’ici à la fin de l’année, il faudra peut être penser à des solutions comme Amazon ElasticComputing, non ? »
36. Résumé Acte IV« Une application réellement utilisée sur laquelle je capitalise » Equipe > 10 développeurs plusieurs Product Owner 1 Scrum Master ou éq. Plusieurs milliers d’utilisateurs Développements Librairie(s) métier Tests fonctionnels Déploiement Automatisé Exécution > 3 serveurs HA, Failover, Equilibrage, Cache, système de pré-prod Méthodologie Itérative parallélisée sur plusieurs projets Caractéristique Réactif Relation Utilisateurs Articles, Blog, Feed RSS Age Projet Adule (raisonné, raisonnable) Niveau de service API Publique, Marque Blanche, Plateforme pour d’autres Satisfaction client Haute: « Ca tiens la charge ! »
37. Acte IVOutillage Les outils du Niveau 2 avec en plus : Tests IHM Selenium RC, SimpleTest Déploiement automatisé Capistrano + SSH, Hudson/CruiseControl + Phing, PEAR + SSH Modules de Frameworks Cache, …
39. « Partager son savoir pour grandir ensemble » Damien: « Le Subversion et le channel/dépôt PEAR publics sont opérationnels ? » Olivier: « Oui, Tim de Hollande commit déjà dessus, Le Projet SourceForge est accessible en ligne, on a déjà eu 15 tickets de bugs, et 5000 téléchargements, ca va vite ! Le projet Symfony via d’intégrer notre plugin de gestion de XYZ » Olivier: « On a conçu un nouveau processus de déploiement qui devrait nous permettre de déployer en continue sur un commit, si tous les tests sont verts, ca permettra d’être extrêmement réactif et de mettre en prod dans la journée les traitements de bug et évolutions, on pourrait peut être faire des itérations d’une semaine ? car à chaque fois on est finalement obligé d’attendre 2 semaines pour livrer les évolutions aux clients… » Damien: « Vous êtes fort les gars ! Au fait, le contrat avec Amazon est ok, on aura les identifiants pour créer les machines virtuelles du cloud dans la journée, préparez le champagne ! »
40. Résumé Acte V« Être un acteur incontournable du marché, de la communauté » Equipe > 10 développeurs >1 Product Owner >=1 Scrum Master ou éq. > 1000 utilisateurs Communauté Open Source Développements SVN Public API Publique, RFC Déploiement En continue Exécution Cloud Computing Amazon, … Méthodologie Itérative et Open Source Caractéristique Proactif Relation Utilisateurs Listes de diffusions, News Groups, Séminaires Age Projet Mûr (établi, sur de soi) Niveau de service Du code source libre Satisfaction client Haute: « Je vais pouvoir l’intégrer avec mon autre application… !»
41. Acte VOutillage Les outils du Niveau 3 avec en plus : Hébergement Gestion de Projet Open Source Sourceforge, Google Code, GitHub, Berlios, Codeplex, Channel PEAR privé… Hébergement Plateforme Amazon Web Services, …
42. …Fin de l’histoire Voix Off: Damien, qui a su mener à bien son projet et en faire une réussite pour son entreprise, à eu une belle promotion. Olivier qui venait d’arriver chez X, est devenu en quelques mois la référence sur les projets PHP chez X et a réussi à convaincre toute l’entreprise que PHP était un choix pertinent. La société X a su tirer partie de son investissement et revendre en marque blanche son application dont elle a su faire une réussite, application qui représente maintenant une part non négligeable de son chiffre d’affaires… Damien, Olivier, Adrien, Robert… sont donc maintenant convaincus que « PHP est une plateforme industrialisable qui aide à être Agile » !
43. A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
44. Parce que PHP, c’est… Fun ! Tout le monde connait Ticket d’entrée faible Courbe d’apprentissage progressive Un outil pour prototype rapidement Un outil aussi pour faire du durable, du refactorable Outillé Industrialisable Mature Une Biodiversité inégalée (webmasters, geeks, architectes, experts, chef de projets, chef de produits ou simples passionnés !) … Image : El Roubio – www.elroubio.net