SlideShare une entreprise Scribd logo
1  sur  48
Agile Software INSIDE Une plateforme industrialisableau service de l’Agilité Olivier Hoareau – PHPPRO 28 Septembre 2009 www.phppro.fr
A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
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
qui êtes-vous ?
A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
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/
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 …
A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 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
Au commencement, il y avait ça !Chez nous, chez vous, partout ! Pas beau + Pas maintenable + Pas robuste + Pas testable + Pas « WHATEVER youwant »
Maintenant PHP c’est aussi ça !
Mais surtout, PHP c’est… Démarrer Simplement Démarrer Rapidement Monter en complexité à votre rythme
A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
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…
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…
Acte IFaire (vite)
« 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://... !
« 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
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 ! »
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)
Acte IIFaire à plusieurs
« 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 ? »
« 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… »
« 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 ! »
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 ! »
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
Acte IIIFaire de la qualité
« 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
« 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 !»
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 ! »
Acte IIIOutillage Les outils du Niveau 1 avec en plus : Tests Unitaires PHP PHPUnit 3.4+, SimpleTest Tests Unitaires Javascript JSUnit Frameworks Zend Framework 1.8+, Symfony 1.2+, CodeIgniter, CakePHP, Doctrine, … Intégration Continue PHPUnderControl (CruiseControl + Plugin), Hudson, Xinc, Sonar Tests Fonctionnels exécutables Fitnesse + PHPFit, GreenPepper + PHPSud BugTracking JIRA (Commercial), Mantis, FlySpray, … Dépôt centralisé PEAR (channel), Maven 2 Outils de métriques qualités PHP Code Sniffer, PHP Mess Detector, PHP Depend, PHP Copy / Paste Detector PHP LOC, PHP Code Ratio, PHP Tree Match,…
Acte IVMontrer et tirer partie de la qualité
« 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 »
« 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 ? »
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 ! »
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, …
Acte VDépasser les frontières de l’entreprise
« 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 ! »
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… !»
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, …
…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 » !
A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
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
Mettez PHP au service de l’Agilité ! ,[object Object]
Livrer une application qui fonctionne / est utile
Travailler ensemble
Privilégiez les interactions entre les personnes

Contenu connexe

Tendances

Industrialisation des développements Java
Industrialisation des développements JavaIndustrialisation des développements Java
Industrialisation des développements JavaChristian Blavier
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes PratiquesEmmanuel Hugonnet
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséEmmanuel Hugonnet
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDXavier NOPRE
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringneuros
 
Mémoire - L'automatisation des tests fonctionnels - Emeline Simon
Mémoire - L'automatisation des tests fonctionnels - Emeline SimonMémoire - L'automatisation des tests fonctionnels - Emeline Simon
Mémoire - L'automatisation des tests fonctionnels - Emeline SimonEmeline Simon
 
Automatisation des tests
Automatisation des testsAutomatisation des tests
Automatisation des testsZhu Wei QI
 
Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1Jean-Emmanuel Houdu
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverteEric Mignot
 
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
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logicielUSTHB & DELTALOG
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAssociation Agile Nantes
 
Marathon De L Industrialisation
Marathon De L IndustrialisationMarathon De L Industrialisation
Marathon De L IndustrialisationPHPPRO
 
Allons plus loin avec Selenium
Allons plus loin avec SeleniumAllons plus loin avec Selenium
Allons plus loin avec SeleniumSOAT
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Jean-Pierre Lambert
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Jean-Marc Fontaine
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreStéphane Traumat
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneGrégory Ott
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMicrosoft Technet France
 

Tendances (20)

Industrialisation des développements Java
Industrialisation des développements JavaIndustrialisation des développements Java
Industrialisation des développements Java
 
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel  - Introduction Et Bonnes PratiquesIndustrialisation Du Logiciel  - Introduction Et Bonnes Pratiques
Industrialisation Du Logiciel - Introduction Et Bonnes Pratiques
 
Innovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette AutomatiséInnovations Techniques Au Service Du Test De Recette Automatisé
Innovations Techniques Au Service Du Test De Recette Automatisé
 
Human Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDDHuman Talks Grenoble - 11/12/2012 - TDD
Human Talks Grenoble - 11/12/2012 - TDD
 
TDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoringTDD (Test Driven Developement) et refactoring
TDD (Test Driven Developement) et refactoring
 
