1. Outils open source pour
accélérer et industrialiser
vos développements
Solutions Linux 2010
2. Qui suis-je ?
Julien PAULI
Formateur pour Alter Way Formation
Architecte logiciel certifié PHP / ZendFramework
Membre de l'AFUP
Co-auteur du livre "ZendFramework bien développer
en PHP"
Contributeur open source PHP / Apache
7 avril 2010 ALTER WAY SolutionsLinux 2010 2
3. Plan
Panorama des outils open source aidant à l'industrialisation
IDE
Gestionnaire de versions
Frameworks
Tests
Métriques de code
Déploiement / Sauvegardes
Intégration continue
Conclusion
7 avril 2010 ALTER WAY SolutionsLinux 2010 3
4. Les outils open source
PHP : le monde du développement Web open source à
portée
7 avril 2010 ALTER WAY SolutionsLinux 2010 4
5. IDE : Développez sereinement
Un éditeur de texte "simple" est souvent trop peu
L'IDE est l'outil que le développeur manipule tous les
jours
Autant qu'il soit à l'aise avec
Et que l'outil l'aide au maximum dans son travail
Editeur avancé
Connecteurs réseaux (SVN, SSH, FTP, SQL)
Gestion des librairies et frameworks
Production de documentation
7 avril 2010 ALTER WAY SolutionsLinux 2010 5
6. Quelques IDE
PDT
Eclipse based
Très connu des développeurs (multi langages)
NetBeans
Connu du monde Java
Léger
Percée certaine pour PHP
7 avril 2010 ALTER WAY SolutionsLinux 2010 6
7. IDE : PDT
PDT
Complétion
Débogage
Documentation
Coloration
SVN/FTP
...
7 avril 2010 ALTER WAY SolutionsLinux 2010 7
8. Gestionnaire de sources
Le code source est la valeur produite par l'équipe
Prenez en soin !
SVN
Connu, maitrisé, centralisé
Mercurial
Décentralisé
GIT
En pleine expansion !
Décentralisé
7 avril 2010 ALTER WAY SolutionsLinux 2010 8
9. Frameworks
Faire en sorte que tout le monde parle la même langue
Il existe 20.000 manières différentes de répondre à un
même problème
Laquelle sera la bonne ?
Faites confiance à des Frameworks "pros"
Ensemble de composants prêts à l'emploi
Règles strictes de développement
Le framework est le coeur technique de l'équipe
POO et Design Patterns
Architecure logicielle, évolutions maitrisées
7 avril 2010 ALTER WAY SolutionsLinux 2010 9
10. Frameworks PHP
Tous ont des licences "open" (bsd, mit ou équivalent)
Zend Framework
Supporté par Zend
Rapidité prise en main
Symfony
Supporté par SensioLabs
Vitesse des développements
Solar
CakePHP
Copix/Jelix
... Yours ?
7 avril 2010 ALTER WAY SolutionsLinux 2010 10
11. Testabilité logicielle
Comment démontrez-vous à vos clients que le logiciel
répond à leurs attentes ?
Comment assurez-vous qu'il fait ce pour quoi il a été conçu ?
Comment maitrisez-vous le changement ?
Avec peur ?
Avec enthousiasme ?
Ecrivez des tests !
Unitaires
Fonctionnels
De montée en charge
De non régréssion
...
7 avril 2010 ALTER WAY SolutionsLinux 2010 11
12. Librairies de test
PHPUnit
Clone de Junit (Java)
Très connu/reconnu dans le monde PHP
Très bien maintenu, fortes évolutions
Énormément de fonctionnalités (logs, analyse de couverture...)
Outil indispensable
SimpleTest
maintenance moindre
7 avril 2010 ALTER WAY SolutionsLinux 2010 12
13. Exemple PHPUnit
Permet de valider le bon fonctionnement d'un algorithme
Permet d'éviter la peur du changement
7 avril 2010 ALTER WAY SolutionsLinux 2010 13
14. Tests PHPUnit et code coverage
Permet de valider le bon fonctionnement d'un algorithme
Permet d'éviter la peur du changement
7 avril 2010 ALTER WAY SolutionsLinux 2010 14
15. Métriques de code
Mesurer des caractéristiques sur le code
Exploiter ces caractéristiques (graphes)
PHP_LineOfCode
Quelques statistiques numériques sur le code
PHP_CopyPasteDetector
Détecte les copier/coller, négatifs en OOP
PHP_CodeSniffer
Détecte les erreurs dans les conventions de codage
PHP_Depend
Analyse des dépendances objets et complexité du code
PHP_CodeBrowser
Présente graphiquement les logs des outils CPD et CS
PHP_MessDetector
Détecte les "code smells", e.g: code mort, trop de méthodes ...
7 avril 2010 ALTER WAY SolutionsLinux 2010 15
16. PHP_Depends
NumberOfMethods
NumberOfPackages
NumberOfClass
CyclomaticComplexity
AvererageNumberofDerivatedClasses
Nombre d'appels de méthodes
7 avril 2010 ALTER WAY SolutionsLinux 2010 16
17. PHP_CodeBrowser
Revue de code
Lignes trop grandes
Code trop complexe (if, while, for...)
Code mort (jamais appelé)
Manque de commentaires
Code non sécurisé (inclusions externes...)
7 avril 2010 ALTER WAY SolutionsLinux 2010 17
18. PHP_MessDetector
Quelques conseils pour un code plus "pro"
7 avril 2010 ALTER WAY SolutionsLinux 2010 18
19. Déployer , sauvegarder
Déployer
Passer du code source au logiciel final
Beaucoup d'étapes intermédiaires !
Exemple de scénario de déploiement
1 - Tirer une version depuis le dépôt
1 - Tirer une version depuis le dépôt
2 - Éventuellement modifier son arborescence
2 - Éventuellement modifier son arborescence
3 - Lancer les/des tests
3 - Lancer les/des tests
4 - Lancer des métriques d'analyse de code
4 - Lancer des métriques d'analyse de code
5 - Créer un paquet (zip, tar, autre)
5 - Créer un paquet (zip, tar, autre)
6 - Envoyer le tout quelque part (ftp, scp ...)
6 - Envoyer le tout quelque part (ftp, scp ...)
Tout cela manuellement ?
7 avril 2010 ALTER WAY SolutionsLinux 2010 19
20. Déployer avec PHING
PHing Is Not Gnumake
Clone de Apache ANT
Description de tâches à effectuer sous forme XML
Lancement de ces tâches en ligne de commandes
Lancements réguliers via CRON ou SVN hooks
Dépendances entre les tâches
Journaux en XML
Trop de fichiers ? Utilisez des packages PHAR
Equivalent du JAR de Java
Inclus dans PHP5.3 nativement
Encapsule une application entière dans un seul fichier
Compresse / signe son contenu
...
7 avril 2010 ALTER WAY SolutionsLinux 2010 20
22. Plateforme d'Intégration Continue
Outil qui effectue le déploiement de manière
automatisée et régulière
Très pratique lors de méthodes agiles
Très proche de Phing
Automatisez les tâches répétitives
Assurez une qualité et un suivi du projet permanent
Ne perdez pas le fil de vos développements
7 avril 2010 ALTER WAY SolutionsLinux 2010 22
23. Quelques plateformes d'Intégration Continue
Hudson
Java Servlet
CruiseControl
Java StandAlone
Bamboo
Propriétaire , Atlassian
Apache Gump
Python based
Xinc
PHP based
7 avril 2010 ALTER WAY SolutionsLinux 2010 23
24. Intégration continue : PHPUnderControl
PHPUnderControl, plugin pour CruiseControl
Une JVM est requise
Outil lourd, mais puissant
Connu dans le monde PHP
Apache Ant ou Phing comme taskManager
Analyse des logs métriques du projet
Création de graphiques
7 avril 2010 ALTER WAY SolutionsLinux 2010 24
26. Intégration continue : PHPUnderControl
Configuration peu intuitive, mais puissante
7 avril 2010 ALTER WAY SolutionsLinux 2010 26
27. Industrialisez !
L'éco système PHP est riche d'outils open-sources
Gratuits
Indispensables
Très souvent écrits en PHP, pour PHP
Chacun peu mettre en place des outils
A son rythme
A sa manière
Éduquez les développeurs
Formations
Prise de conscience de la puissance de la plateforme
Veille technologique
7 avril 2010 ALTER WAY SolutionsLinux 2010 27
28. Livre blanc « Industrialisation PHP »
Damien Seguy / Jean-Marc
Fontaine
Panorama des outils et
méthodes d'industrialisation
des développements PHP
Publié en octobre 2009
Plus de 1 500 téléchargements
Livre en préparation
Téléchargement : http://www.alterway.fr/publications/livre-blanc-industrialisation-php
Blog : http://www.industrialisation-php.com/
7 avril 2010 ALTER WAY SolutionsLinux 2010 28
29. Merci
Me contacter : julien.pauli@alterway.fr
Retouver cette présentation :
http://www.slideshare.net/jpauli
Des questions ?
7 avril 2010 ALTER WAY SolutionsLinux 2010 29