7. Le Joel Test
1- Utilisez-vous un gestionnaire de sources ?
2- Vos binaires sont-ils assemblés en une fois ?
3- Vos binaires sont-ils produits quotidiennement ?
4- Avez-vous un gestionnaire d'anomalies ?
5- Le code est-il corrigé avant d'être étendu ?
6- Avez-vous un planning à jour ?
7- Avez-vous des spécifications ?
8- Vos développeurs sont-ils dans un lieu calme ?
9- Avez-vous les meilleurs outils lié à votre budget ?
10- Avez-vous des testeurs ?
11- Les candidats écrive du code ?
12- Les développeurs font-ils faire des tests par des passants ?
8. Et équipe qui ne fournit pas un niveau de qualité consistant
Le Joel Test
Si vous avez moins de 10
au Test de Joel
Vous avez de sérieux problèmes !
9. Le Joel Test
1- Utilisez-vous un gestionnaire de sources ?
2- Vos binaires sont-ils assemblés en une fois ?
3- Vos binaires sont-ils produits quotidiennement ?
4- Avez-vous un gestionnaire d'anomalies ?
5- Le code est-il corrigé avant d'être étendu ?
6- Avez-vous un planning à jour ?
7- Avez-vous des spécifications ?
8- Vos développeurs sont-ils dans un lieu calme ?
9- Avez-vous les meilleurs outils lié à votre budget ?
10- Avez-vous des testeurs ?
11- Les candidats écrive du code ?
12- Les développeurs font-ils faire des tests par des passants ?
10. Joel Test
Référentiel
Gestion des conflits
Historique
Reproductibilité
Traçabilité
Visibilité (Fisheye, SVNSearch)
Outils : SVN, Mercurial, VSS
1- Un gestionnaire de sources
11. Joel Test
Sinon Il est source d'erreurs
Sinon il est joué moins souvent
Sinon il dépend de certaines personnes
Sinon les risques d’échec augmentent à
l'approche de la livraison
Mais Il faut aller du début à jusqu'au bout !
Outils de build : Maven, Ant, NAnt
2 - Assemblage en une étape
12. Joel Test
3 - L’assemblage quotidien
Usine de build : Cron, CruiseControl(.net), Hudson, Bambou, ...
Un nouveau jour se lève
Prévenir plutôt que guérir
Objectivité (« ça marche chez moi ! »)
Donner confiance
Prise de conscience de l'impact d'un commit
Et les tests !
13. Joel Test
9- Vous n’avez pas les meilleurs outils que
vous puissiez vous payer ?
De gratuit à très cher
Adaptés ou non ?
Modernes ou historiques ?
Maitrisé par vos équipes ?
Il en existe beaucoup ! De gratuit ou très cher
Simples ou trop compliqué
14. Joel Test
9- Les meilleurs outils possible
3 - Assemblage quotidien
2 - Assemblage en une étape
1- Un gestionnaire de sources
4 points de gagnés !
16. La qualité
– Niveau 0: Prototype / Coin de table : l'idée
– Niveau 1: Binaire interne : l'équipe
– Niveau 2: Diffusion publique non supportée
– Niveau 3: Support en production
Les niveaux de finition
17. La qualité
– Niveau 0 - Prototype : A chaque grand changement
– Niveau 1 - Equipe : Régulièrement
– Niveau 2 - Diffusable : 1 ou 2 jours à chaque Jalon
– Niveau 3 - Production : Bientôt !
Combien de temps votre dernier livrable à passé
dans chaque niveau ?
Les niveaux de finition
19. L'agilité
– Collaboration avec le client
– Un produit opérationnel
– La réactivité face au changement
– Des hommes plutôt que des processus
Le manifeste agile
Prendre du plaisir à développer
20. L'agilité
– Livraison fréquentes
– Cycles courts
– Une Equipe
– Rythme soutenable
– Produit en état de marche en continu
Les principes
Du bon sens !
21. L'agilité
– Test Driven Developpement
– Pair Programming
– Spécifications exécutables
– Démonstration par les développeurs
3- Les pratiques
Scrum - XP - Kanban - Lean
23. Connaître la qualité des livrables
o En toute indépendance
o De façon reproductible
o Sur tous les environnements
o En permanence
Prévenir les erreurs
o Uniquement les vraies erreurs
o Compréhensibles
o Rapidement
En continu !
24. En continu
Partager un état commun
o En équipe
o Ecrire des tests probants
o Commit atomique (un seul sujet)
o Régler les problèmes sur le champ
o Commit fréquent
L'essentiel c’est
o La livraison du produit qui marche
o Satisfaire le client
o Avec de la productivité
31. Cycle de build
1. Récupération des sources
2. Récupération des binaires tiers
3. Compilation
4. Tests unitaires
5. Analyse Qualité du code
6. Tests de Déploiement / Smoke Test
7. Tests d'intégration
8. Génération de la Documentation
9. Packaging
10. Test d'installation
11. Publication des binaires
12. Notification du résultat
33. Le minimum
• 1 Machine isolée
• 1 Accès automatique aux sources
• 1 Environnement de compilation propre
• 1 Environnement d'exécution vièrge
• 1 Build automatisé (script)
• 1 Lieu de publication et mails des personnes concernées
• … Et de l'huile de coude
Le strict minimum
34. PME
o Équipe de 4 développeurs/euses
o 1 PC a 300€
Exemple PME
• SVN
o Historique sources
• Maven2
o Build source
o Gestion (versionnée)
des dépendances
• Continuum
o Build Automatique
o Tests unitaires
• ArtiFactory
o Repository Maven2
• Sonar
o Qualité code
35. • Ressources :
o Installer le serveur
Compétences Linux
o Installer les applicatifs
Compétences Java/Linux
o Paramétrer les applicatifs
o Affiner les réflexions
Coût
• 300€ (pc tour)
• 5 jours travail
PME
Exemple PME
Bravo Laurent !
36. eXo Platform
eXo Platform :
o 100+ devs sur 4 pays: Vietnam, Ukraine, France, Tunisie
o Méthodologie Agile : Scrum
o 16+ equipes
o 6 Projets Open Source sur 4 Niveaux
o eXo JCR
o eXo Portal : GateIn en co-développement avec JBoss (10p)
o eXo Content : WCM + DMS + Workflow
o eXo Collaboration, eXo Knowledge, eXo Social, xCMIS, eXo IDE
o 1 produit = eXo Platform 3.0.0
Exemple Editeur
37. eXo Platform
o Environnements cible :
o 3 AS = JBoss, Tomcat, Weblogic
o 2 OS = Windows, RHEL
o 3DB = MySQL, Oracle,
o 3 Navigateurs = Chrome, FF, IE7
=> 300+ configurations
o Code : Java, Xml, Html, JavaScript, iPhone
o IDE : Eclipse, Intellij Idea
o Source : Svn, GoogleCode, JBoss.org
Exemple Editeur
38. o Build : Maven + Extensions
o 200+ projets de build
o Usine :
o Hudson : http://builder.exoplatform.org
o Sonar (en test) : http://sonar.exoplatform.org
o Management :
o Jira : http://jira.exoplatform.org
o Fisheye + Crucible : http://fisheye.exoplatform.org
o Serveurs sur Amazon EC2 (mode hébergé) !
Exemple Editeur
Bravo Arnaud !
43. Testing
- Unitaire: JUnit, TestNG, Nunit
- Calcul de couverture : Covertura, Emma
- Graphique: Selenium, Abbot
- Performances: JMeter, SoapUI, LoadRunner, ...
- Analyse de code: FindBug, CheckStyle,
- Tests Fonctionnels exécutables:
- FitNess, GreenPepper
Outils de test
44. Usines
Le précurseur : Cruise Control
Choisir une usine :
http://confluence.public.thoughtworks.org/display/CC/CI+Feature+Matrix
Les usines modernes :
TeamCity : bonheur du développeur
Bamboo : complet et reporting
Hudson : simple et efficace
Cruise : l'intellectuel
Usines Logicielles
45. o Analyse du code
o Une plateforme de gestion de la qualité
o Suivi des règles de développement
o Suggestion d'action
Coups de coeur
http://nemo.sonar.codehaus.org - Qualité du code de Maven 3.0
La dette technique sous surveillance
http://www.sonarsource.org
46. La platform de build sur le nuage
- DEV@Cloud
- RUN@Cloud
http://www.cloudbees.com
Coups de coeur
47. o Tests fonctionnels exécutables
Coups de coeur
http://www.greenpeppersoftware.com
48. Bibliographie
- Martin Fowler
http://martinfowler.com/articles/continuousIntegration.html
- Joel on software
http://french.joelonsoftware.com/Articles/TheJoelTest.html
- Manifeste Agile
http://fr.wikipedia.org/wiki/Manifeste_agile
Merci à :
- Vincent Massol (PMD Maven, Maitre en Enterprise Build)
- Arnaud Héritier (PMD Maven, Maitre en Hudson, Confluence, Jira)
- Kohsuke Kawaguchi (pour l’invention d’hudson)