Magazine Internet

[Méthodes de développement agiles] eXtreme Programming

Publié le 07 mai 2008 par François Mottet

Voici un premier article d'une série présentant les principales méthodes de développement agiles. eXtreme Programming est une des méthodes les plus utilisées dans le développement informatique, et celle que je connais le plus.

La principale différence par rapport aux méthodes traditionnelles est d'être ouvert, flexible aux changements voulus par le client. Son mot d'ordre : pousser à extrême des pratiques simples du développement informatique.

  • puisque la revue de code est une bonne pratique, elle sera faite en permanence
  • puisque les tests sont utiles, ils seront faits systématiquement avant chaque implémentation
  • puisque la conception est importante, elle sera faite tout au long du projet
  • puisque la simplicité permet d'avancer plus vite, nous choisirons toujours la solution la plus simple
  • puisque la compréhension est importante, nous définirons et ferons évoluer ensemble des métaphores
  • puisque l'intégration des modifications est cruciale, nous l'effectuerons plusieurs fois par jour
  • puisque les besoins évoluent vite, nous ferons des cycles de développement très rapides pour nous adapter au changement

13 pratiques permettent de mettre en place la méthode eXtreme Programming :

  • Client sur site : le client ou un de ses représentant doit être en permanence avec l'équipe de développement. Il a pour rôle de répondre aux questions de l'équipe et d'avoir la vue de l'utilisateur final.
  • Planning itératif : le client propose pour chaque itération (le développement de fonctionnalités se fait par palier à durée fixe, par exemple 15 jours), un contenu de fonctionnalités qu'il voudrait voir implémenter. L'équipe se réunit durant des planning game afin d'évaluer le temps nécessaire pour les réaliser.
  • Intégration continue : à l'aide d'outils comme Hudson ou Cruise Control, l'intégration continue permet de connaître l'état du logiciel à tout moment, en compilant, lançant les tests unitaires et fonctionnels à chaque commit de développeurs. Ainsi, la phase d'intégration (en fin de projet pour les projets traditionnels) est réalisée tout au long du développement, pour voir les problèmes au plus vite.
  • Livraisons fréquentes : Aidées par l'intégration continue, les livraisons au client doivent être les plus régulières et fréquentes possible, afin de découvrir les problèmes, notamment fonctionnels, au plus tot.
  • Rythme durable : l'idée est qu'un développeur fatigué travaille mal. AInsi, l'équipe doit travailler régulièrement, mais en limitant les périodes de travail intensif.
  • Tests fonctionnels : ces tests doivent être écrits par le client. Ils permettent de s'assurer que le produit réponde aux besoins du client. Fitnesse ou encore Concordion propose deux framework permettant de réaliser et d'automatiser les tests fonctionnels.
  • Test Driven Development : un test unitaire doit toujours être écrit AVANT le code correspondant. Ceci permet d'éviter d'avoir un code correspondant aux tests (dans l'idéal écrit par le client), et non l'inverse.
  • Conception simple : l'idée est de répondre aux besoins du client et de se limiter à ses besoins. C'est pas la peine de réaliser des usines à gaz pour une simple fonctionnalité. On ne développe que ce qu'on a besoin à l'instant T.
  • Méthaphores : l'idée est d'utiliser des méthaphores pour mieux se faire comprendre au sein de l'équipe. Par exemple, client-server est une méthaphore bien connue des informaticiens, permettant tout de suite de comprendre de quoi on parle. Idem pour les design pattern.
  • Refactoring : le code doit être remanier de façon continue afin de le rendre plus maintenable et d'améliorer sa qualité.
  • Propriété collective du code : tout le monde est propriétaire du code, pas de chasse gardée afin que toute l'équipe connaissent l'ensemble.
  • Convention de nommage : toutes les parties du code doivent être comprehensibles par tous les développeurs de l'équipe. Un ensemble de régle de codage doit être respecté. En revanche, celles-ci doivent être minimaliste, afin d'être bien appliquées par les développeurs.
  • Binomage : les développeurs travaillent en binôme. Ceci permet d'avoir une revue de code en continu et d'éviter les chasses gardées. C'est également un très bon moyen d'intégrer les nouveaux développeurs dans l'équipe.

Voici une petite explication de la méthode eXtreme Programming. Le prochain article expliquera la méthode Scrum.


Retour à La Une de Logo Paperblog

A propos de l’auteur


François Mottet 8 partages Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossier Paperblog