SlideShare une entreprise Scribd logo
1  sur  29
Outils open source pour
accélérer et industrialiser
vos développements


 Solutions Linux 2010
Qui suis-je ?

     Julien PAULI

     Formateur pour Alter Way Formation
     Architecte logiciel certifié PHP / ZendFramework
     Membre de l'AFUP
     Co-auteur du livre "ZendFramework bien développer
      en PHP"
     Contributeur open source PHP / Apache




7 avril 2010     ALTER WAY SolutionsLinux 2010            2
Plan

     Panorama des outils open source aidant à l'industrialisation

     IDE
     Gestionnaire de versions
     Frameworks
     Tests
     Métriques de code
     Déploiement / Sauvegardes
     Intégration continue
     Conclusion




7 avril 2010      ALTER WAY SolutionsLinux 2010              3
Les outils open source
     PHP : le monde du développement Web open source à
      portée




7 avril 2010     ALTER WAY SolutionsLinux 2010            4
IDE : Développez sereinement

     Un éditeur de texte "simple" est souvent trop peu

     L'IDE est l'outil que le développeur manipule tous les
      jours
              Autant qu'il soit à l'aise avec
              Et que l'outil l'aide au maximum dans son travail

     Editeur avancé
     Connecteurs réseaux (SVN, SSH, FTP, SQL)
     Gestion des librairies et frameworks
     Production de documentation




7 avril 2010              ALTER WAY SolutionsLinux 2010            5
Quelques IDE

     PDT
              Eclipse based
              Très connu des développeurs (multi langages)

     NetBeans
              Connu du monde Java
              Léger
              Percée certaine pour PHP




7 avril 2010              ALTER WAY SolutionsLinux 2010       6
IDE : PDT

     PDT
              Complétion
              Débogage
              Documentation
              Coloration
              SVN/FTP
              ...




7 avril 2010            ALTER WAY SolutionsLinux 2010   7
Gestionnaire de sources

     Le code source est la valeur produite par l'équipe
              Prenez en soin !

     SVN
              Connu, maitrisé, centralisé
     Mercurial
              Décentralisé
     GIT
              En pleine expansion !
              Décentralisé




7 avril 2010              ALTER WAY SolutionsLinux 2010    8
Frameworks

     Faire en sorte que tout le monde parle la même langue

     Il existe 20.000 manières différentes de répondre à un
      même problème
              Laquelle sera la bonne ?

     Faites confiance à des Frameworks "pros"
              Ensemble de composants prêts à l'emploi
              Règles strictes de développement

     Le framework est le coeur technique de l'équipe
              POO et Design Patterns
              Architecure logicielle, évolutions maitrisées




7 avril 2010               ALTER WAY SolutionsLinux 2010       9
Frameworks PHP

     Tous ont des licences "open" (bsd, mit ou équivalent)

     Zend Framework
              Supporté par Zend
              Rapidité prise en main

     Symfony
              Supporté par SensioLabs
              Vitesse des développements

     Solar
     CakePHP
     Copix/Jelix
     ... Yours ?


7 avril 2010              ALTER WAY SolutionsLinux 2010       10
Testabilité logicielle

     Comment démontrez-vous à vos clients que le logiciel
      répond à leurs attentes ?
              Comment assurez-vous qu'il fait ce pour quoi il a été conçu ?

     Comment maitrisez-vous le changement ?
              Avec peur ?
              Avec enthousiasme ?

     Ecrivez des tests !
              Unitaires
              Fonctionnels
              De montée en charge
              De non régréssion
              ...



7 avril 2010              ALTER WAY SolutionsLinux 2010                        11
Librairies de test

     PHPUnit
              Clone de Junit (Java)
              Très connu/reconnu dans le monde PHP
              Très bien maintenu, fortes évolutions
              Énormément de fonctionnalités (logs, analyse de couverture...)
              Outil indispensable

     SimpleTest
              maintenance moindre




7 avril 2010              ALTER WAY SolutionsLinux 2010                         12
Exemple PHPUnit
     Permet de valider le bon fonctionnement d'un algorithme
     Permet d'éviter la peur du changement




7 avril 2010     ALTER WAY SolutionsLinux 2010            13
Tests PHPUnit et code coverage
     Permet de valider le bon fonctionnement d'un algorithme
     Permet d'éviter la peur du changement




7 avril 2010       ALTER WAY SolutionsLinux 2010          14
Métriques de code
     Mesurer des caractéristiques sur le code
              Exploiter ces caractéristiques (graphes)


     PHP_LineOfCode
              Quelques statistiques numériques sur le code
     PHP_CopyPasteDetector
              Détecte les copier/coller, négatifs en OOP
     PHP_CodeSniffer
              Détecte les erreurs dans les conventions de codage
     PHP_Depend
              Analyse des dépendances objets et complexité du code
     PHP_CodeBrowser
              Présente graphiquement les logs des outils CPD et CS
     PHP_MessDetector
              Détecte les "code smells", e.g: code mort, trop de méthodes ...

7 avril 2010              ALTER WAY SolutionsLinux 2010                          15
PHP_Depends




     NumberOfMethods
     NumberOfPackages
     NumberOfClass
     CyclomaticComplexity
     AvererageNumberofDerivatedClasses
     Nombre d'appels de méthodes


    7 avril 2010   ALTER WAY SolutionsLinux 2010   16
PHP_CodeBrowser




       Revue de code
              Lignes trop grandes
              Code trop complexe (if, while, for...)
              Code mort (jamais appelé)
              Manque de commentaires
              Code non sécurisé (inclusions externes...)

    7 avril 2010           ALTER WAY SolutionsLinux 2010    17
PHP_MessDetector




   Quelques conseils pour un code plus "pro"
7 avril 2010    ALTER WAY SolutionsLinux 2010   18
Déployer , sauvegarder

     Déployer
              Passer du code source au logiciel final
              Beaucoup d'étapes intermédiaires !

     Exemple de scénario de déploiement


                1 - Tirer une version depuis le dépôt
                 1 - Tirer une version depuis le dépôt
                2 - Éventuellement modifier son arborescence
                 2 - Éventuellement modifier son arborescence
                3 - Lancer les/des tests
                 3 - Lancer les/des tests
                4 - Lancer des métriques d'analyse de code
                 4 - Lancer des métriques d'analyse de code
                5 - Créer un paquet (zip, tar, autre)
                 5 - Créer un paquet (zip, tar, autre)
                6 - Envoyer le tout quelque part (ftp, scp ...)
                 6 - Envoyer le tout quelque part (ftp, scp ...)



     Tout cela manuellement ?
7 avril 2010              ALTER WAY SolutionsLinux 2010            19
Déployer avec PHING

     PHing Is Not Gnumake
              Clone de Apache ANT
              Description de tâches à effectuer sous forme XML
              Lancement de ces tâches en ligne de commandes
              Lancements réguliers via CRON ou SVN hooks
              Dépendances entre les tâches
              Journaux en XML


     Trop de fichiers ? Utilisez des packages PHAR
              Equivalent du JAR de Java
              Inclus dans PHP5.3 nativement
              Encapsule une application entière dans un seul fichier
              Compresse / signe son contenu
              ...

7 avril 2010              ALTER WAY SolutionsLinux 2010                 20
Exemple script de déploiement PHING
         <?xml version="1.0"?>
          <?xml version="1.0"?>
         <project name="SLL" default="prepare" basedir="./library">
          <project name="SLL" default="prepare" basedir="./library">
          <property name="builddir" value="../build" override="true" />
            <property name="builddir" value="../build" override="true" />
               <target name="prepare">
                 <target name="prepare">
                    <echo msg="Making directory ./build" />
                     <echo msg="Making directory ./build" />
                   <mkdir dir="${builddir}" />
                    <mkdir dir="${builddir}" />
                    <copy todir="${builddir}" >
                     <copy todir="${builddir}" >
                       <fileset dir=".">
                        <fileset dir=".">
                       <include name="**/**" />
                        <include name="**/**" />
                       </fileset>
                        </fileset>
                   </copy>
                    </copy>
               </target>
                </target>
         <target name="phpunit" depends="prepare">
          <target name="phpunit" depends="prepare">
              <phpunit haltonfailure="true" haltonerror="true">
                <phpunit haltonfailure="true" haltonerror="true">
                       <batchtest>
                        <batchtest>
                            <fileset dir="../tests">
                             <fileset dir="../tests">
                                 <include name="*Test.php" />
                                  <include name="*Test.php" />
                            </fileset>
                             </fileset>
                       </batchtest>
                        </batchtest>
                  </phpunit>
                   </phpunit>
           </target>
            </target>
         </project>
          </project>

7 avril 2010           ALTER WAY SolutionsLinux 2010                        21
Plateforme d'Intégration Continue

     Outil qui effectue le déploiement de manière
      automatisée et régulière
              Très pratique lors de méthodes agiles
              Très proche de Phing

     Automatisez les tâches répétitives
              Assurez une qualité et un suivi du projet permanent
              Ne perdez pas le fil de vos développements




