Agilité, Tests et industrialisationoù comment maîtriser votre businessOlivier Hoareau – PHPPRO23 Septembre 2009www.phppro.fr
A FAIREEN COURSFINITour deTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
A FAIREEN COURSFINITour deTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
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 Agile1 an de vie sur Bordeaux (Paris, Brussels…)Bloggeur / AFUP / Conférencier
qui êtes-vous ?
A FAIREEN COURSFINITour deTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
Vous, aujourd’hui…
Vous êtes plutôt…« On s’en sort déjà, ca marche »Vous vendez (des applications)Vous savez répondre à la plupart des besoins de vos clientsVous avez créé vos processus (développement, livraison)Vous avez un catalogue produitsVous avez des compétences internes…Chez nous, ça marche !
ou alors…« On sait que l’on peut mieux faire »Vous vendez (trop) cherVous ne gagnez pas tous les appels d’offresVous perdez de l’énergieVous perdez ou manquez de compétencesVous avez des applications « legacy » et/ou « zombies »Le mot « manuel » fait encore partie de votre quotidien…Oui, il y a peut être un peu de ça ?
Dans tous les cas…« La dure réalité de notre quotidien »Les besoins du client changentLes délais sont toujours trop courtLes développeurs n’en font toujours qu’à leur têteLes acteurs projets ne parlent pas le même langageIl faut prévoir une phase de recette dans le planningNécessité de faire des compromis pour gagner de l’argentOn perd du temps dans la rédaction / lecture des documents…C’est notre quotidien !
Prise de conscience:« Il faut améliorer nos pratiques pour maîtrisernos coûts, nos délais et la satisfaction client »Pour ne paslivrer en retardPour ne pasperdre du temps en maintenancePour ne pasredévelopper toute l’appliPour cadrer nos développeursPour faire et maintenir notre margePour pouvoir planifierPour être compétitifOui !
Barrières:« Maîtriser, oui mais… »Comment libérer l’innovation / l’imagination ?Comment prendre en compte les compétences de chacun ?Comment ne pas imposer ?Comment contrôler ?Comment éviter de perdre du temps ?Comment ne pas tout remettre en question ?Par où commencer ?Comment ?
A FAIREEN COURSFINITour deTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
Il était une fois une équipe …
qui acquis des valeurs fondamentalesEquipeApplication / LogicielCollaborationAcceptation du changementSource : Wikipédia, http://fr.wikipedia.org/wiki/M%C3%A9thode_agile
qui adhéra à 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/
qui utilisa le vocabulaire « agile »Itération / SprintScrum / XPVélocité / ValeurBacklogPost-itUser StoryPlanning gameBilan / RetrospectiveStand Up Meeting / Daily ScrumP.O : Product Owner/ S.M : Scrum MasterUtilisateur(s) / ClientDéveloppeur(s)
qui mis en place une organisation « agile »Les UTILISATEURSLes DEVELOPPEURSLe PRODUCT OWNERLe SCRUM MASTERImages empreintées à http://borisgloger.com
qui organisa son tempsen itérations fixes (ex: 2 semaines)J0Préparation contenu itération / Tableau des Posts-itsJ1 … J10Production des posts-itsJ10DémoBilan / Retrospective / FeedbackPendant l’itération (planifié par post-it si possible)Livraison / Déploiement de l’itération précédenteAtelier de conception improviséTraitements des bugs de prod (mode imprévu)
qui mis en œuvre des pratiques agiles*Stand 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…* Pas forcément toutes les pratiques, et progressivement
qui s’auto-contrôlaContrôles régulier des pratiquesBurndownChart PlanningMise en place de règles Bilan  feedback  nouvelles règlesCouverture de Tests        RobustesseVérification du respect des conventions  MaintenabilitéDojo et Revue de code   Evolutivité / Modularité / Réutilisabilité (Archi.)…Contrôles automatisés de l’applicationTaille du code / répartition du codeTests UnitairesTests fonctionnelsTests de non-régressionsTests d’intégrationsTests d’IHM…Métriques
Source : ScrumAlliance, http://www.frenchsug.org… avec des BurndownCharts
Source : http://www.typeoneerror.com… en mesurant sa couverture de code
… en réalisant ses Bilans / RétrospectivesPointspositifsProblèmesrencontrésActionsbénéfiquesà renouvelerIdéesà tester
qui s’outillaCapitalisation Wiki (ex: Confluence)Environnement de développement (ex: Zend Studio)Gestion de sources (ex: Subversion)Réutilisation / Framework (ex: Zend Framework)Tests Unitaires (ex: PHPUnit)Packaging / Automatisation (ex: Phing / PEAR)Intégration Continue (ex: Hudson)Tests Fonctionnels Exécutables (ex: Fitnesse)Tests Graphiques (ex: Selenium)Mesure du code (ex: PHPLoc, PHPCpd…)Suivi évolutions / bugs (ex: JIRA)…
qui améliora son architectureProgrammation ObjetCouche ServicesMulti-contextes (web, batch, tests, …)Design PatternsWeb services & RESTDécoupage en modulesTestabilité (« Bouchonnabilité »)Multi-base de données / BdDNon RelationnellesLibrairie technique interneLibrairie fonctionnelle interne…
qui fit émerger etrespecta ses conventionsSocialesHorairesEngagementsFichiers / Classes / MéthodesNommageEncodage / TailleArchitectureGrands PrincipesCouchesTests…« L’excellence attire l’excellence »
qui livra régulièrement des évolutionsT0T0+1moisT0+2moisT0+3moisT0+4moisLivraisonLivraisonLivraisonLivraisonIt.#1It.#2It.#5It.#8It.#0It.#3It.#4It.#6It.#7
inspiré d’une histoireSvraieS :6
Ils « vivent » l’« agile »1 Grand Compte Service Public – Projet de 25 dév. / 50 pers.1 Acteur 1% Logement –Projet de 15 dév. / 30 pers.1 Grand Compte Telecom – Projet de 4 dév. / 8 pers.1 Startup Tchat Virtuel – Projet de 3 dév. / 6 pers.1 Grand Compte Service Public – Projet de 4 dév. / 7 pers.1 SSII Suisse – Projet de 1 dév. / 2 pers.et vous ?
A FAIREEN COURSFINITour deTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
Usine de Développement :Industrialisation PHP
Ma définition de l’industrialisationINDUSTRIALISATIONMONOMULTIMA PRATIQUEOUTILSTECHNIQUESPRATIQUES
Une vraie usine professionnelleCapitalisation Wiki  ConfluenceEnvironnement de développement  Eclipse,Zend StudioGestion de sources Subversion, GitRéutilisation / Framework  Zend Framework, SymfonyTests Unitaires PHPUnitPackaging / Automatisation  Phing/ PEARIntégration Continue  Hudson, PHPUnderControlTests Fonctionnels Exécutables  FitnesseTests Graphiques  SeleniumMesure du code  PHPLoc, PHPCpd, Pdepend, CodeSnifferSuivi évolutions / bugs  JIRA…
ParamètresT.UCe qui testeLOGIQUECe qui est testéENV / SYSCe qui interagieRetoursExceptionsQu’est-ce qu’un test unitaire ?Vérifie que l’envoie dela liste des lettresen recommandéElectronique d’hier paremail fonctionneDemande la liste des lettresRecommandé à la BDD,Construit et déclenche / commande l’envoie d’emailEnvoie des emails via le réseauExécute une requête sur la BDDLit / Ecrit dans des fichiers…
TDD : Test DrivenDevelopment« Test First » : coder le test avant le codeConstruire / Designer le code « au fil de l’eau »TDD : 3 fois plus de temps à développer, 10 fois moins de problème à l’arrivée.Automatisation des T.U : base de l’usine de développement
Pourquoi TDD ?Tests oublié si à la finFort impact positif sur le Design (Architecture)M’oblige à développer le strict nécessairePlus robusteTests automatisables  intégration continueM’oblige à être modulaire pour bouchonner« Je n’ai plus peur de toucher le code »« Je n’ai plus peur de supprimer du code »…
Exemple TDD / PHPUnit« Développer une méthode de récupération de la liste des commandes d’une date par webservice »
Je développe le test du cas simple…
…ensuite, le code pour faire passer le test
Je développe le test du cas d’erreur…Test… je refactore et développe le codeCode
TDD : une approche systématiqueTest du cas nominalCode du cas nominalTest du cas d’erreurCode du cas d’erreurTest du / des cas aux limitesCode du / des cas aux limites= Robustesse, Bouchon, Simplicité et Modularité
Testabilité du code PHPNatifPHPSupportPHPWeb
Qu’est-ce qu’un test fonctionnel ?Un test écrit dans un vocabulaire fonctionnelUn test écrit de préférence par un fonctionnelUn test décrivant une fonctionnalitéUn test non contraint, en apparence, par la techniqueUn test lisible sans connaissances techniquesUn test de non regréssion des fonctionnalitésoutils T.D.R = Test DRIVEN REQUIREMENTS
T.D.R : Quels avantages ?Simple + Efficace : WikiRemplacement possible du CdC (Word  Wiki)Visibilité temps réel sur l’accompli / non accompliTests de non régression temps réel / à la demandeVecteur de formalisation des évolutionsOutil de démo / bilan de fin d’itérationVocabulaire universel, i.e. « compris par tous »Outil pour tester le comportement de l’applicationOUTIL de PREDILECTION DE LA « MOA AGILE »
T.D.R : Les outils du marchéFitnesse Open Source / FreeGreenPepper  Open Source / CommercialVoir, en BehaviourDrivenDevelopment (dérivé) :JbehaveRobotFramework…
DEVBUILDDEPLOYINTEGS.I.Une usine de développement typique© OCTO Technology -  Université du Système d’Information47132integ.myapp.com*/2 * * * *SVNdev.myapp.comTDDon-demandon-commitRUNPROJECTT.U6nightlyTracker+Backlogon-demandTDRQualité1,5,7nightly(pre-)prod.myapp.comREPORT			4
Construire sa Librairie commune« à n’utiliser qu’en cas de besoin »Librairie de composants techniques et/ou fonctionnelsSurcouche du framework choisi (ex: ZF)Cache la complexité / Paradigme « convention over configuration »Minimal, évolutif, réactif, en constante améliorationRationalisation arborescence fichiersGérer le tranverse : boostraps, conf, bdd…Capitalisation / FactorisationSi pas présent dans la lib, les équipes le développentContribuez à la lib via le SVNMaintenu / ModéréConventions et critères qualité pour donner l’exemple
Les 10 commandements du développeurFaire simple ET propreDévelopper en TDD : le test d’abord, le code ensuiteCommitter si tous les tests de l’application sont en succèsRespecter des conventions de codage connus en dehors de l'entrepriseDévelopper 1 fois, Réutiliser plusieurs foisTester unitairement toutes les fonctionnalités du coeur de l'applicationUtiliser les comparaisons de valeurs ET de types (===, !==)Réaliser systématiquement des implémentation mocks (bouchons)Ne pas dépasser plus de 80 lignes aérées et commentées pour une fonction/méthodeBanir « l’écran noir » de mon quotidienBonus: Always have fun !
des questions ?
A FAIREEN COURSFINITour deTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
Vos perspectives…BossGeekAlignementRéactivitéFlexibilitéAdaptabilitéRéutilisabilitéVisibilitéAutomatisationCollaboratifMono / Multi…Maîtrise du déploiementDév. Procédurale  Objet*Capitalisation interneBouchons / TestabilitéIntégration ContinueModernitéModularitéEvolutivitéMaintenabilité…* optimisée / efficace
Par où commencerSe faire coacher (méthodo / technique)Pour être pris en main / conseilléPour ne pas perdre du tempsPour passer les obstacles en étant conscientPour choisir et mettre en place les bons outilsPour faire par vous-même dès le débutChoisir un projet-test (1ère implémentation)Pour appréhender / se roderPour avoir un succès à raconter / un exemple à suivre
Pour démarrer, vous pensez à…un projet ?une équipe ?une mission ?un client ?une période ?
A FAIREEN COURSFINITour deTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
des questions ?
Merci !olivier@phppro.fr06.31.20.74.79http://blog.phppro.frhttp://www.phppro.fr