Mémoire - L'automatisation des tests fonctionnels - Emeline Simon
Mémoire - L'automatisation des tests fonctionnels - Emeline SimonMémoire - L'automatisation des tests fonctionnels - Emeline Simon
Mémoire - L'automatisation des tests fonctionnels - Emeline Simon
 
Automatisation des tests
Automatisation des testsAutomatisation des tests
Automatisation des tests
 
Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1Presentation tests d'acceptations automatisés sug v1.1
Presentation tests d'acceptations automatisés sug v1.1
 
Tdd en action - découverte
Tdd en action - découverteTdd en action - découverte
Tdd en action - découverte
 
Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011Industrialiser PHP - Open World Forum 2011
Industrialiser PHP - Open World Forum 2011
 
[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel[PFE] Master en ingénierie du logiciel
[PFE] Master en ingénierie du logiciel
 
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testableAgile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
Agile Tour Nantes 2014 - Tdd, le meilleur moyen d'écrire du code testable
 
Usine Logicielle 2013
Usine Logicielle 2013Usine Logicielle 2013
Usine Logicielle 2013
 
Marathon De L Industrialisation
Marathon De L IndustrialisationMarathon De L Industrialisation
Marathon De L Industrialisation
 
Allons plus loin avec Selenium
Allons plus loin avec SeleniumAllons plus loin avec Selenium
Allons plus loin avec Selenium
 
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)Introduction aux spécifications exécutables (dit aussi atdd, bdd)
Introduction aux spécifications exécutables (dit aussi atdd, bdd)
 
Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011Maintenir du code historique - RMLL 2011
Maintenir du code historique - RMLL 2011
 
Scub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libreScub Foundation, usine logicielle Java libre
Scub Foundation, usine logicielle Java libre
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogèneMise en œuvre de TFS 2010 dans un environnement technologique hétérogène
Mise en œuvre de TFS 2010 dans un environnement technologique hétérogène
 

En vedette

Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitairesPHPPRO
 
PM : code faster
PM : code fasterPM : code faster
PM : code fasterPHPPRO
 
Introduction à l'Agilité
Introduction à l'AgilitéIntroduction à l'Agilité
Introduction à l'AgilitéVINOT Bernard
 
Promenade dans les calanques
Promenade dans les calanquesPromenade dans les calanques
Promenade dans les calanquesciffer louis
 
Morency notario gg itf 2015 current partner workshop (español) for distribution
Morency notario gg itf 2015 current partner workshop (español) for distributionMorency notario gg itf 2015 current partner workshop (español) for distribution
Morency notario gg itf 2015 current partner workshop (español) for distributionGlobalGiving
 
E L M I M O I T A L I A N O N A C E D E S D E N U E S T R A S E N T R A...
E L  M I M O  I T A L I A N O  N A C E  D E S D E  N U E S T R A S  E N T R A...E L  M I M O  I T A L I A N O  N A C E  D E S D E  N U E S T R A S  E N T R A...
E L M I M O I T A L I A N O N A C E D E S D E N U E S T R A S E N T R A...PATRICIA VANEGAS JARAMILLO
 
El cuerpo humano
El cuerpo humanoEl cuerpo humano
El cuerpo humanoINGETRONICA
 
04 modelado cárstico (otra movida)
04 modelado cárstico (otra movida)04 modelado cárstico (otra movida)
04 modelado cárstico (otra movida)Javier
 
2013 - SeeMy - Happy Collaborative New Year !
2013 - SeeMy - Happy Collaborative New Year !2013 - SeeMy - Happy Collaborative New Year !
2013 - SeeMy - Happy Collaborative New Year !SeeMy
 
Hiroshima ou detroit
Hiroshima ou detroitHiroshima ou detroit
Hiroshima ou detroitciffer louis
 
Medidor de estres
Medidor de estresMedidor de estres
Medidor de estresJORGE GAMA
 
Hispla Revolutions
Hispla RevolutionsHispla Revolutions
Hispla RevolutionsCarmen13wile
 
Rol y status
Rol y statusRol y status
Rol y statusJosemar
 
Presentation fondspat
Presentation fondspatPresentation fondspat
Presentation fondspatClaire Haquet
 
Les Tic et l'art: images numériques, traitement et diffusion, 1
Les Tic et l'art: images numériques, traitement et diffusion, 1Les Tic et l'art: images numériques, traitement et diffusion, 1
Les Tic et l'art: images numériques, traitement et diffusion, 1Lesticetlart Invisu
 
A A Bailey - Psicología Esotérica I
A A  Bailey - Psicología Esotérica IA A  Bailey - Psicología Esotérica I
A A Bailey - Psicología Esotérica IN. N.
 