7 avril 2010              ALTER WAY SolutionsLinux 2010              22
Quelques plateformes d'Intégration Continue

      Hudson
               Java Servlet
      CruiseControl
               Java StandAlone
      Bamboo
               Propriétaire , Atlassian
      Apache Gump
               Python based
      Xinc
               PHP based




 7 avril 2010               ALTER WAY SolutionsLinux 2010   23
Intégration continue : PHPUnderControl

     PHPUnderControl, plugin pour CruiseControl
              Une JVM est requise
              Outil lourd, mais puissant
              Connu dans le monde PHP

     Apache Ant ou Phing comme taskManager

     Analyse des logs métriques du projet
              Création de graphiques




7 avril 2010              ALTER WAY SolutionsLinux 2010   24
Intégration continue : PHPUnderControl

           Configuration peu intuitive, mais puissante

<publishers>
 <publishers>
 <artifactspublisher dir="projects/${project.name}/build/api"
  <artifactspublisher dir="projects/${project.name}/build/api"
  dest="artifacts/${project.name}" subdirectory="api"/>
   dest="artifacts/${project.name}" subdirectory="api"/>
 <artifactspublisher dir="projects/${project.name}/build/coverage"
  <artifactspublisher dir="projects/${project.name}/build/coverage"
  dest="artifacts/${project.name}" subdirectory="coverage"/>
   dest="artifacts/${project.name}" subdirectory="coverage"/>
 <execute command="phpuc graph logs/${project.name} artifacts/${project.name}"/>
  <execute command="phpuc graph logs/${project.name} artifacts/${project.name}"/>
 <execute command="phpcb --log projects/${project.name}/build/logs --source projects/$
  <execute command="phpcb --log projects/${project.name}/build/logs --source projects/$
{project.name}/source --output projects/${project.name}/build/code-browser"/>
 {project.name}/source --output projects/${project.name}/build/code-browser"/>
 <artifactspublisher dir="projects/${project.name}/build/code-browser" dest="artifacts/$
  <artifactspublisher dir="projects/${project.name}/build/code-browser" dest="artifacts/$
{project.name}" subdirectory="code-browser"/>
 {project.name}" subdirectory="code-browser"/>
</publishers>
 </publishers>


      7 avril 2010       ALTER WAY SolutionsLinux 2010                           25
Intégration continue : PHPUnderControl

     Configuration peu intuitive, mais puissante




7 avril 2010      ALTER WAY SolutionsLinux 2010     26
Industrialisez !

     L'éco système PHP est riche d'outils open-sources
              Gratuits
              Indispensables
              Très souvent écrits en PHP, pour PHP

     Chacun peu mettre en place des outils
              A son rythme
              A sa manière

     Éduquez les développeurs
              Formations
              Prise de conscience de la puissance de la plateforme
              Veille technologique




7 avril 2010              ALTER WAY SolutionsLinux 2010               27
Livre blanc « Industrialisation PHP »

     Damien Seguy / Jean-Marc
      Fontaine
     Panorama des outils et
      méthodes d'industrialisation
      des développements PHP
     Publié en octobre 2009
     Plus de 1 500 téléchargements
     Livre en préparation




Téléchargement : http://www.alterway.fr/publications/livre-blanc-industrialisation-php
Blog           : http://www.industrialisation-php.com/
7 avril 2010           ALTER WAY SolutionsLinux 2010                                     28
Merci

     Me contacter : julien.pauli@alterway.fr
     Retouver cette présentation :
      http://www.slideshare.net/jpauli

     Des questions ?




7 avril 2010      ALTER WAY SolutionsLinux 2010   29

Contenu connexe

Tendances

Django pour les développeurs Symfony (et réciproquement)
Django pour les développeurs Symfony (et réciproquement)Django pour les développeurs Symfony (et réciproquement)
Django pour les développeurs Symfony (et réciproquement)Nicolas Perriault
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIHugo Hamon
 
PHP 7.0 : aperçu des nouveautés
PHP 7.0 : aperçu des nouveautésPHP 7.0 : aperçu des nouveautés
PHP 7.0 : aperçu des nouveautésDidcode
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielleDavid Buros
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Ippon
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPkemenaran
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Ippon
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Ippon
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Jean-Marc Fontaine
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Xavier Lacot
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Ippon
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)Fabien Potencier
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonyVincent Composieux
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2Hugo Hamon
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummiesMicrosoft
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Martin Latrille
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes AgilesIppon
 

Tendances (20)

Django pour les développeurs Symfony (et réciproquement)
Django pour les développeurs Symfony (et réciproquement)Django pour les développeurs Symfony (et réciproquement)
Django pour les développeurs Symfony (et réciproquement)
 
Intégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CIIntégration Continue PHP avec Jenkins CI
Intégration Continue PHP avec Jenkins CI
 
Nouveautés php 7
Nouveautés php 7Nouveautés php 7
Nouveautés php 7
 
PHP 7.0 : aperçu des nouveautés
PHP 7.0 : aperçu des nouveautésPHP 7.0 : aperçu des nouveautés
PHP 7.0 : aperçu des nouveautés
 
Symfony Best Practices
Symfony Best PracticesSymfony Best Practices
Symfony Best Practices
 
Intégration continue & Qualité logicielle
Intégration continue & Qualité logicielleIntégration continue & Qualité logicielle
Intégration continue & Qualité logicielle
 
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
Web API & Cache, the HTTP way - Ippevent 10 Juin 2014
 
Formation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHPFormation PHP avancé - Cake PHP
Formation PHP avancé - Cake PHP
 
Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon Formation Gratuite Total Tests par les experts Java Ippon
Formation Gratuite Total Tests par les experts Java Ippon
 
Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014Formation Spring Avancé gratuite par Ippon 2014
Formation Spring Avancé gratuite par Ippon 2014
 
Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012Gestion des dépendances dans un projet PHP - RMLL 2012
Gestion des dépendances dans un projet PHP - RMLL 2012
 
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
Forum PHP 2010 - Les frameworks, essentiels dans-l-ecosysteme-php-xavier-laco...
 
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014Formation JPA Avancé / Hibernate gratuite par Ippon 2014
Formation JPA Avancé / Hibernate gratuite par Ippon 2014
 
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
symfony: Un Framework Open-Source pour les Entreprises (Solutions Linux 2008)
 
Php
PhpPhp
Php
 
Soutenance Zend Framework vs Symfony
Soutenance Zend Framework vs SymfonySoutenance Zend Framework vs Symfony
Soutenance Zend Framework vs Symfony
 
Introduction à Symfony2
Introduction à Symfony2Introduction à Symfony2
Introduction à Symfony2
 
TypeScript for dummies
TypeScript for dummiesTypeScript for dummies
TypeScript for dummies
 
Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)Présentation de Django @ Orange Labs (FR)
Présentation de Django @ Orange Labs (FR)
 
Presentation Rex Methodes Agiles
Presentation Rex Methodes AgilesPresentation Rex Methodes Agiles
Presentation Rex Methodes Agiles
 

Similaire à AlterWay SolutionsLinux Outils Industrialisation PHP

Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableChristophe Villeneuve
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la rechercheJohan Moreau
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1LbvDev
 
Annexe1 éTude Comparative Sur Les Moteurs De Recherche
Annexe1   éTude Comparative Sur Les Moteurs De RechercheAnnexe1   éTude Comparative Sur Les Moteurs De Recherche
Annexe1 éTude Comparative Sur Les Moteurs De RechercheMohamed Ben Bouzid
 
Industrialisation bar camp2010
Industrialisation bar camp2010Industrialisation bar camp2010
Industrialisation bar camp2010Lushkah911
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation Microsoft
 
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
 
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...Aref Jdey
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxBruno Cornec
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Firas Kouẞàa
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Normandie Web Xperts
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Société ELOSI
 
CV Saddam ZEMMALI Professionel Fr
CV Saddam ZEMMALI Professionel FrCV Saddam ZEMMALI Professionel Fr
CV Saddam ZEMMALI Professionel FrSaddam ZEMMALI ☁
 
Adama Coulibaly.pptx
Adama Coulibaly.pptxAdama Coulibaly.pptx
Adama Coulibaly.pptxIdrissaDembl
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps ParisLeTesteur
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPhalleck45
 
UGIF 12 2010 - informix - user group - optim dev studio 2.2.1
UGIF 12 2010 - informix - user group  - optim dev studio 2.2.1UGIF 12 2010 - informix - user group  - optim dev studio 2.2.1
UGIF 12 2010 - informix - user group - optim dev studio 2.2.1UGIF
 

Similaire à AlterWay SolutionsLinux Outils Industrialisation PHP (20)

Ecrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenableEcrire et déployer une appli PHP maintenable
Ecrire et déployer une appli PHP maintenable
 
Installation open erp
Installation open erpInstallation open erp
Installation open erp
 
Outils de construction pour la recherche
Outils de construction pour la rechercheOutils de construction pour la recherche
Outils de construction pour la recherche
 
Lbv Dev Meetup #1
Lbv Dev Meetup #1Lbv Dev Meetup #1
Lbv Dev Meetup #1
 
