SlideShare une entreprise Scribd logo
AgileSoftwareINSIDEUne plateforme industrialisableau service de l’AgilitéOlivier Hoareau – PHPPRO28 Septembre 2009www.phppro.fr
A FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’
A FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’
Qui suis-je ?Animateur Méthodologies AgilesAnimateur Equipes TechniqueExpert Certifié PHP 5Consultant Indépendant (PHPPRO)10 ans de développement Web/PHP/OSS5 ans de projets Grands Comptes2 ans de Coaching AgileBordeaux  / Paris / Montpellier…Bloggeur / AFUP / Conférencier
qui êtes-vous ?
A FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’
La philosophie « agile »Servir avant tout la satisfaction clientLivrer une application qui fonctionne / est utileTravailler ensemblePrivilégiez les interactions entre les personnesCollaborer plutôt que contractualiserS’adapter constamment plutôt que suivre un planLivrer régulièrement, un logiciel n’est jamais finiFaire (toujours le plus) simpleS’améliorer constamment (feedback)Cultiver la motivationSource : Agile Manifesto, http://agilemanifesto.org/
Les pratiques agilesItération / SprintStand Up Meeting (10min: quotidien, même heure, debout)Engagement / ResponsabilisationTDD : Test DrivenDevelopmentPair Programming« Commits » sur barre verteRefactoringIntégration ContinueDesign PatternsTDR : Test DrivenRequirementsLEAN : Amélioration des ProcessusDojo…
A FAIREEN COURSFINITour deTableAgilité ?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 SIPlus de 15 ansd’existence5 millions de développeursProcédural (> 1000 fonctions) et Objet (>300 interfaces)3ième technologieaprès Java et C/C++ (Tiobe)Langage de script préféré des développeurs50 % des serveurs web mondiaux200 AO du gouvernementFrançais1500 contributeurs100 % CAC 40, 90 % fortune 500 et 200045% des sites Web en France30 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émarrerSimplementDémarrerRapidementMonter en complexité à votre rythme
A FAIREEN COURSFINITour deTableAgilité ?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 DamienTous 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 PHPDamien 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 »Equipe1 développeur1 chef de projetQuelques utilisateursDéveloppements« VI », Editeur PHP / TexteNavigateur WebDéploiementEdition directe en prodFTP manuelExécution(Poste local)Serveur mutualiséMéthodologieAucune ou marginaleCaractéristiqueChaotiqueRelation UtilisateursOraleAge ProjetNouveau-néNiveau de serviceMono-serviceSatisfaction clientHaute: « C’est simple mais rapide ! »
Acte IOutillageEditeur 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, OperaClient FTP et SCPFileZilla FTP Client, WinSCP,…Plateforme de développementPHP 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 »Equipe2-3 développeurs1 chef de projetQuelques dizaines d’utilisateursDéveloppementsEditeur PHP, Eclipse-like, VIWAMP-likeDéploiementFTP / SCP scriptéExécutionPoste localServeur mutualiséMéthodologieCycle CascadeCaractéristiqueActifRelation UtilisateursEmailAge ProjetEnfantNiveau de servicePlusieurs servicesSatisfaction clientHaute: « On me prends au sérieux, on m’écoute ! »
Acte IIOutillageLes 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éveloppementL(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)SVNTests 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 »Equipe3 à 10 développeurs1 Product Owner0 à 1 Scrum Master ou éq.Quelques centaines d’utilisateursDéveloppementsTests Unitaires / FonctionnelsLibrairie(s) maisonDéploiementEdition directe en prodFTP manuelExécutionPlusieurs serveurs en prodMéthodologieItérative (XP / Scrum…)CaractéristiqueEfficaceRelation UtilisateursDocumentation WikiAge ProjetAdolescentNiveau de serviceClients / UtilisateursSatisfaction clientHaute: « Je peux me passer de cahier des charges ! »
Acte IIIOutillageLes outils du Niveau 1 avec en plus :Tests Unitaires PHPPHPUnit 3.4+, SimpleTestTests Unitaires JavascriptJSUnitFrameworksZend Framework 1.8+, Symfony 1.2+, CodeIgniter, CakePHP, Doctrine, …Intégration ContinuePHPUnderControl (CruiseControl + Plugin), Hudson, Xinc, SonarTests Fonctionnels exécutablesFitnesse + PHPFit, GreenPepper + PHPSudBugTrackingJIRA (Commercial), Mantis, FlySpray, …Dépôt centraliséPEAR (channel), Maven 2Outils de métriques qualitésPHP 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éveloppeursplusieurs Product Owner1 Scrum Master ou éq.Plusieurs milliers d’utilisateursDéveloppementsLibrairie(s) métierTests fonctionnelsDéploiementAutomatiséExécution> 3 serveursHA, Failover, Equilibrage, Cache, système de pré-prodMéthodologieItérative parallélisée sur plusieurs projetsCaractéristiqueRéactifRelation UtilisateursArticles, Blog, Feed RSSAge ProjetAdule (raisonné, raisonnable)Niveau de serviceAPI Publique, Marque Blanche, Plateforme pour d’autresSatisfaction clientHaute: « Ca tiens la charge ! »
Acte IVOutillageLes outils du Niveau 2 avec en plus :Tests IHMSelenium RC, SimpleTestDéploiement automatiséCapistrano + SSH, Hudson/CruiseControl + Phing, PEAR + SSHModules de FrameworksCache, …
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 utilisateursCommunauté Open SourceDéveloppementsSVN PublicAPI Publique, RFCDéploiementEn continueExécutionCloud ComputingAmazon, …MéthodologieItérative et Open SourceCaractéristiqueProactifRelation UtilisateursListes de diffusions, News Groups, SéminairesAge ProjetMûr (établi, sur de soi)Niveau de serviceDu code source libreSatisfaction clientHaute: « Je vais pouvoir l’intégrer avec mon autre application… !»
Acte VOutillageLes outils du Niveau 3 avec en plus :Hébergement Gestion de Projet Open SourceSourceforge, Google Code, GitHub, Berlios, Codeplex, Channel PEAR privé…Hébergement PlateformeAmazon Web Services, …
…Fin de l’histoireVoix 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 FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’
Parce que PHP, c’est…Fun !Tout le monde connaitTicket d’entrée faibleCourbe d’apprentissage progressiveUn outil pour prototype rapidementUn outil aussi pour faire du durable, du refactorableOutilléIndustrialisableMatureUne 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é !Servir avant tout la satisfaction client
Livrer une application qui fonctionne / est utile
Travailler ensemble
Privilégiez les interactions entre les personnes