En vedette (20)

Intro sur les tests unitaires
Intro sur les tests unitairesIntro sur les tests unitaires
Intro sur les tests unitaires
 
PM : code faster
PM : code fasterPM : code faster
PM : code faster
 
Introduction à l'Agilité
Introduction à l'AgilitéIntroduction à l'Agilité
Introduction à l'Agilité
 
Paris
ParisParis
Paris
 
Promenade dans les calanques
Promenade dans les calanquesPromenade dans les calanques
Promenade dans les calanques
 
crops circles
crops circlescrops circles
crops circles
 
Morency notario gg itf 2015 current partner workshop (español) for distribution
Morency notario gg itf 2015 current partner workshop (español) for distributionMorency notario gg itf 2015 current partner workshop (español) for distribution
Morency notario gg itf 2015 current partner workshop (español) for distribution
 
E L M I M O I T A L I A N O N A C E D E S D E N U E S T R A S E N T R A...
E L  M I M O  I T A L I A N O  N A C E  D E S D E  N U E S T R A S  E N T R A...E L  M I M O  I T A L I A N O  N A C E  D E S D E  N U E S T R A S  E N T R A...
E L M I M O I T A L I A N O N A C E D E S D E N U E S T R A S E N T R A...
 
El cuerpo humano
El cuerpo humanoEl cuerpo humano
El cuerpo humano
 
04 modelado cárstico (otra movida)
04 modelado cárstico (otra movida)04 modelado cárstico (otra movida)
04 modelado cárstico (otra movida)
 
2013 - SeeMy - Happy Collaborative New Year !
2013 - SeeMy - Happy Collaborative New Year !2013 - SeeMy - Happy Collaborative New Year !
2013 - SeeMy - Happy Collaborative New Year !
 
Hiroshima ou detroit
Hiroshima ou detroitHiroshima ou detroit
Hiroshima ou detroit
 
Medidor de estres
Medidor de estresMedidor de estres
Medidor de estres
 
Hispla Revolutions
Hispla RevolutionsHispla Revolutions
Hispla Revolutions
 
Rol y status
Rol y statusRol y status
Rol y status
 
Jésed
JésedJésed
Jésed
 
Presentation fondspat
Presentation fondspatPresentation fondspat
Presentation fondspat
 
Les Tic et l'art: images numériques, traitement et diffusion, 1
Les Tic et l'art: images numériques, traitement et diffusion, 1Les Tic et l'art: images numériques, traitement et diffusion, 1
Les Tic et l'art: images numériques, traitement et diffusion, 1
 
A A Bailey - Psicología Esotérica I
A A  Bailey - Psicología Esotérica IA A  Bailey - Psicología Esotérica I
A A Bailey - Psicología Esotérica I
 
Invisu USR3103
Invisu USR3103Invisu USR3103
Invisu USR3103
 

Similaire à PHP : Une Plateforme Industrialisable Au Service De L'Agilité

Platform freelance ASP .NET / C#
Platform freelance ASP .NET / C# Platform freelance ASP .NET / C#
Platform freelance ASP .NET / C# Saâd Zerhouni
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?ekino
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & opsQuentin Adam
 
Synergies entre DEV et SEO (SeoCampus 2019)
Synergies entre DEV et SEO (SeoCampus 2019)Synergies entre DEV et SEO (SeoCampus 2019)
Synergies entre DEV et SEO (SeoCampus 2019)LVLUP
 
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...SEO CAMP
 
Php forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du MondePhp forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du Mondemarchugon
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !VISEO
 
dev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéedev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéeNicolas Silberman
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentationyllieth
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPjulien pauli
 
Biz talk summit devops - continuous delivery
Biz talk summit   devops - continuous deliveryBiz talk summit   devops - continuous delivery
Biz talk summit devops - continuous deliveryRadoine Douhou
 
Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp Tunisie
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)LaNetscouade
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1LbvDev
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Yves-Emmanuel Jutard
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyonClement Bouillier
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPatelier111
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Jonathan Martin
 

Similaire à PHP : Une Plateforme Industrialisable Au Service De L'Agilité (20)

Platform freelance ASP .NET / C#
Platform freelance ASP .NET / C# Platform freelance ASP .NET / C#
Platform freelance ASP .NET / C#
 
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
Drupagora 2013 : Drupal8 et Symfony2, quel impact ?
 
