Industrialisation en PHP

76
Industrialisation en PHP UTT, Troyes, France, 20 mai 2010 vendredi 28 mai 2010

description

Outils et méthodes modernes en PHP

Transcript of Industrialisation en PHP

Page 1: Industrialisation en PHP

Industrialisation en PHPUTT, Troyes, France, 20 mai 2010

vendredi 28 mai 2010

Page 2: Industrialisation en PHP

Agenda

Maîtriser les cycles de développements

Accélérer le développement PHP

Connaître et utiliser les outils et méthodes

vendredi 28 mai 2010

Page 3: Industrialisation en PHP

Qui parle?

Damien Seguy

Services expert en Open Source

Sécurité, performances,

industrialisation

Eleveurs d’elePHPants

[email protected]

vendredi 28 mai 2010

Page 4: Industrialisation en PHP

vendredi 28 mai 2010

Page 5: Industrialisation en PHP

Yes, we take

questions

vendredi 28 mai 2010

Page 6: Industrialisation en PHP

vendredi 28 mai 2010

Page 7: Industrialisation en PHP

PHP romantique

vendredi 28 mai 2010

Page 8: Industrialisation en PHP

PHP aujourd’hui

vendredi 28 mai 2010

Page 9: Industrialisation en PHP

Sur le terrain

65 portails à refaire en 6 mois

6 personnes pour mettre à niveau 350 intranets

120 événements par an, sur 150 serveurs

Une application sur une ville : 12 villes pour Noel,

2 pays l’an prochain.

Un employé à temps plein pour le déploiement

Multiplier les commandes par 6 en 2 mois

vendredi 28 mai 2010

Page 10: Industrialisation en PHP

Trois mantra

vendredi 28 mai 2010

Page 11: Industrialisation en PHP

Trois mantra

Libérez-vous du code

vendredi 28 mai 2010

Page 12: Industrialisation en PHP

Trois mantra

Libérez-vous du code

Capitalisez

vendredi 28 mai 2010

Page 13: Industrialisation en PHP

Trois mantra

Libérez-vous du code

Capitalisez

Impliquez vos utilisateurs

vendredi 28 mai 2010

Page 14: Industrialisation en PHP

∆ Conception∆ Déploiement

∆ IDE∆ Convention

∆ Docs

∆ Tests fonctionnels

∆ Tests unitaires

∆ CI

∆ VCS

∆ Méthodes

∆ Framework

∆ Bug Tracking

CodeCapitalisation

Implication

vendredi 28 mai 2010

Page 15: Industrialisation en PHP

Libérez-vous

du code

vendredi 28 mai 2010

Page 16: Industrialisation en PHP

Libérez vous du code

Le facteur bus

Ne soyez pas le seul

Le facteur WTF

Écrivez du code qui peut être compris

50% du temps consacré à la production

Ne vous mettez pas en travers du chemin

vendredi 28 mai 2010

Page 17: Industrialisation en PHP

Libérez vous du code

S’arranger pour que l’on puisse travailler sans vous

Ne vous investissez pas dans votre code

Rendez votre code accessible aux autres

vendredi 28 mai 2010

Page 18: Industrialisation en PHP

Conventions de code

vendredi 28 mai 2010

Page 19: Industrialisation en PHP

Conventions de code

Il en existe de nombreuses

PEAR, Zend Frameworks, Symfony...

Choisissez en une

Évitez de créer la votre

Cela apporte de l’unité au travail en équipe

Pour vérifier son application

Code_sniffer

vendredi 28 mai 2010

Page 20: Industrialisation en PHP

IDE

Choisissez celui qui vous convient le mieux

Évitez les éditeurs trop simples

Netbean / Symfony,

Zend tools / Zend Framework

Komodo / cakePHP

vendredi 28 mai 2010

Page 21: Industrialisation en PHP

IDE

Il faut au moins

Navigateur de code, intégration avec un framework