Annexe1 éTude Comparative Sur Les Moteurs De Recherche
Annexe1   éTude Comparative Sur Les Moteurs De RechercheAnnexe1   éTude Comparative Sur Les Moteurs De Recherche
Annexe1 éTude Comparative Sur Les Moteurs De Recherche
 
PHP, ce truc de vieux
PHP, ce truc de vieuxPHP, ce truc de vieux
PHP, ce truc de vieux
 
Industrialisation bar camp2010
Industrialisation bar camp2010Industrialisation bar camp2010
Industrialisation bar camp2010
 
La Meta-programmation
La Meta-programmation La Meta-programmation
La Meta-programmation
 
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 !
 
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
Structures hybrides : l'apport des infrastructures libres aux moteurs de rech...
 
Introduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à LinuxIntroduction aux logiciels libres et à Linux
Introduction aux logiciels libres et à Linux
 
Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances Audit openERP 7.0: Mise en place &Optimisation de Performances
Audit openERP 7.0: Mise en place &Optimisation de Performances
 
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
Conférence #nwx2014 - Maxime Mauchaussée - Partager du code maintenable et év...
 
Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !Devoxx 2017 : toutes les actualités technologiques à surveiller !
Devoxx 2017 : toutes les actualités technologiques à surveiller !
 
CV Saddam ZEMMALI Professionel Fr
CV Saddam ZEMMALI Professionel FrCV Saddam ZEMMALI Professionel Fr
CV Saddam ZEMMALI Professionel Fr
 
Adama Coulibaly.pptx
Adama Coulibaly.pptxAdama Coulibaly.pptx
Adama Coulibaly.pptx
 
Php sous Windows - webcamps Paris
Php sous Windows - webcamps ParisPhp sous Windows - webcamps Paris
Php sous Windows - webcamps Paris
 
Industrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHPIndustrialiser le contrat dans un projet PHP
Industrialiser le contrat dans un projet PHP
 
RAD avec IPF pour ImpressCMS 1.2
RAD avec IPF pour ImpressCMS 1.2RAD avec IPF pour ImpressCMS 1.2
RAD avec IPF pour ImpressCMS 1.2
 
UGIF 12 2010 - informix - user group - optim dev studio 2.2.1
UGIF 12 2010 - informix - user group  - optim dev studio 2.2.1UGIF 12 2010 - informix - user group  - optim dev studio 2.2.1
UGIF 12 2010 - informix - user group - optim dev studio 2.2.1
 

Plus de julien pauli

Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019julien pauli
 
PHP 7 OPCache extension review
PHP 7 OPCache extension reviewPHP 7 OPCache extension review
PHP 7 OPCache extension reviewjulien pauli
 
PHP Internals and Virtual Machine
PHP Internals and Virtual MachinePHP Internals and Virtual Machine
PHP Internals and Virtual Machinejulien pauli
 
Basics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNGBasics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNGjulien pauli
 
Mastering your home network - Do It Yourself
Mastering your home network - Do It YourselfMastering your home network - Do It Yourself
Mastering your home network - Do It Yourselfjulien pauli
 
SymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performancesSymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performancesjulien pauli
 
Php and threads ZTS
Php and threads ZTSPhp and threads ZTS
Php and threads ZTSjulien pauli
 
Symfony live 2017_php7_performances
Symfony live 2017_php7_performancesSymfony live 2017_php7_performances
Symfony live 2017_php7_performancesjulien pauli
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshopjulien pauli
 
Profiling php5 to php7
Profiling php5 to php7Profiling php5 to php7
Profiling php5 to php7julien pauli
 
PHP 7 performances from PHP 5
PHP 7 performances from PHP 5PHP 7 performances from PHP 5
PHP 7 performances from PHP 5julien pauli
 
Mysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionMysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionjulien pauli
 
Php extensions workshop
Php extensions workshopPhp extensions workshop
Php extensions workshopjulien pauli
 
Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objectsjulien pauli
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13julien pauli
 

Plus de julien pauli (20)

Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019Doctrine with Symfony - SymfonyCon 2019
Doctrine with Symfony - SymfonyCon 2019
 
Php engine
Php enginePhp engine
Php engine
 
PHP 7 OPCache extension review
PHP 7 OPCache extension reviewPHP 7 OPCache extension review
PHP 7 OPCache extension review
 
Dns
DnsDns
Dns
 
PHP Internals and Virtual Machine
PHP Internals and Virtual MachinePHP Internals and Virtual Machine
PHP Internals and Virtual Machine
 
Basics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNGBasics of Cryptography - Stream ciphers and PRNG
Basics of Cryptography - Stream ciphers and PRNG
 