Agilité, Tests Et Industrialisation

  • 1.
    Agilité, Tests etindustrialisationoù comment maîtriser votre businessOlivier Hoareau – PHPPRO23 Septembre 2009www.phppro.fr
  • 2.
    A FAIREEN COURSFINITourdeTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
  • 3.
    A FAIREEN COURSFINITourdeTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
  • 4.
    Qui suis-je ?AnimateurMé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 Agile1 an de vie sur Bordeaux (Paris, Brussels…)Bloggeur / AFUP / Conférencier
  • 5.
  • 6.
    A FAIREEN COURSFINITourdeTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
  • 7.
  • 8.
    Vous êtes plutôt…« Ons’en sort déjà, ca marche »Vous vendez (des applications)Vous savez répondre à la plupart des besoins de vos clientsVous avez créé vos processus (développement, livraison)Vous avez un catalogue produitsVous avez des compétences internes…Chez nous, ça marche !
  • 9.
    ou alors…« On saitque l’on peut mieux faire »Vous vendez (trop) cherVous ne gagnez pas tous les appels d’offresVous perdez de l’énergieVous perdez ou manquez de compétencesVous avez des applications « legacy » et/ou « zombies »Le mot « manuel » fait encore partie de votre quotidien…Oui, il y a peut être un peu de ça ?
  • 10.
    Dans tous lescas…« La dure réalité de notre quotidien »Les besoins du client changentLes délais sont toujours trop courtLes développeurs n’en font toujours qu’à leur têteLes acteurs projets ne parlent pas le même langageIl faut prévoir une phase de recette dans le planningNécessité de faire des compromis pour gagner de l’argentOn perd du temps dans la rédaction / lecture des documents…C’est notre quotidien !
  • 11.
    Prise de conscience:« Ilfaut améliorer nos pratiques pour maîtrisernos coûts, nos délais et la satisfaction client »Pour ne paslivrer en retardPour ne pasperdre du temps en maintenancePour ne pasredévelopper toute l’appliPour cadrer nos développeursPour faire et maintenir notre margePour pouvoir planifierPour être compétitifOui !
  • 12.
    Barrières:« Maîtriser, oui mais… »Commentlibérer l’innovation / l’imagination ?Comment prendre en compte les compétences de chacun ?Comment ne pas imposer ?Comment contrôler ?Comment éviter de perdre du temps ?Comment ne pas tout remettre en question ?Par où commencer ?Comment ?
  • 13.
    A FAIREEN COURSFINITourdeTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
  • 14.
    Il était unefois une équipe …
  • 15.
    qui acquis desvaleurs fondamentalesEquipeApplication / LogicielCollaborationAcceptation du changementSource : Wikipédia, http://fr.wikipedia.org/wiki/M%C3%A9thode_agile
  • 16.
    qui adhéra à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/
  • 17.
    qui utilisa levocabulaire « agile »Itération / SprintScrum / XPVélocité / ValeurBacklogPost-itUser StoryPlanning gameBilan / RetrospectiveStand Up Meeting / Daily ScrumP.O : Product Owner/ S.M : Scrum MasterUtilisateur(s) / ClientDéveloppeur(s)
  • 18.
    qui mis enplace une organisation « agile »Les UTILISATEURSLes DEVELOPPEURSLe PRODUCT OWNERLe SCRUM MASTERImages empreintées à http://borisgloger.com
  • 19.
    qui organisa sontempsen itérations fixes (ex: 2 semaines)J0Préparation contenu itération / Tableau des Posts-itsJ1 … J10Production des posts-itsJ10DémoBilan / Retrospective / FeedbackPendant l’itération (planifié par post-it si possible)Livraison / Déploiement de l’itération précédenteAtelier de conception improviséTraitements des bugs de prod (mode imprévu)
  • 20.
    qui mis enœuvre des pratiques agiles*Stand 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…* Pas forcément toutes les pratiques, et progressivement
  • 21.
    qui s’auto-contrôlaContrôles régulierdes pratiquesBurndownChart PlanningMise en place de règles Bilan  feedback  nouvelles règlesCouverture de Tests  RobustesseVérification du respect des conventions  MaintenabilitéDojo et Revue de code  Evolutivité / Modularité / Réutilisabilité (Archi.)…Contrôles automatisés de l’applicationTaille du code / répartition du codeTests UnitairesTests fonctionnelsTests de non-régressionsTests d’intégrationsTests d’IHM…Métriques
  • 22.
    Source : ScrumAlliance,http://www.frenchsug.org… avec des BurndownCharts
  • 23.
    Source : http://www.typeoneerror.com…en mesurant sa couverture de code
  • 24.
    … en réalisantses Bilans / RétrospectivesPointspositifsProblèmesrencontrésActionsbénéfiquesà renouvelerIdéesà tester
  • 25.
    qui s’outillaCapitalisation Wiki(ex: Confluence)Environnement de développement (ex: Zend Studio)Gestion de sources (ex: Subversion)Réutilisation / Framework (ex: Zend Framework)Tests Unitaires (ex: PHPUnit)Packaging / Automatisation (ex: Phing / PEAR)Intégration Continue (ex: Hudson)Tests Fonctionnels Exécutables (ex: Fitnesse)Tests Graphiques (ex: Selenium)Mesure du code (ex: PHPLoc, PHPCpd…)Suivi évolutions / bugs (ex: JIRA)…
  • 26.
    qui améliora sonarchitectureProgrammation ObjetCouche ServicesMulti-contextes (web, batch, tests, …)Design PatternsWeb services & RESTDécoupage en modulesTestabilité (« Bouchonnabilité »)Multi-base de données / BdDNon RelationnellesLibrairie technique interneLibrairie fonctionnelle interne…
  • 27.
    qui fit émergeretrespecta ses conventionsSocialesHorairesEngagementsFichiers / Classes / MéthodesNommageEncodage / TailleArchitectureGrands PrincipesCouchesTests…« L’excellence attire l’excellence »
  • 28.
    qui livra régulièrementdes évolutionsT0T0+1moisT0+2moisT0+3moisT0+4moisLivraisonLivraisonLivraisonLivraisonIt.#1It.#2It.#5It.#8It.#0It.#3It.#4It.#6It.#7
  • 29.
  • 30.
    Ils « vivent » l’« agile »1Grand Compte Service Public – Projet de 25 dév. / 50 pers.1 Acteur 1% Logement –Projet de 15 dév. / 30 pers.1 Grand Compte Telecom – Projet de 4 dév. / 8 pers.1 Startup Tchat Virtuel – Projet de 3 dév. / 6 pers.1 Grand Compte Service Public – Projet de 4 dév. / 7 pers.1 SSII Suisse – Projet de 1 dév. / 2 pers.et vous ?
  • 31.
    A FAIREEN COURSFINITourdeTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
  • 32.
    Usine de Développement:Industrialisation PHP
  • 33.
    Ma définition del’industrialisationINDUSTRIALISATIONMONOMULTIMA PRATIQUEOUTILSTECHNIQUESPRATIQUES
  • 34.
    Une vraie usineprofessionnelleCapitalisation Wiki  ConfluenceEnvironnement de développement  Eclipse,Zend StudioGestion de sources Subversion, GitRéutilisation / Framework  Zend Framework, SymfonyTests Unitaires PHPUnitPackaging / Automatisation  Phing/ PEARIntégration Continue  Hudson, PHPUnderControlTests Fonctionnels Exécutables  FitnesseTests Graphiques  SeleniumMesure du code  PHPLoc, PHPCpd, Pdepend, CodeSnifferSuivi évolutions / bugs  JIRA…
  • 35.
    ParamètresT.UCe qui testeLOGIQUECequi est testéENV / SYSCe qui interagieRetoursExceptionsQu’est-ce qu’un test unitaire ?Vérifie que l’envoie dela liste des lettresen recommandéElectronique d’hier paremail fonctionneDemande la liste des lettresRecommandé à la BDD,Construit et déclenche / commande l’envoie d’emailEnvoie des emails via le réseauExécute une requête sur la BDDLit / Ecrit dans des fichiers…
  • 36.
    TDD : TestDrivenDevelopment« Test First » : coder le test avant le codeConstruire / Designer le code « au fil de l’eau »TDD : 3 fois plus de temps à développer, 10 fois moins de problème à l’arrivée.Automatisation des T.U : base de l’usine de développement
  • 37.
    Pourquoi TDD ?Testsoublié si à la finFort impact positif sur le Design (Architecture)M’oblige à développer le strict nécessairePlus robusteTests automatisables  intégration continueM’oblige à être modulaire pour bouchonner« Je n’ai plus peur de toucher le code »« Je n’ai plus peur de supprimer du code »…
  • 38.
    Exemple TDD /PHPUnit« Développer une méthode de récupération de la liste des commandes d’une date par webservice »
  • 39.
    Je développe letest du cas simple…
  • 40.
    …ensuite, le codepour faire passer le test
  • 41.
    Je développe letest du cas d’erreur…Test… je refactore et développe le codeCode
  • 42.
    TDD : uneapproche systématiqueTest du cas nominalCode du cas nominalTest du cas d’erreurCode du cas d’erreurTest du / des cas aux limitesCode du / des cas aux limites= Robustesse, Bouchon, Simplicité et Modularité
  • 43.
    Testabilité du codePHPNatifPHPSupportPHPWeb
  • 44.
    Qu’est-ce qu’un testfonctionnel ?Un test écrit dans un vocabulaire fonctionnelUn test écrit de préférence par un fonctionnelUn test décrivant une fonctionnalitéUn test non contraint, en apparence, par la techniqueUn test lisible sans connaissances techniquesUn test de non regréssion des fonctionnalitésoutils T.D.R = Test DRIVEN REQUIREMENTS
  • 45.
    T.D.R : Quelsavantages ?Simple + Efficace : WikiRemplacement possible du CdC (Word  Wiki)Visibilité temps réel sur l’accompli / non accompliTests de non régression temps réel / à la demandeVecteur de formalisation des évolutionsOutil de démo / bilan de fin d’itérationVocabulaire universel, i.e. « compris par tous »Outil pour tester le comportement de l’applicationOUTIL de PREDILECTION DE LA « MOA AGILE »
  • 46.
    T.D.R : Lesoutils du marchéFitnesse Open Source / FreeGreenPepper  Open Source / CommercialVoir, en BehaviourDrivenDevelopment (dérivé) :JbehaveRobotFramework…
  • 47.
    DEVBUILDDEPLOYINTEGS.I.Une usine dedéveloppement typique© OCTO Technology - Université du Système d’Information47132integ.myapp.com*/2 * * * *SVNdev.myapp.comTDDon-demandon-commitRUNPROJECTT.U6nightlyTracker+Backlogon-demandTDRQualité1,5,7nightly(pre-)prod.myapp.comREPORT 4
  • 48.
    Construire sa Librairiecommune« à n’utiliser qu’en cas de besoin »Librairie de composants techniques et/ou fonctionnelsSurcouche du framework choisi (ex: ZF)Cache la complexité / Paradigme « convention over configuration »Minimal, évolutif, réactif, en constante améliorationRationalisation arborescence fichiersGérer le tranverse : boostraps, conf, bdd…Capitalisation / FactorisationSi pas présent dans la lib, les équipes le développentContribuez à la lib via le SVNMaintenu / ModéréConventions et critères qualité pour donner l’exemple
  • 49.
    Les 10 commandementsdu développeurFaire simple ET propreDévelopper en TDD : le test d’abord, le code ensuiteCommitter si tous les tests de l’application sont en succèsRespecter des conventions de codage connus en dehors de l'entrepriseDévelopper 1 fois, Réutiliser plusieurs foisTester unitairement toutes les fonctionnalités du coeur de l'applicationUtiliser les comparaisons de valeurs ET de types (===, !==)Réaliser systématiquement des implémentation mocks (bouchons)Ne pas dépasser plus de 80 lignes aérées et commentées pour une fonction/méthodeBanir « l’écran noir » de mon quotidienBonus: Always have fun !
  • 50.
  • 51.
    A FAIREEN COURSFINITourdeTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
  • 52.
    Vos perspectives…BossGeekAlignementRéactivitéFlexibilitéAdaptabilitéRéutilisabilitéVisibilitéAutomatisationCollaboratifMono /Multi…Maîtrise du déploiementDév. Procédurale  Objet*Capitalisation interneBouchons / TestabilitéIntégration ContinueModernitéModularitéEvolutivitéMaintenabilité…* optimisée / efficace
  • 53.
    Par où commencerSefaire coacher (méthodo / technique)Pour être pris en main / conseilléPour ne pas perdre du tempsPour passer les obstacles en étant conscientPour choisir et mettre en place les bons outilsPour faire par vous-même dès le débutChoisir un projet-test (1ère implémentation)Pour appréhender / se roderPour avoir un succès à raconter / un exemple à suivre
  • 54.
    Pour démarrer, vouspensez à…un projet ?une équipe ?une mission ?un client ?une période ?
  • 55.
    A FAIREEN COURSFINITourdeTableIntro5’10’EquipeAgileUdD30’40’What’sNext ??5’30’
  • 56.
  • 57.