Contenu connexe

PPTX
AFUP Forum PHP 2009 : Oui ! PHP est industriel !
PPTX
Agilité, Tests Et Industrialisation
PDF
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
PDF
Industrialisation de PHP - Be Zend 2010
ODP
Industrialiser ses développements PHP - RMLL 2010
PDF
Solutions Linux 2010 - Maîtrise du développement PHP
PDF
Revues de code - Forum PHP 2010
PPTX
Agile tour 2015 alliés contre les défauts
AFUP Forum PHP 2009 : Oui ! PHP est industriel !
Agilité, Tests Et Industrialisation
Initiation aux tests fonctionnels - Philippe Kernevez - October 2009
Industrialisation de PHP - Be Zend 2010
Industrialiser ses développements PHP - RMLL 2010
Solutions Linux 2010 - Maîtrise du développement PHP
Revues de code - Forum PHP 2010
Agile tour 2015 alliés contre les défauts

Tendances (20)

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

En vedette (20)

PPTX
Intro sur les tests unitaires
PDF
PM : code faster
PDF
Introduction à l'Agilité
PPT
PPS
Promenade dans les calanques
PPS
crops circles
PPT
Morency notario gg itf 2015 current partner workshop (español) for distribution
DOCX
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...
PPTX
El cuerpo humano
PPTX
04 modelado cárstico (otra movida)
PDF
2013 - SeeMy - Happy Collaborative New Year !
PPS
Hiroshima ou detroit
PPS
Medidor de estres
PPT
Hispla Revolutions
PPT
Rol y status
PDF
Presentation fondspat
PDF
Les Tic et l'art: images numériques, traitement et diffusion, 1
PDF
A A Bailey - Psicología Esotérica I
PDF
Invisu USR3103
Intro sur les tests unitaires
PM : code faster
Introduction à l'Agilité
Promenade dans les calanques
crops circles
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...
El cuerpo humano
04 modelado cárstico (otra movida)
2013 - SeeMy - Happy Collaborative New Year !
Hiroshima ou detroit
Medidor de estres
Hispla Revolutions
Rol y status
Presentation fondspat
Les Tic et l'art: images numériques, traitement et diffusion, 1
A A Bailey - Psicología Esotérica I
Invisu USR3103
Publicité

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

