• Save
Industrialisez vos projets Php
Upcoming SlideShare
Loading in...5
×

Like this? Share it with your network

Share
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
3,761
On Slideshare
3,740
From Embeds
21
Number of Embeds
5

Actions

Shares
Downloads
0
Comments
0
Likes
7

Embeds 21

http://paper.li 9
https://twitter.com 8
http://www.scoop.it 2
http://us-w1.rockmelt.com 1
http://a0.twimg.com 1

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. Petit Déjeuner EUROSITES GEORGE V Industrialisation PHP Hervé Leclerc : CTO Alter Way Solutions
  • 2.
      Agenda
    Point de situation Constat Objectifs de l'industrialisation Défis Solutions Axes IDE + SCM Frameworks Tests Intégration continue Audit Statique : Cornac Gestion des environnements Automatisation des déploiements Implémentation type d'une PIC Bénéfices
  • 3.
      Constat
    L'utilisation de PHP en entreprise hors des directions métiers et gouvernée par la DSI est relativement récente
  • 4.
      Constat
    Les DSI se retrouvent désormais confrontées à différentes problématiques
  • 5. Applicatifs hétérogènes
      Constat
  • 6.
      Constat
    Bonnes pratiques de développement non définies ou dépendantes des applicatifs
  • 7.
      Constat
    Qualité de code disparate
  • 8.
      Constat
    Base de code non testée de manière automatique
  • 9.
      Constat
    Pas ou peu d'indicateurs de qualité , de performance , de maintenabilité du code
  • 10.
      Constat
    Pas de processus unifié sur l'ensemble des acteurs
  • 11.
      Constat
    Pression continue de la production
  • 12.
      Industrialisation : une définition
    Mise en œuvre de pratiques et d'outils visant à rendre les logiciels produits plus robustes , tout en restant dans des délais et des coûts maîtrisés .
  • 13.
      Objectifs
    Gagner du temps en automatisant au maximum toutes les tâches récurrentes
  • 14.
      Objectifs
    Gagner en qualité (documentation, tests unitaires, normes, respect des licences, mutualisation…)
  • 15.
      Objectifs
    Raccourcir les cycles de mise en production
  • 16.
      Objectifs
    Suivre l’évolution des projets par des indicateurs clés
  • 17.
      Défis
    Exemples de défis quotidiens
    • 65 portails à refaire en 6 mois
    • 18. 120 événements par an, sur 150 serveurs
    • 19. 6 personnes pour mettre à niveau 350 intranets
    • 20. Une application sur une ville : 12 villes pour Noël, 2 pays l’an prochain
    • 21. Un employé à temps plein pour le déploiement
  • 22.
      Outillage
    • Les outils sont nombreux et dissociés
    • 23. Il faut du temps pour les mettre en place et les entretenir
    • 24. Pour de nombreux petits projets, il faut les automatiser
  • 25.
      Agenda
    Point de situation Constat Objectifs de l'industrialisation Défis Solutions Axes IDE + SCM Frameworks Tests Intégration continue Audit Statique : Cornac Gestion des environnements Automatisation des déploiements Implémentation type d'une PIC Bénéfices
  • 26.
      Axes
    3 axes majeurs
    • Libération du code
    • 27. Capitalisation
    • 28. Implication des utilisateurs
  • 29.
      Axes -> Relations
    ● IDE ● Framework ● Conception ● Déploiement ● SCM ● Tests ● IC ● Docs Techniques ● Méthodes ● Bug Tracking ● Tests Fonctionnels ● Documentation Utilisateur ● Debugging
  • 30.
      IDE
    IDE  : I ntegrated D evelopment E nvironment
  • 31.
      IDE
    Pourquoi utiliser un IDE ? Un éditeur simple n'est souvent pas suffisant Donner aux développeurs un environnement complet qui accélère et simplifie son travail
  • 32.
      IDE
    Comment un IDE augmente la productivité et la qualité du travail :
    • En fournissant un outil d'édition puissant , graphique
    • 33. En utilisant des composants réseaux ( SCM SSH/FTP/WEBDAV ...)
    • 34. En gérant les différents librairies et frameworks
    • 35. En fournissant un environnement de débogage et tests intégrés
    • 36. En facilitant la production de documentation
  • 37. Fonctions intégrées
    • Colorisation syntaxique
    • 38. Auto-complétion
    • 39. Intégration aux dépôts de code
    • 40. Intégration avec un ou plusieurs frameworks
    • 41. Débogueur
    • 42. Profiler
    • 43. Intégration d' outils externes (Tests unitaires, déploiement,..)
    • 44. Refactoring et génération de code
    Quelques IDE open source
    • Eclipse
      • PDT, DLTK, Pulse, RT …
    • NetBeans
    • 45. Aptana
      IDE
  • 46. SCM : S ource C ontrol M anagement
    • Gestion des versions et révisions de code
    • 47. Outils très puissants permettant de gérer dans des dépôts centralisés ou non du code source
    • 48. Facilite le travail en équipe
    • 49. Historisation du code
    • 50. Pérennité du code
    • 51. Quelques SCM open source :
      • Centralisés : CVS , Subversion
      • 52. Décentralisés : Git , Bazaar , Mercurial
      SCM
  • 53.
    • Très souvent version pro
    • 54. Ensemble de composants éprouvés et prêts à l'emploi
    • 55. Cœur technique des projets
    • 56. Simplifient , standardisent et accélèrent les développements
    • 57. Imposent des règles strictes de développement
    Quelques Frameworks PHP
      Frameworks
  • 65. Les Tests Ils sont de plusieurs types :
    • Unitaires
    • Fonctionnels
    • Performance et montée en charge
    Ils sont automatisés Ils fournissent des résultats structurés utilisables dans des portails de restitution
      Tests
  • 71.
      Intégration Continue
  • 72.
      Intégration Continue
  • 73.
      Intégration Continue
    Permet de valider , vérifier au fil de l'eau toutes les modifications effectuées sur un code source
  • 74.
      Intégration Continue
    Permet de supprimer les effets négatifs des cycles en V
  • 75.
      Intégration Continue
    Elle met en œuvre tous les outils et concepts vus précédemment
  • 76.
      Intégration Continue
    Tous les processus sont automatisés
  • 77.
      Intégration Continue
    La qualité du code est en permanence mesurée (couverture des tests unitaires et fonctionnels )
  • 78.
      Intégration Continue
    Les indicateurs sont rassemblés dans une interface de présentation (Sonar/PHPUnderControl) ou Jenkins elle même
  • 79.
      Intégration Continue
    La documentation est aussi générée automatiquement dans ces processus
  • 80.
      Focus Qualimétrie
  • 81.
      Focus Qualimétrie 
    phpcpd PHP_CodeSniffer Plugin
  • 82.
      Jenkins
  • 83.
      Jenkins
  • 84.
      Jenkins
  • 85.
      Jenkins
  • 86. Architecture et conception Duplications Test unitaires Complexité Bogues potentiels Règles de codage Commentaires
      Sonar
  • 87.
      Sonar
  • 88.
      Sonar
  • 89.
      PHPUnderControl
  • 90.
      PHPUnderControl
  • 91.
      Doxygen / PhpDoc
    Doxygen PhpDocumentor
  • 92.
      Cornac
      Audit Statique
  • 93.
    • Cornac : auditeur statique pour PHP
    • 94. Édité par Alter Way, open source
    • 95. https://github.com/alterway/cornac
    • 96. Exécution automatique
    • 97. Analyse sans exécution
    • 98. Scrute l'application dans son ensemble
    • 99. Proche de PHPMD et PHPDepend
      Cornac
  • 100.
    • Inventaire d'application
      • Prendre du recul sur l'application
      • 101. Lister les noms utilisés
      • 102. Lister les fonctionnalités utilisées
      • 103. Voir rapidement les incohérences techniques
    • Aspects techniques
      • Lister tous les aspects techniques
      • 104. Fonctionnalités PHP
      • 105. Fonctionnalités avancées
      • 106. Fonctionnalités obsolètes
      • 107. Dépendances
    • Migration 5.3
      • Fonctions obsolètes
      • 108. Passage par référence
      • 109. Référence après « new »
      • 110. Ex : mktime ne prend plus 7 paramètres
    • Nom de structure
      • Extrait toutes les structures nommées
      • 111. Étudie leurs conventions
      • 112. Étudie leur ensemble
      • 113. Étudie leur sémantique
      Cornac -> Principales fonctions
  • 114. # ./bin/cornac -I spotweb.ini # « Tokenizeur » # Auditeur # Done
      Cornac -> inventaire
  • 115.
      Cornac -> inventaire
  • 116.
      Cornac -> Cartographie
    Réseau d'inclusion Utilisation des constantes Hiérarchies
  • 117.
      Relations
    - Eclipse, NetBeans, Aptana - Zend, Symfony, Jelix, Yii, Cakephp, Drupal, eZ - ArgoUML, StarUML, PowerArchictect - Phing, Capistrano, Fabric - Hg, SVN, Git, CVS - SimpleTest, UnitTest, PHPUnit, PHPMD, PHPCD, PHPCS - Jenkins, Hudson, PhpUnderControl - Doxygen, PHPdocs - Agilefant, Xplanner, IceScrum, Agilo,XPStoryStudio - Jira, Redmine, Mantis - Selenium, GreenPaper - Xdebug, cachegrind, wireshark - Selenium, Httperf, Jmeter, Funkload - Docbook
  • 118.
      Gestion des environnements
    Quatre types d'environnements classiques : Développement
      • En local ou sur un serveur spécialisé
      • 122. Débogueur et profileur disponibles
      • 123. Affichage des erreurs
    Intégration
      • Permet de d’effectuer la recette des changements
    Pré-production
      • Identique à la production (performances, configuration, données)
    Production
      • Optimisé pour la performance et la sécurité
      • 124. Supervisé pour assurer la qualité de service
  • 125.
    • Capistrano
      • Ne faire que ce qui est utile
      • 126. Le tout simplement
      • 127. ROI assuré
      • 128. Gestion des «  releases »
      • 129. Gestion des «  rollbacks »
    • Webistrano
      • Interface WEB pour Capistrano
      • 130. Gestion des droits possibles par greffons
      • 131. Comptes-rendus et historiques
      • 132. Gestion centralisée
      Automatisations
  • 133.
    • Interface Web pour gérer les déploiements
    • Gestions des différents « stages »
    • Dédramatisation des déploiements
    • Scenarii exportables (capistrano)
    • 134. Recettes disponibles dans la communauté
      Staging
  • 135.
      Capistrano
      Recettes
  • 136.
      Webistrano
  • 137.
      Webistrano
  • 138.
      Webistrano
  • 139.
      Webistrano
  • 140.
      Webistrano
  • 141.
      Webistrano
  • 142.
      Implémentation IC typique
    Jenkins
  • 143.
      Agenda
    Point de situation Constat Objectifs de l'industrialisation Défis Solutions Axes IDE + SCM Frameworks Tests Intégration continue Audit Statique : Cornac Gestion des environnements Automatisation des déploiements Implémentation type d'une PIC Bénéfices
  • 144.
      Bénéfices
    • Augmentation et uniformisation de la qualité du code
    • 145. Traçabilité
    • 146. Visibilité (indicateurs)
    • 147. Maintenabilité et pérennité
    • 148. Confort du développeur
    • 149. Montée en compétence facilitée
    • 150. Faciliter les changements d'acteurs sur un projet
    • 151. Dédramatisation des mises en production
    • 152. Relations plus fluides avec l'exploitation
  • 153.