Mastering your home network - Do It Yourself
Mastering your home network - Do It YourselfMastering your home network - Do It Yourself
Mastering your home network - Do It Yourself
 
SymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performancesSymfonyCon 2017 php7 performances
SymfonyCon 2017 php7 performances
 
Php and threads ZTS
Php and threads ZTSPhp and threads ZTS
Php and threads ZTS
 
Tcpip
TcpipTcpip
Tcpip
 
Symfony live 2017_php7_performances
Symfony live 2017_php7_performancesSymfony live 2017_php7_performances
Symfony live 2017_php7_performances
 
PHP 7 new engine
PHP 7 new enginePHP 7 new engine
PHP 7 new engine
 
Php7 extensions workshop
Php7 extensions workshopPhp7 extensions workshop
Php7 extensions workshop
 
Profiling php5 to php7
Profiling php5 to php7Profiling php5 to php7
Profiling php5 to php7
 
PHP 7 performances from PHP 5
PHP 7 performances from PHP 5PHP 7 performances from PHP 5
PHP 7 performances from PHP 5
 
PHP7 is coming
PHP7 is comingPHP7 is coming
PHP7 is coming
 
Mysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extensionMysqlnd, an unknown powerful PHP extension
Mysqlnd, an unknown powerful PHP extension
 
Php extensions workshop
Php extensions workshopPhp extensions workshop
Php extensions workshop
 
Understanding PHP objects
Understanding PHP objectsUnderstanding PHP objects
Understanding PHP objects
 
PHP Tips for certification - OdW13
PHP Tips for certification - OdW13PHP Tips for certification - OdW13
PHP Tips for certification - OdW13
 

