Programmation extrême vs SCRUM | XP contre SCRUM
Il y a eu un certain nombre de méthodologies de développement de logiciels différentes utilisées dans l'industrie du logiciel au fil des ans, telles que la méthode de développement en cascade, le modèle en V, le RUP et quelques autres méthodes linéaires, itératives et linéaires-itératives combinées. Le modèle Agile (ou plus exactement, un groupe de méthodologies) est un modèle de développement logiciel plus récent introduit par le manifeste Agile pour combler les lacunes constatées dans ces méthodologies de développement logiciel traditionnelles.
Les méthodes agiles sont basées sur un développement itératif et utilisent les commentaires des utilisateurs comme principal mécanisme de contrôle. Agile peut être qualifiée d'approche centrée sur les personnes par rapport aux méthodes traditionnelles. Le modèle Agile fournit une version fonctionnelle du produit très tôt en décomposant le système en sous-parties très petites et gérables, afin que le client puisse réaliser certains des avantages dès le début. Le temps de cycle de test d'Agile est relativement court par rapport aux méthodes traditionnelles, car les tests sont effectués parallèlement au développement. En raison de tous ces avantages, les méthodes Agiles sont actuellement préférées aux méthodologies traditionnelles. La programmation Scrum et Extreme sont deux des variantes les plus populaires des méthodes Agiles.
Qu'est-ce que SCRUM ?
Comme mentionné ci-dessus, SCRUM est un processus de gestion de projet incrémental et itératif, qui appartient à la famille des méthodes Agiles. SCRUM est basé sur l'octroi d'une priorité élevée à la participation du client au début du cycle de développement. Il recommande d'intégrer les tests par le client le plus tôt et le plus souvent possible. Des tests sont effectués à chaque fois qu'une version stable devient disponible. La base de SCRUM est basée sur le fait de commencer les tests depuis le début du projet et de continuer jusqu'à la fin du projet.
La valeur clé de SCRUM est "la qualité est la responsabilité de l'équipe", ce qui souligne que la qualité du logiciel est la responsabilité de toute l'équipe (pas seulement de l'équipe de test). Un autre aspect important de SCRUM consiste à décomposer le logiciel en parties gérables plus petites et à les livrer très rapidement au client. La livraison d'un produit fonctionnel est de la plus haute importance. Ensuite, l'équipe continue d'améliorer le logiciel et de livrer en continu à chaque étape majeure. Ceci est réalisé en ayant des cycles de publication très courts (appelés sprints) et en obtenant des commentaires pour l'amélioration à la fin de chaque cycle.
SCRUM définit plusieurs rôles clés pour le bon fonctionnement d'une équipe de développement. Il s'agit du propriétaire du produit (qui représente le client et maintient le backlog du produit), du Scrum master (qui agit en tant qu'organisateur et coordinateur de l'équipe en organisant des réunions Scrum, en maintenant le backlog de sprint et les burn down charts) et d'autres membres de l'équipe. Une équipe peut être composée de rôles traditionnels, mais la plupart du temps, ce sont des équipes autogérées. Les principaux artefacts Scrum sont le backlog de produit/backlog de version (liste de souhaits), les backlogs de sprint/arriérés de défauts (tâches à chaque itération), les graphiques Burn down (travail restant par rapport à la date). Les principales cérémonies SCRUM sont la réunion Product Backlog, la réunion Sprint et la réunion Retrospect.
Qu'est-ce que la programmation extrême ?
Extreme Programming (en abrégé XP) est une méthodologie de développement logiciel qui appartient au modèle Agile. La programmation extrême réalise des phases en très petits pas continus (par rapport aux méthodes traditionnelles). Le premier passage, qui ne prend qu'une journée ou une semaine, est volontairement incomplet. Pour donner des objectifs concrets au développement du logiciel, des tests automatisés sont écrits au départ. Ensuite, les développeurs font le codage. L'accent est mis sur la programmation en binôme. Une fois tous les tests réussis, le codage est considéré comme terminé. La phase suivante est la conception et l'architecture, qui traitent de la refactorisation du code par le même ensemble de programmeurs. A l'issue de cette phase, un produit incomplet (mais fonctionnel) est présenté aux parties prenantes. Juste après cela, la phase suivante (qui se concentre sur le prochain ensemble de fonctionnalités les plus importantes) commence.
Quelle est la différence entre l'Extreme Programming et SCRUM ?
Extreme Programming et SCRUM sont naturellement des méthodologies très similaires et alignées. Cependant, il existe des différences subtiles mais importantes entre ces deux méthodes. Les sprints SCRUM durent de 2 à 4 semaines, tandis que les itérations XP typiques sont plus courtes (dernières 1 à 2 semaines). Habituellement, les équipes SCRUM n'autorisent pas les changements dans les sprints, mais les équipes XP sont un peu plus flexibles pour les changements au sein des itérations. Par exemple, après la planification du sprint, l'ensemble des éléments de ce sprint reste inchangé, mais une fonctionnalité qui n'a pas commencé à fonctionner peut à tout moment être échangée avec une autre fonctionnalité dans XP. Une autre différence entre XP et SCRUM est que l'ordre des fonctionnalités développées dans XP est strictement hiérarchisé par le client, tandis que l'équipe SCRUM décide de l'ordre des éléments (après que le backlog du produit a été priorisé par le propriétaire du produit SCRUM).
Contrairement à XP, SCRUM n'impose aucune pratique d'ingénierie. Par exemple, XP est motivé par des pratiques telles que le développement piloté par les tests (TDD), la programmation en binôme, la refactorisation, etc. Cependant, certains pensent que l'imposition d'un ensemble de pratiques à des équipes auto-organisées pourrait avoir un impact négatif, et cela peut une lacune de XP. Une autre lacune de la programmation Extreme est que les équipes inexpérimentées peuvent avoir tendance à refactoriser sans aucun test automatisé ou TDD (ou simplement piratage). Par conséquent, certains suggèrent que SCRUM est préférable pour commencer (car il apporte de grandes améliorations simplement grâce à des itérations limitées dans le temps) et XP convient aux équipes légèrement matures qui ont découvert la valeur des pratiques mentionnées ci-dessus (plutôt que de les utiliser parce qu'on leur a demandé pour ce faire).