Editeur, coloration syntaxique, support des

encodages

intégration avec les tests unitaires

interface avec VCS

vendredi 28 mai 2010

Page 22: Industrialisation en PHP

vendredi 28 mai 2010

Page 23: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 24: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 25: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 26: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 27: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 28: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 29: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 30: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 31: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 32: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 33: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 34: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 35: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 36: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 37: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 38: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 39: Industrialisation en PHP

Frameworks

vendredi 28 mai 2010

Page 40: Industrialisation en PHP

Frameworks

Choisissez en un

Pour accélérer le développement

Pour son coté agréable et pratique

Il doit avoir

Des composants, des conventions, des tests

unitaires, des utilitaires de mise en place

Une communauté, des experts, des formations

vendredi 28 mai 2010

Page 41: Industrialisation en PHP

Au dela des frameworks

Les frameworks sont généralistes et techniques

Bâtissez votre propre bibliothèque métier

Nous verrons bientôt des bibliothèques métier

vendredi 28 mai 2010

Page 42: Industrialisation en PHP

VCS

Version Control System

Subversion, git, CVS, mercurial

Résolution des conflits

Permet le développement parallèle,

le retour en arrière, les versions.

Stocke et distribue le code

vendredi 28 mai 2010

Page 43: Industrialisation en PHP

vendredi 28 mai 2010

Page 44: Industrialisation en PHP

VCS Développement

Tests

unitaires

Suivi de

bugs

Intégration

continue

Production

VCS

Le code hors du VCS n’existe pas!

vendredi 28 mai 2010

Page 45: Industrialisation en PHP

Le coeur du développement

vendredi 28 mai 2010

Page 46: Industrialisation en PHP

∆ Conception∆ Déploiement

∆ IDE∆ Convention

∆ Docs

∆ Tests fonctionnels

∆ Tests unitaires

∆ CI

∆ VCS

∆ Méthodes

∆ Framework

∆ Bug Tracking

CodeCapitalisation

Implication

vendredi 28 mai 2010

Page 47: Industrialisation en PHP

Capitalisation

vendredi 28 mai 2010

Page 48: Industrialisation en PHP

Capitalisation

Accumuler à toutes les phases du projet

Capturer l’information au fil de l’eau

Evitez les culs de sacs

Toujours se demander qui va l’utiliser?

vendredi 28 mai 2010

Page 49: Industrialisation en PHP

Tests

unitaires

vendredi 28 mai 2010

Page 50: Industrialisation en PHP

Les tests aident à découpler

CodeProduction

Client

Évite les régressions

Préviens votre rappel

Affiche les progres

Sert de manuel

Aide aux communications

vendredi 28 mai 2010

Page 51: Industrialisation en PHP

Tests unitaires

PHP Unit : standard de facto

Simple Test, Lemon, Zend_Test, phpt

vendredi 28 mai 2010

Page 52: Industrialisation en PHP

Conception

Description générale de l’application

Documents très variés

Diagrammes d’architecture

Visio, Omnigraffle, Dia

Diagrammes UML

Diagrammes de classes, Cas d’utilisation

StarUML, ArgoUML, BOUML,

vendredi 28 mai 2010

Page 53: Industrialisation en PHP

Conception

Captures d’écran : WireFraming

Axure, Basalmiq, pencil sketching

Modèle de données

Power Architect, MySQL WorkBench

vendredi 28 mai 2010

Page 54: Industrialisation en PHP

Conception

Ayez un inventaire

Classes, méthodes, constantes, $_SESSION,

inclusions, fichiers, dossiers,...

Vérifiez l’utilisation réelle

Prévoyez de faire des allers-retours avec la réalité

La conception n’est pas la programmation

vendredi 28 mai 2010

Page 55: Industrialisation en PHP

Déploiement automatisé

Phing, maven, ant, pear

Nécessaire pour l’intégration continue

L’aspect le plus souvent négligé du développement