AlterWay SolutionsLinux Outils Industrialisation PHP

  • 1. Outils open source pour accélérer et industrialiser vos développements Solutions Linux 2010
  • 2. Qui suis-je ?  Julien PAULI  Formateur pour Alter Way Formation  Architecte logiciel certifié PHP / ZendFramework  Membre de l'AFUP  Co-auteur du livre "ZendFramework bien développer en PHP"  Contributeur open source PHP / Apache 7 avril 2010 ALTER WAY SolutionsLinux 2010 2
  • 3. Plan  Panorama des outils open source aidant à l'industrialisation  IDE  Gestionnaire de versions  Frameworks  Tests  Métriques de code  Déploiement / Sauvegardes  Intégration continue  Conclusion 7 avril 2010 ALTER WAY SolutionsLinux 2010 3
  • 4. Les outils open source  PHP : le monde du développement Web open source à portée 7 avril 2010 ALTER WAY SolutionsLinux 2010 4
  • 5. IDE : Développez sereinement  Un éditeur de texte "simple" est souvent trop peu  L'IDE est l'outil que le développeur manipule tous les jours  Autant qu'il soit à l'aise avec  Et que l'outil l'aide au maximum dans son travail  Editeur avancé  Connecteurs réseaux (SVN, SSH, FTP, SQL)  Gestion des librairies et frameworks  Production de documentation 7 avril 2010 ALTER WAY SolutionsLinux 2010 5
  • 6. Quelques IDE  PDT  Eclipse based  Très connu des développeurs (multi langages)  NetBeans  Connu du monde Java  Léger  Percée certaine pour PHP 7 avril 2010 ALTER WAY SolutionsLinux 2010 6
  • 7. IDE : PDT  PDT  Complétion  Débogage  Documentation  Coloration  SVN/FTP  ... 7 avril 2010 ALTER WAY SolutionsLinux 2010 7
  • 8. Gestionnaire de sources  Le code source est la valeur produite par l'équipe  Prenez en soin !  SVN  Connu, maitrisé, centralisé  Mercurial  Décentralisé  GIT  En pleine expansion !  Décentralisé 7 avril 2010 ALTER WAY SolutionsLinux 2010 8
  • 9. Frameworks  Faire en sorte que tout le monde parle la même langue  Il existe 20.000 manières différentes de répondre à un même problème  Laquelle sera la bonne ?  Faites confiance à des Frameworks "pros"  Ensemble de composants prêts à l'emploi  Règles strictes de développement  Le framework est le coeur technique de l'équipe  POO et Design Patterns  Architecure logicielle, évolutions maitrisées 7 avril 2010 ALTER WAY SolutionsLinux 2010 9
  • 10. Frameworks PHP  Tous ont des licences "open" (bsd, mit ou équivalent)  Zend Framework  Supporté par Zend  Rapidité prise en main  Symfony  Supporté par SensioLabs  Vitesse des développements  Solar  CakePHP  Copix/Jelix  ... Yours ? 7 avril 2010 ALTER WAY SolutionsLinux 2010 10
  • 11. Testabilité logicielle  Comment démontrez-vous à vos clients que le logiciel répond à leurs attentes ?  Comment assurez-vous qu'il fait ce pour quoi il a été conçu ?  Comment maitrisez-vous le changement ?  Avec peur ?  Avec enthousiasme ?  Ecrivez des tests !  Unitaires  Fonctionnels  De montée en charge  De non régréssion  ... 7 avril 2010 ALTER WAY SolutionsLinux 2010 11
  • 12. Librairies de test  PHPUnit  Clone de Junit (Java)  Très connu/reconnu dans le monde PHP  Très bien maintenu, fortes évolutions  Énormément de fonctionnalités (logs, analyse de couverture...)  Outil indispensable  SimpleTest  maintenance moindre 7 avril 2010 ALTER WAY SolutionsLinux 2010 12
  • 13. Exemple PHPUnit  Permet de valider le bon fonctionnement d'un algorithme  Permet d'éviter la peur du changement 7 avril 2010 ALTER WAY SolutionsLinux 2010 13
  • 14. Tests PHPUnit et code coverage  Permet de valider le bon fonctionnement d'un algorithme  Permet d'éviter la peur du changement 7 avril 2010 ALTER WAY SolutionsLinux 2010 14
  • 15. Métriques de code  Mesurer des caractéristiques sur le code  Exploiter ces caractéristiques (graphes)  PHP_LineOfCode  Quelques statistiques numériques sur le code  PHP_CopyPasteDetector  Détecte les copier/coller, négatifs en OOP  PHP_CodeSniffer  Détecte les erreurs dans les conventions de codage  PHP_Depend  Analyse des dépendances objets et complexité du code  PHP_CodeBrowser  Présente graphiquement les logs des outils CPD et CS  PHP_MessDetector  Détecte les "code smells", e.g: code mort, trop de méthodes ... 7 avril 2010 ALTER WAY SolutionsLinux 2010 15
  • 16. PHP_Depends  NumberOfMethods  NumberOfPackages  NumberOfClass  CyclomaticComplexity  AvererageNumberofDerivatedClasses  Nombre d'appels de méthodes 7 avril 2010 ALTER WAY SolutionsLinux 2010 16
  • 17. PHP_CodeBrowser  Revue de code  Lignes trop grandes  Code trop complexe (if, while, for...)  Code mort (jamais appelé)  Manque de commentaires  Code non sécurisé (inclusions externes...) 7 avril 2010 ALTER WAY SolutionsLinux 2010 17
  • 18. PHP_MessDetector  Quelques conseils pour un code plus "pro" 7 avril 2010 ALTER WAY SolutionsLinux 2010 18
  • 19. Déployer , sauvegarder  Déployer  Passer du code source au logiciel final  Beaucoup d'étapes intermédiaires !  Exemple de scénario de déploiement 1 - Tirer une version depuis le dépôt 1 - Tirer une version depuis le dépôt 2 - Éventuellement modifier son arborescence 2 - Éventuellement modifier son arborescence 3 - Lancer les/des tests 3 - Lancer les/des tests 4 - Lancer des métriques d'analyse de code 4 - Lancer des métriques d'analyse de code 5 - Créer un paquet (zip, tar, autre) 5 - Créer un paquet (zip, tar, autre) 6 - Envoyer le tout quelque part (ftp, scp ...) 6 - Envoyer le tout quelque part (ftp, scp ...)  Tout cela manuellement ? 7 avril 2010 ALTER WAY SolutionsLinux 2010 19
  • 20. Déployer avec PHING  PHing Is Not Gnumake  Clone de Apache ANT  Description de tâches à effectuer sous forme XML  Lancement de ces tâches en ligne de commandes  Lancements réguliers via CRON ou SVN hooks  Dépendances entre les tâches  Journaux en XML  Trop de fichiers ? Utilisez des packages PHAR  Equivalent du JAR de Java  Inclus dans PHP5.3 nativement  Encapsule une application entière dans un seul fichier  Compresse / signe son contenu  ... 7 avril 2010 ALTER WAY SolutionsLinux 2010 20
  • 21. Exemple script de déploiement PHING <?xml version="1.0"?> <?xml version="1.0"?> <project name="SLL" default="prepare" basedir="./library"> <project name="SLL" default="prepare" basedir="./library"> <property name="builddir" value="../build" override="true" /> <property name="builddir" value="../build" override="true" /> <target name="prepare"> <target name="prepare"> <echo msg="Making directory ./build" /> <echo msg="Making directory ./build" /> <mkdir dir="${builddir}" /> <mkdir dir="${builddir}" /> <copy todir="${builddir}" > <copy todir="${builddir}" > <fileset dir="."> <fileset dir="."> <include name="**/**" /> <include name="**/**" /> </fileset> </fileset> </copy> </copy> </target> </target> <target name="phpunit" depends="prepare"> <target name="phpunit" depends="prepare"> <phpunit haltonfailure="true" haltonerror="true"> <phpunit haltonfailure="true" haltonerror="true"> <batchtest> <batchtest> <fileset dir="../tests"> <fileset dir="../tests"> <include name="*Test.php" /> <include name="*Test.php" /> </fileset> </fileset> </batchtest> </batchtest> </phpunit> </phpunit> </target> </target> </project> </project> 7 avril 2010 ALTER WAY SolutionsLinux 2010 21
  • 22. Plateforme d'Intégration Continue  Outil qui effectue le déploiement de manière automatisée et régulière  Très pratique lors de méthodes agiles  Très proche de Phing  Automatisez les tâches répétitives  Assurez une qualité et un suivi du projet permanent  Ne perdez pas le fil de vos développements 7 avril 2010 ALTER WAY SolutionsLinux 2010 22
  • 23. Quelques plateformes d'Intégration Continue  Hudson  Java Servlet  CruiseControl  Java StandAlone  Bamboo  Propriétaire , Atlassian  Apache Gump  Python based  Xinc  PHP based 7 avril 2010 ALTER WAY SolutionsLinux 2010 23
  • 24. Intégration continue : PHPUnderControl  PHPUnderControl, plugin pour CruiseControl  Une JVM est requise  Outil lourd, mais puissant  Connu dans le monde PHP  Apache Ant ou Phing comme taskManager  Analyse des logs métriques du projet  Création de graphiques 7 avril 2010 ALTER WAY SolutionsLinux 2010 24
  • 25. Intégration continue : PHPUnderControl  Configuration peu intuitive, mais puissante <publishers> <publishers> <artifactspublisher dir="projects/${project.name}/build/api" <artifactspublisher dir="projects/${project.name}/build/api" dest="artifacts/${project.name}" subdirectory="api"/> dest="artifacts/${project.name}" subdirectory="api"/> <artifactspublisher dir="projects/${project.name}/build/coverage" <artifactspublisher dir="projects/${project.name}/build/coverage" dest="artifacts/${project.name}" subdirectory="coverage"/> dest="artifacts/${project.name}" subdirectory="coverage"/> <execute command="phpuc graph logs/${project.name} artifacts/${project.name}"/> <execute command="phpuc graph logs/${project.name} artifacts/${project.name}"/> <execute command="phpcb --log projects/${project.name}/build/logs --source projects/$ <execute command="phpcb --log projects/${project.name}/build/logs --source projects/$ {project.name}/source --output projects/${project.name}/build/code-browser"/> {project.name}/source --output projects/${project.name}/build/code-browser"/> <artifactspublisher dir="projects/${project.name}/build/code-browser" dest="artifacts/$ <artifactspublisher dir="projects/${project.name}/build/code-browser" dest="artifacts/$ {project.name}" subdirectory="code-browser"/> {project.name}" subdirectory="code-browser"/> </publishers> </publishers> 7 avril 2010 ALTER WAY SolutionsLinux 2010 25
  • 26. Intégration continue : PHPUnderControl  Configuration peu intuitive, mais puissante 7 avril 2010 ALTER WAY SolutionsLinux 2010 26
  • 27. Industrialisez !  L'éco système PHP est riche d'outils open-sources  Gratuits  Indispensables  Très souvent écrits en PHP, pour PHP  Chacun peu mettre en place des outils  A son rythme  A sa manière  Éduquez les développeurs  Formations  Prise de conscience de la puissance de la plateforme  Veille technologique 7 avril 2010 ALTER WAY SolutionsLinux 2010 27
  • 28. Livre blanc « Industrialisation PHP »  Damien Seguy / Jean-Marc Fontaine  Panorama des outils et méthodes d'industrialisation des développements PHP  Publié en octobre 2009  Plus de 1 500 téléchargements  Livre en préparation Téléchargement : http://www.alterway.fr/publications/livre-blanc-industrialisation-php Blog : http://www.industrialisation-php.com/ 7 avril 2010 ALTER WAY SolutionsLinux 2010 28
  • 29. Merci  Me contacter : julien.pauli@alterway.fr  Retouver cette présentation : http://www.slideshare.net/jpauli  Des questions ? 7 avril 2010 ALTER WAY SolutionsLinux 2010 29