Happy dev ... & ops
Happy dev ... & opsHappy dev ... & ops
Happy dev ... & ops
 
Synergies entre DEV et SEO (SeoCampus 2019)
Synergies entre DEV et SEO (SeoCampus 2019)Synergies entre DEV et SEO (SeoCampus 2019)
Synergies entre DEV et SEO (SeoCampus 2019)
 
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
Synergie entre développeur et consultant SEO - Didier Sampaolo - SEOcamp'us P...
 
Php forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du MondePhp forum 2017 - Maisons du Monde
Php forum 2017 - Maisons du Monde
 
PHP, ce truc de vieux
PHP, ce truc de vieuxPHP, ce truc de vieux
PHP, ce truc de vieux
 
Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !Javascript as a first programming language : votre IC prête pour la révolution !
Javascript as a first programming language : votre IC prête pour la révolution !
 
dev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiéedev et admin sys : une cohabitation simplifiée
dev et admin sys : une cohabitation simplifiée
 
Symfony2 Presentation
Symfony2 PresentationSymfony2 Presentation
Symfony2 Presentation
 
AlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHPAlterWay SolutionsLinux Outils Industrialisation PHP
AlterWay SolutionsLinux Outils Industrialisation PHP
 
Biz talk summit devops - continuous delivery
Biz talk summit   devops - continuous deliveryBiz talk summit   devops - continuous delivery
Biz talk summit devops - continuous delivery
 
Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php Barcamp tunisie edition 2010 langage de programmation php
Barcamp tunisie edition 2010 langage de programmation php
 
Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)Mener à bien un projet Drupal (Drupagora 2013)
Mener à bien un projet Drupal (Drupagora 2013)
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1
 
Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014Apéro techno node.js + AngularJS @Omnilog 2014
Apéro techno node.js + AngularJS @Omnilog 2014
 
20131024 qualité de code et sonar - mug lyon
20131024   qualité de code et sonar - mug lyon20131024   qualité de code et sonar - mug lyon
20131024 qualité de code et sonar - mug lyon
 
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XPUn site de collectivité sur WordPress ? Méthodes et retours d'XP
Un site de collectivité sur WordPress ? Méthodes et retours d'XP
 
Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014Introduction au DevOps @SfPot 2014
Introduction au DevOps @SfPot 2014
 
Symfony 2 et le Web
Symfony 2 et le WebSymfony 2 et le Web
Symfony 2 et le Web
 

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 »
  • 12. Maintenant PHP c’est aussi ça !
  • 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)
  • 22. Acte IIFaire à plusieurs
  • 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
  • 28. Acte IIIFaire de la qualité
  • 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 ! »
  • 32. Acte IIIOutillage Les outils du Niveau 1 avec en plus : Tests Unitaires PHP PHPUnit 3.4+, SimpleTest Tests Unitaires Javascript JSUnit Frameworks Zend Framework 1.8+, Symfony 1.2+, CodeIgniter, CakePHP, Doctrine, … Intégration Continue PHPUnderControl (CruiseControl + Plugin), Hudson, Xinc, Sonar Tests Fonctionnels exécutables Fitnesse + PHPFit, GreenPepper + PHPSud BugTracking JIRA (Commercial), Mantis, FlySpray, … Dépôt centralisé PEAR (channel), Maven 2 Outils de métriques qualités PHP Code Sniffer, PHP Mess Detector, PHP Depend, PHP Copy / Paste Detector PHP LOC, PHP Code Ratio, PHP Tree Match,…
  • 33. Acte IVMontrer et tirer partie de la qualité
  • 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, …
  • 38. Acte VDépasser les frontières de l’entreprise
  • 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
  • 45.
  • 46. Livrer une application qui fonctionne / est utile
  • 48. Privilégiez les interactions entre les personnes
  • 49. Collaborer plutôt que contractualiser
  • 50. S’adapter constamment plutôt que suivre un plan
  • 51. Livrer régulièrement, un logiciel n’est jamais fini
  • 52. Faire (toujours le plus) simple
  • 54. Cultiver la motivationQu’attendez-vous pour faire des projets agiles de qualité professionnelle avec PHP ? Agile Software INSIDE
  • 55. A FAIRE EN COURS FINI Tour de Table Agilité ? 5’ 5’ Il étaitune fois… PHP ? 30’ 5’ PHP = Agile ! ? 5’ 10’
  • 57. Merci ! olivier@phppro.fr 06.31.20.74.79 http://blog.phppro.fr http://www.phppro.fr Merci à Damien Seguy…