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
13 octobre 2011 Copyright Alter Way 2
3. Constat
L'utilisation de PHP en entreprise hors des directions
métiers et gouvernée par la DSI est relativement récente
13 octobre 2011 Copyright Alter Way 3
4. Constat
Les DSI se retrouvent désormais confrontées à différentes
problématiques
13 octobre 2011 Copyright Alter Way 4
5. Constat
Applicatifs hétérogènes
13 octobre 2011 Copyright Alter Way 5
6. Constat
Bonnes pratiques de développement non définies ou
dépendantes des applicatifs
13 octobre 2011 Copyright Alter Way 6
7. Constat
Qualité de code disparate
13 octobre 2011 Copyright Alter Way 7
8. Constat
Base de code non testée de manière automatique
13 octobre 2011 Copyright Alter Way 8
9. Constat
Pas ou peu d'indicateurs de qualité, de performance, de
maintenabilité du code
13 octobre 2011 Copyright Alter Way 9
10. Constat
Pas de processus unifié sur l'ensemble des acteurs
13 octobre 2011 Copyright Alter Way 10
11. Constat
Pression continue de la production
13 octobre 2011 Copyright Alter Way 11
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 octobre 2011 Copyright Alter Way 12
13. Objectifs
Gagner du temps en automatisant au maximum toutes les
tâches récurrentes
13 octobre 2011 Copyright Alter Way 13
14. Objectifs
Gagner en qualité (documentation, tests unitaires, normes,
respect des licences, mutualisation…)
13 octobre 2011 Copyright Alter Way 14
15. Objectifs
Raccourcir les cycles de mise en production
13 octobre 2011 Copyright Alter Way 15
16. Objectifs
Suivre l’évolution des projets par des indicateurs clés
13 octobre 2011 Copyright Alter Way 16
17. Défis
Exemples de défis quotidiens
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
13 octobre 2011 Copyright Alter Way 17
18. Outillage
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
13 octobre 2011 Copyright Alter Way 18
19. 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
13 octobre 2011 Copyright Alter Way 19
20. Axes
3 axes majeurs
Libération du code
Capitalisation
Implication des utilisateurs
13 octobre 2011 Copyright Alter Way 20
22. IDE
IDE : Integrated Development Environment
13 octobre 2011 Copyright Alter Way 22
23. 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
13 octobre 2011 Copyright Alter Way 23
24. IDE
Comment un IDE augmente la productivité et la
qualité du travail :
En fournissant un outil d'édition puissant,
graphique
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
13 octobre 2011 Copyright Alter Way 24
25. IDE
Fonctions intégrées
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
Quelques IDE open source
Eclipse
PDT, DLTK, Pulse, RT …
NetBeans
Aptana
13 octobre 2011 Copyright Alter Way 25
26. SCM
SCM : Source Control Management
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 :
Centralisés : CVS, Subversion
Décentralisés : Git, Bazaar,
Mercurial
13 octobre 2011 Copyright Alter Way 26
27. Frameworks
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
Quelques Frameworks PHP
Zend Framework
Symfony
Jelix
CakePHP
Yii
eZ Publish
Drupal
...
13 octobre 2011 Copyright Alter Way 27
28. Tests
Les Tests
Ils sont de plusieurs types :
Unitaires
SimpleTest
PHPUnit
Fonctionnels
Selenium
SimpleTest
Cucumber
Performance et montée en charge
JMeter
OpenSTA
Twill
Ils sont automatisés
Ils fournissent des résultats structurés
utilisables dans des portails de
restitution
13 octobre 2011 Copyright Alter Way 28
31. Intégration Continue
Permet de valider, vérifier au fil de l'eau toutes les
modifications effectuées sur un code source
13 octobre 2011 Copyright Alter Way 31
32. Intégration Continue
Permet de supprimer les effets négatifs des cycles en V
13 octobre 2011 Copyright Alter Way 32
33. Intégration Continue
Elle met en œuvre tous les outils et concepts vus précédemment
13 octobre 2011 Copyright Alter Way 33
34. Intégration Continue
Tous les processus sont automatisés
13 octobre 2011 Copyright Alter Way 34
35. Intégration Continue
La qualité du code est en permanence mesurée (couverture des
tests unitaires et fonctionnels)
13 octobre 2011 Copyright Alter Way 35
36. Intégration Continue
Les indicateurs sont rassemblés dans une interface de présentation
(Sonar/PHPUnderControl) ou Jenkins elle même
13 octobre 2011 Copyright Alter Way 36
44. Sonar
Architecture et conception
Architecture et conception
Duplications
Duplications
Test unitaires
Test unitaires
Complexité
Complexité
Bogues potentiels
Bogues potentiels
Règles de codage
Règles de codage
Commentaires
Commentaires
13 octobre 2011 Copyright Alter Way 44
49. Doxygen / PhpDoc
Doxygen
PhpDocumentor
13 octobre 2011 Copyright Alter Way 49
50. Cornac
Audit Statique
13 octobre 2011 Copyright Alter Way 50
51. Cornac
Cornac : auditeur statique pour PHP
Édité par Alter Way, open source
https://github.com/alterway/cornac
Exécution automatique
Analyse sans exécution
Scrute l'application dans son ensemble
Proche de PHPMD et PHPDepend
13 octobre 2011 Copyright Alter Way 51
52. Cornac → Principales fonctions
Inventaire d'application Migration 5.3
Prendre du recul sur Fonctions obsolètes
l'application Passage par référence
Lister les noms utilisés Référence après « new »
Lister les fonctionnalités Ex : mktime ne prend plus 7
utilisées paramètres
Voir rapidement les
incohérences techniques
Nom de structure
Aspects techniques
Extrait toutes les structures
Lister tous les aspects
nommées
techniques
Étudie leurs conventions
Fonctionnalités PHP
Fonctionnalités avancées
Étudie leur ensemble
Fonctionnalités obsolètes
Étudie leur sémantique
Dépendances
13 octobre 2011 Copyright Alter Way 52
53. Cornac → inventaire
#./bin/cornac -I spotweb.ini
# « Tokenizeur »
# Auditeur
# Done
13 octobre 2011 Copyright Alter Way 53
57. Gestion des environnements
Quatre types d'environnements classiques :
Développement
Intégration
Pré-production
Production
Développement
En local ou sur un serveur spécialisé
Débogueur et profileur disponibles
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é
Supervisé pour assurer la qualité de service
13 octobre 2011 Copyright Alter Way 57
58. Automatisations
Capistrano
Ne faire que ce qui est utile
Le tout simplement
ROI assuré
Gestion des « releases »
Gestion des « rollbacks »
Webistrano
Interface WEB pour Capistrano
Gestion des droits possibles
par greffons
Comptes-rendus et
historiques
Gestion centralisée
13 octobre 2011 Copyright Alter Way 58
59. Staging
Interface Web pour gérer les déploiements
Gestions des différents « stages »
Dédramatisation des déploiements
Scenarii exportables (capistrano)
Recettes disponibles dans la communauté
13 octobre 2011 Copyright Alter Way 59
68. 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
13 octobre 2011 Copyright Alter Way 68
69. Bénéfices
Augmentation et uniformisation de la qualité du
code
Traçabilité
Visibilité (indicateurs)
Maintenabilité et pérennité
Confort du développeur
Montée en compétence facilitée
Faciliter les changements d'acteurs sur un
projet
Dédramatisation des mises en production
Relations plus fluides avec l'exploitation
13 octobre 2011 Copyright Alter Way 69