L’utilisation de PHP est aujourd’hui généralisée dans tous les départements IT. Reconnue pour son évolutivité et son développement rapide, cette technologie doit désormais répondre à de fortes attentes en termes d’exigences et de qualité.
Quels sont les outils nécessaires pour piloter une équipe de développement de taille importante et produire plusieurs centaines de site web par an ? L’heure de l’industrialisation est venue, avec la mise en place d’une planification et d’une organisation de la production de code capables de détecter les bogues avant la publication.
Nous verrons les outils et méthodes nécessaires pour piloter la conception, la production, la publication et la gestion d’équipe.
2. Qui suis-je ?
Jean-Marc Fontaine
Consultant pour Alter Way Consulting
Président de l'AFUP (Association Française des Utilisateurs de PHP)
Auteur du blog Industrialisation-PHP.com
Co-auteur du livre blanc « Industrialisation PHP »
23/09/11 2
3. Livre blanc Industrialisation PHP
Panorama des outils et méthodes
d'industrialisation des
développements PHP
Publié en octobre 2009
Plus de 2 500 téléchargements
Téléchargement : http://www.alterway.fr/publications/livre-blanc-industrialisation-php
Blog : http://www.industrialisation-php.com/
23/09/11 3
4. Ordre du jour
Qu'est-ce que l'industrialisation ?
Mettre en place un environnement de travail
Former l'équipe
Éviter de réinventer la roue
S'assurer de la qualité du code
Automatiser ce qui peut l'être
Ce n'est pas que de la théorie
23/09/11 4
6. Constat
L'utilisation de PHP en entreprise hors des directions métiers et gouvernée par la DSI
est relativement récente.
Les DSI se retrouvent désormais confrontées à différentes problématiques :
Applicatifs hétérogènes
Bonnes pratiques de développement non définies ou dépendantes des applicatifs
Qualité de code disparate
Base de code non testée de manière automatique
Pas ou peu d'indicateurs de qualité, de performance, de maintenabilité du code
Pas de processus unifié sur l'ensemble des acteurs
Pression continue de la production
23/09/11 6
7. Objectifs
Gagner du temps en automatisant au maximum toutes les tâches
récurrentes
Gagner en qualité (documentation, tests unitaires, normes, respect des
licences, mutualisation…)
Gagner en réactivité
Raccourcir les cycles de mise en production
Suivre l’évolution des projets par des indicateurs clés
23/09/11 7
8. Mise en œuvre
Pas de solution miracle valable pour tous
Les outils sont nombreux et dissociés
Il faut du temps pour les mettre en place et les entretenir
Un accompagnement est souvent nécessaire
23/09/11 8
10. Dépôt de code
Facilite le travail en équipe
Permet d'avoir un historique du code
Assure la pérennité du code
Deux approches :
Dépôts centralisés (CVS, Subversion)
Dépôts décentralisés (Git, Mercurial, Bazaar)
23/09/11 10
11. IDE
Éditeur de texte sous stéroïdes
Fonctions généralement proposées :
Colorisation syntaxique
Autocomplétion
Intégration aux dépôts de code
Intégration avec un ou plusieurs frameworks
Débogueur
Profileur
Intégration d'outils externes (Tests unitaires, déploiement, gestion de base de
données, éditeur UML, prototypage, etc.)
Standardisation des outils
Intégration dans la chaîne de production
23/09/11 11
12. Quelques IDE
Eclipse
Zend Studio
Netbeans
Aptana
Komodo
23/09/11 12
13. Environnements
Développement
En local ou sur un serveur spécialisé
Débogueur et profileur disponibles
Affichage des erreurs
Pré-production
Identique à la production (performances, configuration, données)
Permet de recetter les changements
Production
Optimisé pour la performance et la sécurité
Supervisé pour assurer la qualité de service
23/09/11 13
15. Former l'équipe
Formation professionnelle
Permet de rapidement entrer dans une nouvelle technologie
Doit être suivie de mise en pratique pour être efficace
Action ponctuelle
Veille
Permet de maintenir et de développer ses connaissances
Web, livres, magazines, conférences, etc.
Travail régulier et sur le long terme pour être payant
Doit être structurée pour être exploitable par la suite
Revue de code
Améliore la connaissance du code
Favorise la collaboration et le partage des connaissances
Peut être rendue difficile par des aspects humains (timidité, orgueil, manque de
tact)
23/09/11 15
17. Eviter de réinventer la roue
Eviter le syndrôme « Pas inventé ici »
Se concentrer sur sa valeur ajoutée
23/09/11 17
18. Frameworks
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
23/09/11 18
19. Libraries
Permettent de rapidement mettre en œuvre des fonctionnalités plus
spécialisées (Génération d'images, de fichiers PDF, etc.)
Attention à la qualité et à la pérennité
23/09/11 19
20. Design patterns
Solutions éprouvées à des problèmes récurrents
Capitalise sur l'expérience de 40 ans de programmation
Permet de mettre un nom sur une problématique et sa solution
23/09/11 20
22. Conventions
Conventions de codage
Chacun a ses habitudes
Des conventions pour que la forme ne brouille pas la compréhension du fond
Choisir une convention existante
Conventions d'architecture
Définition d'une structure normative pour les projets
Permet un démarrage plus rapide des projets
Permet une meilleure intégration dans les processus de suivi de la qualité
23/09/11 22
23. Tests automatisés
Vérifier l'adéquation de l'application avec les spécifications
Plusieurs types
Unitaires (PHPUnit, SimpleTest, Atoum)
IHM (Selenium, Watir, Sikuli)
Fonctionnels (GreenPepper)
De montée en charge (JMeter)
Etc.
Peuvent et doivent être lancés aussi souvent de possible
Pas d'intervention humaine complexe pour les lancer
Remontée d'alertes en cas de violation des spécifications
Permet le suivi dans le temps de la qualité du projet
23/09/11 23
24. Analyse statique du code
Analyze du code sans le faire fonctionner
Permet de :
Vérifier la syntaxe
Recueillir des métriques
Analyser les flux de données
Outils :
Cornac (Projet Open Source créé par Alter Way)
PHP_CodeSniffer
phploc
Phpcpd
PHP_Depend
PHPMD
23/09/11 24
25. Intégration continue
Permet de valider, vérifier au fil de l'eau toutes les modifications
effectuées sur un code source.
Permet de limiter les effets négatifs des cycles en V.
Elle met en œuvre tous les outils et concepts vus précédemment
Tous les processus sont automatisés
La qualité du code est en permanence mesurée (couverture des tests
unitaires et fonctionnels)
Les indicateurs sont rassemblés dans une interface de présentation
La documentation est aussi générée automatiquement dans ces processus
23/09/11 25
30. Automatiser ce qui peut l'être
Évite des tâches nécessaires mais répétitives, fastidieuses et à faible valeur ajoutée
Génération de code
Permet de standardiser le code de l'application
Permet de rendre plus vite autonome une nouvelle personne
Déploiement automatisé
Évite les erreurs humaines
Assure que toutes les étapes seront faites et dans le bon ordre
Permet de déployer plus vite et sur de nombreux serveurs en parallèle
Tâches répétitives
Création de dépôt de code pour un nouveau projet
Création de branches et de tags
Empaquetage de version
23/09/11 30
34. Alter Way accompagne ses clients pour industrialiser leurs développements
23/09/11 34
35. Parcours de formation de 4 mois :
Un tronc commun : les stagiaires bénéficieront d’un cursus initiatique dispensé par
l’entité Formation d’Alter Way (organisme de formation leader sur la formation
professionnelle Open Source) qui leur permettra d’acquérir une vision globale du
secteur.
L’apprentissage d’un métier : à l’issue de ce cursus commun les stagiaires auront la
possibilité de se diriger vers le métier qui leur convient le mieux : développement,
technicien système et réseau, recherche & développement, chef de projet web,
etc.
La contribution : les stagiaires, encadrés par des collaborateurs seniors,
participeront aux projets contributifs d’Alter Way.
http://www.alterway.fr/la-libre-academie
23/09/11 35