KEY
Techdays2011
PPT
Symphonie pour PHP industrialisé en agilité majeure
PPT
Symphonie pour PHP industrialisé en agilité majeure
PDF
Intégration continue & Qualité logicielle
PDF
Bonnes pratiques de developpement en PHP
PDF
Etude des Frameworks PHP
PDF
Ecrire et déployer une appli PHP maintenable
ODP
Industrialisez vos projets Php
PPT
Barcamp tunisie edition 2010 langage de programmation php
PDF
Industrialisation PHP
PPT
CMS, Framework : à l'origine de nouvelles pratiques et de nouveaux enjeux dan...
PDF
Une application sans framework en 2019
PDF
[DevoxxFr] Les bronzés font du dev
PDF
PHP vs JavaScript
PDF
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
PDF
Dossier de competences fc beezen
PDF
Mener à bien un projet Drupal (Drupagora 2013)
PDF
Dotnet j2 ee
PDF
PHP dans la grande entreprise canadienne
PDF
Migration de technologie J2EE vers PHP à M6Web
Techdays2011
Symphonie pour PHP industrialisé en agilité majeure
Symphonie pour PHP industrialisé en agilité majeure
Intégration continue & Qualité logicielle
Bonnes pratiques de developpement en PHP
Etude des Frameworks PHP
Ecrire et déployer une appli PHP maintenable
Industrialisez vos projets Php
Barcamp tunisie edition 2010 langage de programmation php
Industrialisation PHP
CMS, Framework : à l'origine de nouvelles pratiques et de nouveaux enjeux dan...
Une application sans framework en 2019
[DevoxxFr] Les bronzés font du dev
PHP vs JavaScript
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Dossier de competences fc beezen
Mener à bien un projet Drupal (Drupagora 2013)
Dotnet j2 ee
PHP dans la grande entreprise canadienne
Migration de technologie J2EE vers PHP à M6Web

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

  • 1. AgileSoftwareINSIDEUne plateforme industrialisableau service de l’AgilitéOlivier Hoareau – PHPPRO28 Septembre 2009www.phppro.fr
  • 2. A FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’
  • 3. A FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’
  • 4. Qui suis-je ?Animateur Méthodologies AgilesAnimateur Equipes TechniqueExpert Certifié PHP 5Consultant Indépendant (PHPPRO)10 ans de développement Web/PHP/OSS5 ans de projets Grands Comptes2 ans de Coaching AgileBordeaux / Paris / Montpellier…Bloggeur / AFUP / Conférencier
  • 6. A FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’
  • 7. La philosophie « agile »Servir avant tout la satisfaction clientLivrer une application qui fonctionne / est utileTravailler ensemblePrivilégiez les interactions entre les personnesCollaborer plutôt que contractualiserS’adapter constamment plutôt que suivre un planLivrer régulièrement, un logiciel n’est jamais finiFaire (toujours le plus) simpleS’améliorer constamment (feedback)Cultiver la motivationSource : Agile Manifesto, http://agilemanifesto.org/
  • 8. Les pratiques agilesItération / SprintStand Up Meeting (10min: quotidien, même heure, debout)Engagement / ResponsabilisationTDD : Test DrivenDevelopmentPair Programming« Commits » sur barre verteRefactoringIntégration ContinueDesign PatternsTDR : Test DrivenRequirementsLEAN : Amélioration des ProcessusDojo…
  • 9. A FAIREEN COURSFINITour deTableAgilité ?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 SIPlus de 15 ansd’existence5 millions de développeursProcédural (> 1000 fonctions) et Objet (>300 interfaces)3ième technologieaprès Java et C/C++ (Tiobe)Langage de script préféré des développeurs50 % des serveurs web mondiaux200 AO du gouvernementFrançais1500 contributeurs100 % CAC 40, 90 % fortune 500 et 200045% des sites Web en France30 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émarrerSimplementDémarrerRapidementMonter en complexité à votre rythme
  • 14. A FAIREEN COURSFINITour deTableAgilité ?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 DamienTous 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 PHPDamien 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 »Equipe1 développeur1 chef de projetQuelques utilisateursDéveloppements« VI », Editeur PHP / TexteNavigateur WebDéploiementEdition directe en prodFTP manuelExécution(Poste local)Serveur mutualiséMéthodologieAucune ou marginaleCaractéristiqueChaotiqueRelation UtilisateursOraleAge ProjetNouveau-néNiveau de serviceMono-serviceSatisfaction clientHaute: « C’est simple mais rapide ! »
  • 21. Acte IOutillageEditeur 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, OperaClient FTP et SCPFileZilla FTP Client, WinSCP,…Plateforme de développementPHP 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 »Equipe2-3 développeurs1 chef de projetQuelques dizaines d’utilisateursDéveloppementsEditeur PHP, Eclipse-like, VIWAMP-likeDéploiementFTP / SCP scriptéExécutionPoste localServeur mutualiséMéthodologieCycle CascadeCaractéristiqueActifRelation UtilisateursEmailAge ProjetEnfantNiveau de servicePlusieurs servicesSatisfaction clientHaute: « On me prends au sérieux, on m’écoute ! »
  • 27. Acte IIOutillageLes 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éveloppementL(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)SVNTests 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 »Equipe3 à 10 développeurs1 Product Owner0 à 1 Scrum Master ou éq.Quelques centaines d’utilisateursDéveloppementsTests Unitaires / FonctionnelsLibrairie(s) maisonDéploiementEdition directe en prodFTP manuelExécutionPlusieurs serveurs en prodMéthodologieItérative (XP / Scrum…)CaractéristiqueEfficaceRelation UtilisateursDocumentation WikiAge ProjetAdolescentNiveau de serviceClients / UtilisateursSatisfaction clientHaute: « Je peux me passer de cahier des charges ! »
  • 32. Acte IIIOutillageLes outils du Niveau 1 avec en plus :Tests Unitaires PHPPHPUnit 3.4+, SimpleTestTests Unitaires JavascriptJSUnitFrameworksZend Framework 1.8+, Symfony 1.2+, CodeIgniter, CakePHP, Doctrine, …Intégration ContinuePHPUnderControl (CruiseControl + Plugin), Hudson, Xinc, SonarTests Fonctionnels exécutablesFitnesse + PHPFit, GreenPepper + PHPSudBugTrackingJIRA (Commercial), Mantis, FlySpray, …Dépôt centraliséPEAR (channel), Maven 2Outils de métriques qualitésPHP 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éveloppeursplusieurs Product Owner1 Scrum Master ou éq.Plusieurs milliers d’utilisateursDéveloppementsLibrairie(s) métierTests fonctionnelsDéploiementAutomatiséExécution> 3 serveursHA, Failover, Equilibrage, Cache, système de pré-prodMéthodologieItérative parallélisée sur plusieurs projetsCaractéristiqueRéactifRelation UtilisateursArticles, Blog, Feed RSSAge ProjetAdule (raisonné, raisonnable)Niveau de serviceAPI Publique, Marque Blanche, Plateforme pour d’autresSatisfaction clientHaute: « Ca tiens la charge ! »
  • 37. Acte IVOutillageLes outils du Niveau 2 avec en plus :Tests IHMSelenium RC, SimpleTestDéploiement automatiséCapistrano + SSH, Hudson/CruiseControl + Phing, PEAR + SSHModules de FrameworksCache, …
  • 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 utilisateursCommunauté Open SourceDéveloppementsSVN PublicAPI Publique, RFCDéploiementEn continueExécutionCloud ComputingAmazon, …MéthodologieItérative et Open SourceCaractéristiqueProactifRelation UtilisateursListes de diffusions, News Groups, SéminairesAge ProjetMûr (établi, sur de soi)Niveau de serviceDu code source libreSatisfaction clientHaute: « Je vais pouvoir l’intégrer avec mon autre application… !»
  • 41. Acte VOutillageLes outils du Niveau 3 avec en plus :Hébergement Gestion de Projet Open SourceSourceforge, Google Code, GitHub, Berlios, Codeplex, Channel PEAR privé…Hébergement PlateformeAmazon Web Services, …
  • 42. …Fin de l’histoireVoix 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 FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’
  • 44. Parce que PHP, c’est…Fun !Tout le monde connaitTicket d’entrée faibleCourbe d’apprentissage progressiveUn outil pour prototype rapidementUn outil aussi pour faire du durable, du refactorableOutilléIndustrialisableMatureUne 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. Mettez PHP au service de l’Agilité !Servir avant tout la satisfaction client
  • 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 ?AgileSoftwareINSIDE
  • 55. A FAIREEN COURSFINITour deTableAgilité ?5’5’Il étaitune fois…PHP ?30’5’PHP =Agile !?5’10’