Petit Déjeuner EUROSITES GEORGE V Industrialisation PHP Hervé Leclerc : CTO Alter Way Solutions
<ul>Agenda </ul>Point de situation Constat Objectifs de l'industrialisation Défis Solutions Axes IDE + SCM Frameworks Test...
<ul>Constat </ul>L'utilisation de PHP en  entreprise  hors des directions métiers et gouvernée par la DSI est relativement...
<ul>Constat </ul>Les DSI se retrouvent désormais  confrontées  à différentes  problématiques
Applicatifs  hétérogènes <ul>Constat </ul>
<ul>Constat </ul>Bonnes pratiques  de développement  non définies  ou  dépendantes  des applicatifs
<ul>Constat </ul>Qualité de code  disparate
<ul>Constat </ul>Base de code  non testée  de manière  automatique
<ul>Constat </ul>Pas ou peu  d'indicateurs de  qualité , de  performance , de  maintenabilité  du code
<ul>Constat </ul>Pas de processus  unifié  sur  l'ensemble  des acteurs
<ul>Constat </ul>Pression  continue  de la production
<ul>Industrialisation : une définition </ul>Mise en œuvre de  pratiques  et  d'outils  visant à rendre les logiciels produ...
<ul>Objectifs </ul>Gagner du temps en  automatisant  au maximum toutes les tâches  récurrentes
<ul>Objectifs </ul>Gagner en  qualité  (documentation, tests unitaires, normes, respect des licences, mutualisation…)
<ul>Objectifs </ul>Raccourcir  les cycles de mise en production
<ul>Objectifs </ul>Suivre  l’évolution  des projets par des  indicateurs clés
<ul>Défis </ul>Exemples de défis quotidiens <ul><li>65 portails  à refaire en  6 mois
120 événements  par an, sur  150 serveurs
6 personnes  pour mettre à niveau  350 intranets
Une  application sur une ville :  12  villes pour Noël,  2 pays  l’an prochain
Un employé  à temps plein  pour le déploiement </li></ul>
<ul>Outillage </ul><ul><li>Les outils sont  nombreux  et  dissociés
Il faut du temps  pour les  mettre en place  et les  entretenir
Pour de  nombreux  petits projets, il faut les  automatiser </li></ul>
<ul>Agenda </ul>Point de situation Constat Objectifs de l'industrialisation Défis Solutions Axes IDE + SCM Frameworks Test...
<ul>Axes </ul>3 axes majeurs <ul><li>Libération du code
Capitalisation
Implication des utilisateurs </li></ul>
<ul>Axes -> Relations </ul>● IDE ● Framework ● Conception ● Déploiement ● SCM ● Tests ● IC ● Docs Techniques ● Méthodes ● ...
<ul>IDE </ul>IDE  :  I ntegrated  D evelopment  E nvironment
<ul>IDE </ul>Pourquoi utiliser un  IDE ? Un éditeur  simple  n'est souvent pas suffisant Donner aux développeurs un  envir...
<ul>IDE </ul>Comment un IDE augmente la productivité et la qualité du travail : <ul><li>En fournissant un outil d'édition ...
En utilisant des composants  réseaux ( SCM SSH/FTP/WEBDAV ...)
En gérant les différents  librairies  et  frameworks
En fournissant un environnement de  débogage  et  tests   intégrés
En facilitant la production de  documentation </li></ul>
Fonctions intégrées <ul><li>Colorisation  syntaxique
Auto-complétion
Intégration aux  dépôts de code
Intégration avec un ou plusieurs  frameworks
Débogueur
Profiler
Intégration d' outils externes (Tests unitaires, déploiement,..)
Refactoring et génération de code </li></ul>Quelques IDE open source <ul><li>Eclipse </li><ul><li>PDT, DLTK, Pulse, RT … <...
Aptana </li></ul><ul>IDE </ul>
SCM :  S ource  C ontrol  M anagement <ul><li>Gestion des  versions  et  révisions  de code
Outils très  puissants  permettant de gérer dans des dépôts centralisés ou non du code source
Facilite  le travail en équipe
Historisation  du code
Pérennité  du code
Quelques SCM open source :  </li><ul><li>Centralisés :  CVS ,  Subversion
Décentralisés :  Git ,  Bazaar ,  Mercurial </li></ul></ul><ul>SCM </ul>
<ul><li>Très souvent version  pro
Ensemble de composants  éprouvés  et  prêts à l'emploi
Cœur technique  des projets
Simplifient ,  standardisent  et  accélèrent  les développements
Imposent des  règles  strictes de développement </li></ul>Quelques Frameworks PHP <ul><li>Zend Framework
Symfony
Jelix
CakePHP
Yii
eZ Publish
Drupal
... </li></ul><ul>Frameworks </ul>
Les Tests Ils sont de plusieurs types : <ul><li>Unitaires </li><ul><li>SimpleTest
PHPUnit </li></ul><li>Fonctionnels </li><ul><li>Selenium
SimpleTest
Cucumber </li></ul><li>Performance et montée en charge </li><ul><li>JMeter
OpenSTA
Twill </li></ul></ul>Ils sont automatisés Ils fournissent des  résultats  structurés  utilisables  dans des portails de re...
Upcoming SlideShare
Loading in...5
×

Industrialisez vos projets Php

3,504

Published on

0 Comments
7 Likes
Statistics
Notes
  • Be the first to comment

No Downloads
Views
Total Views
3,504
On Slideshare
0
From Embeds
0
Number of Embeds
3
Actions
Shares
0
Downloads
0
Comments
0
Likes
7
Embeds 0
No embeds

No notes for slide

Industrialisez vos projets Php

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

×