Obligatoire pour les grandes architectures

vendredi 28 mai 2010

Page 56: Industrialisation en PHP

∆ Conception∆ Déploiement

∆ IDE∆ Convention

∆ Docs

∆ Tests fonctionnels

∆ Tests unitaires

∆ CI

∆ VCS

∆ Méthodes

∆ Framework

∆ Bug Tracking

CodeCapitalisation

Implication

vendredi 28 mai 2010

Page 57: Industrialisation en PHP

Impliquer les

utilisateurs

vendredi 28 mai 2010

Page 58: Industrialisation en PHP

Impliquer les utilisateurs

Eviter l’effet tunnel

Savoir affronter le tsunami des questions

bugs, changements, nouveautés, adaptations,

accélérations, etc.

Rendre les utilisateurs autonome,

faire qu’ils se prennent en charge

vendredi 28 mai 2010

Page 59: Industrialisation en PHP

Bug tracker

Mantis, Trac, Redline, Jira

Rassembler les retours des utilisateurs et clients en un

seul endroit

Suivre leur évolution jusqu’à la conclusion

Permet de produire le changelog

A relier avec le VCS et le déploiement

vendredi 28 mai 2010

Page 60: Industrialisation en PHP

vendredi 28 mai 2010

Page 61: Industrialisation en PHP

vendredi 28 mai 2010

Page 62: Industrialisation en PHP

vendredi 28 mai 2010

Page 63: Industrialisation en PHP

vendredi 28 mai 2010

Page 64: Industrialisation en PHP

vendredi 28 mai 2010

Page 65: Industrialisation en PHP

vendredi 28 mai 2010

Page 66: Industrialisation en PHP

Tests fonctionnels

A base de wiki : accessibles aux non-techniciens

Collecte de tests métiers, et non plus techniques

Tests a priori, tests en direct

Les développeurs assurent la liaison avec le code

Green pepper, fitnesse, concordion

vendredi 28 mai 2010

Page 67: Industrialisation en PHP

Intégration continue

Vérification du code en tâche de fond

phpUnderControl, Rephlux, Hudson, Maven, sonar,

Xinc, script maison

Présentation en graphique des résultats

Compilation, code sniffer, tests unitaires, couverture

de code

Journaux, inclusion, performances...

vendredi 28 mai 2010

Page 68: Industrialisation en PHP

vendredi 28 mai 2010

Page 69: Industrialisation en PHP

Méthodologies

Expliquer comment on produit le code

Justifier comment on assure la qualité

Impliquer les utilisateurs!

Cycles de développement courts

Production, correction, adaptation

Méthodologies agiles :

SCRUM, XP, Lean SD, Open Unified Process

vendredi 28 mai 2010

Page 70: Industrialisation en PHP

Pratiques agiles

Les pratiques agiles sont souvent suffisantes

Codage par paire

Tester avant de coder

Cycles courts de production

Scénarios utilisateurs

Poker collectif

Point journalier (Daily Scrum)

vendredi 28 mai 2010

Page 71: Industrialisation en PHP

vendredi 28 mai 2010

Page 72: Industrialisation en PHP

La documentation

A transférer des développeurs aux utilisateurs

Les développeurs font la première version

Ajouter un système de commentaires

Voir PHP.net : les commentaires sont plus

intéressants que la documentation!

Utiliser un Wiki

Les utilisateurs font la documentation

vendredi 28 mai 2010

Page 73: Industrialisation en PHP

vendredi 28 mai 2010

Page 74: Industrialisation en PHP

Encore plus loin?

Déploiement continu (a la flickr)

Audits croisés

Audits collaboratifs

Analyse statique

vendredi 28 mai 2010

Page 75: Industrialisation en PHP

Merci!

http://www.alterway.fr/

publications/

livre-blanc-industrialisation-php

Damien Seguy :

[email protected]

vendredi 28 mai 2010