Skip to Content

eXtreme Programming

L'eXtreme Programming est un ensemble de principes dit "agiles" autour du développement d'un produit mais également des valeurs: Communication, Simplicité, Feedback, Courage. Ces concepts prennent forme dans les années 90 avec la publication du livre « Extreme Programming Explained » par Kent Beck et son expérience chez Chrysler. Ces pratiques sont découpées en trois grands groupes:

Pratiques collaboratives

  • Métaphores: Pratique qui vise à utiliser des métaphores pour décrire le système afin que technique et fonctionnel se comprennent;
  • Conventions de codage: Règles de normalisation du code liées à un langage qui offre aux développeurs une syntaxe commune et compréhensible par tous;
  • Travail en binôme: Appelé aussi "Pair Programming", pratique visant à faire développer 2 personnes sur une même machine: le pilote et le co-pilote ayant pour objectif de faire monter en compétence plus vite l'équipe et d'améliorer la connaissance du code et la communication;
  • Propriété collective du code: L'ensemble de l'équipe doit être responsable et connaître l'intégralité du code;
  • Intégration continue: Plusieurs fois par jour, les développements de l'équipe sont mis en commun (de manière automatique), compilés et l'ensemble des tests exécutés. Une alerte est levée dès qu'une anomalie est détectée afin de la corriger au plus vite.

Pratiques de pilotage

  • Jeu du planing: Toute l'équipe (client inclu) est intégrée à l'estimation des tâches et l'élaboration du planning tout au long du projet;
  • Livraisons régulières: A chaque itération courte (1,2 ou 3 semaines), un produit fonctionnel (validé et testé) peut être mis en production => Retour sur investissement dès la réalisation des fonctionnalités clé, au plus tôt;
  • Rythme soutenable: Une équipe doit pouvoir garder le rythme des développements et des livraisons à l'infini et pour ce faire, il faut la ménager;
  • Client sur site: Le client est impliqué tout au long du projet et est à la fois décideur de projet, utilisateur de l'application et membre de l'équipe.

Pratiques de développement

  • Conception simple et de qualité: Une bonne conception ne doit mettre en oeuvre que les besoins qui sont réels et à réaliser pour l'itération. Elle est évolutive et en constante amélioration;
  • Tests unitaires et fonctionnels (et TDD): Toute partie du code applicatif qui a une logique doit être testé unitairement. Ces tests sont joués de manière automatique à chaque évolution et limite la régression d'une livraison sur l'autre. Les tests fonctionnels ont une portée plus large puisqu'ils mettent en oeuvre un scénario applicatif complet.
  • Refactoring: C'est l'action de modifier du code pour en améliorer sa lisibilité et sa maintenance sans en retirer son fonctionnement. Cette pratique ne peut être mise en oeuvre que si un filet de tests suffisant est mis en place.

Pour aller plus loin: