Agile Software Development with Scrum Scrum désigne, en anglais, une mêlée de rugby: la confrontation de deux packs d'avants pour la possession du ballon. Il s'agit d'une méthode développement de logiciels, inspirée des pratiques mise en oeuvre par l'industrie japonaise pour le développement de nouveaux produits. Cette méthode de la famille des méthodes agiles part du constat que tout projet de développement logiciel est un nouveau produit.

Scrum est centré sur un certains nombres de pratiques et de valeurs. Son principe de base peut se résumer ainsi:

Toutes les méthodes de développement basées sur la planification échouent régulièrement à produire des systèmes logiciels en respectant les contraintes de coûts, de délais et de fonctionnalités prévues initialement. Plutôt que de définir à l'avance le processus de développement, offrons un moyen de le piloter en faisant en sorte de faire émerger une organisation qui soit la plus performante possible.

Scrum cherche à dompter le chaos, à en faire émerger des choses utiles, plutôt qu'à le supprimer.

Le schéma suivant est une représentation simplifiée du processus Scrum, avec les différents acteurs: les deux cycles principaux (The Scrum et The Sprint) sont distingués du reste.

Processus Scrum

Principes

Réduction du bruit et des déchets:

L'objectif de scrum est de maximiser la productivité des équipes de développement en supprimant:

Le rôle des gestionnaires (de projet) et de supprimer tous les obstacles entravant la progression du groupe (et du projet). Parmi les obstacles, on trouve:

Système complexe

Contrôle du processus de développement empirique: basé sur des cycles de rétroaction (feedback) imbriqués pour limiter les risques et piloter au plus proche du terrain. On pourrait parler d'une approche situationiste du processus de développement: créer une situation avec des conditions optimales pour s'assurer du meilleur résultat possible.

Ce type de contrôle s'oppose aux méthodes prescriptives, où le contrôle est réalisé par adéquation entre un plan (PERT) et une réalité et où les tâches et processus sont définis à l'avance. Toute définition de ce type est:

L'image est celle d'une armée qui doit se mettre en campagne avec les plans et les tactiques d'une guerre précédente: l'improvisation est la reine des batailles et l'essence de l'art de la guerre.

Le développement de systèmes logiciles est une activité complexe qui requiert donc des concepts issus de la théorie des systèmes complexes. Il est généralement impossible d'aborder la production d'un logiciel comme un processus industriel (CMM est inspiré de pratiques du contrôle de processus et de la qualité de l'industrie).

Dynamique de groupe

Utiliser la dynamique de groupe, la capacité des individus à s'autoorganiser pour atteindre un but.

Accent mis sur le potentiel humain:

Scrum est un changement de paradigme et de culture.

Pratiques

Le ScrumMaster

Agit comme facilitateur et guide dans l'application de Scrum, mais n'a pas de rôle directif. Sa principale tâche est d'être à l'interface entre l'équipe projet et le reste du monde et de supprimer tous les obstacles se dressant sur le chemin de l'équipe.

Parallèle avec l'entraîneur d'une équipe sportive: faire en sorte que le travail s'effectue dans les meilleurs conditions possibles.

La file d'attente produit

Ou Product backlog: contient la liste de toutes les exigences du système/produit à réaliser, avec une estimation de la charge associée et de la priorité. Ces exigences concernent aussi bien le fonctionnel que le non-fonctionnel ou des remontées d'anomalies. La granularité d'un élément de cette file doit être inférieure à la durée d'un Sprint.

Les problèmes non immédiatement implémentables sont relgués dans une autre file.

La file produit est contrôlée par le Propriétaire du produit (Product owner) qui est seul habilité à gérer cette file. Toutefois, n'importe quelle personne impliquée dans le système produit a la possiblité de demander à ajouter des éléments dans cette file. Le propriétaire produit négocie les priorités avec les différents acteurs.

L'estimation de charge n'est qu'une estimation, pas parole d'évangile. Elle peut être revue au fur et à mesure des itérations (sprints).

L'équipe

Unité autonome et autogérée. Rejoint la notion de Kampfgruppe dans l'armée allemande, ou de task force dans l'armée américaine. Une équipe Scrum doit contenir l'ensemble des compétences nécessaires à la réalisation de son objectif (au besoin, à temps partiel). Son nombre est idéalement de 7, plus ou moins 2. Elle doit disposer d'un environnement de travail adéquat:

"It's incredibly shortsighted to take expensive engineers performing important work and to hobble them with inadequate tools and infrastructure".

Au sein de l'équipe, il n'y a pas de titres ni de fonction définitivement assignée: l'objectif est de promouvoir la transversalité des compétences, la dissémination des compétences et connaissances, la polyvalence.

L'équipe a toute autorité pour atteindre le but fixé lors d'un Sprint.

La mêlée quotidienne

Ou Daily scrum. Réunion quotidienne d'une quinzaine de minutes dans laquelle chaque membre de l'équipe expose :

Tout le monde peut assister à la mêlée mais seuls les membres de l'équipe peuvent participer (règle des poulets et des cochons). Pour éviter tout débordement la mêlée se fait debout (stand-up meeting).

La dernière action d'une mêlée est la mise à jour du graphe reste-à-faire.

Réunion de planification du Sprint

Participants: tous les acteurs projet. Permet de définir:

  1. les éléments de la file produit qui seront réalisés lors du prochain sprint,
  2. l'objectif du sprint, c'est à dire comment sera évalué le résultat de cette itération/incrément.

Les éléments sélectionnés le sont par ordre de priorité et en fonction de la durée/intensité du sprint. Un facteur de concentration permet d'évaluer la durée effective du temps de travail disponible pour le sprint.

Dans une deuxième phase, l'équipe définit la file du Sprint: les différentes tâches à réaliser sont identifiées, estimées et recoivent une priorité. La granularité d'une tâche doit être d'environ un à deux jours de travail. Cette file est matérialisée par un graphique représentant, au quotidien, la diminution du travail à réaliser.

Ce reste-à-faire (ou RAF) est visible de tous est permet de piloter au plus proche le projet.

Le Sprint

Ou itération. Son objectif est de réaliser un incrément du système, il est définit lors de la réunion de lancement du Sprint. La durée est d'environ 30 jours (3 à 5 semaines).

Durant un sprint, il ne doit y avoir aucune modification de l'objectif, ni aucune interférence. Le seul souci de l'équipe est d'atteindre l'objectif fixé (commitment). S'il s'avère que l'équipe s'est surengagée (le RAF ne diminue pas assez vite), alors il faut renégocier la portée ou les éléments produits à incorporer dans l'incrément, mais conserver l'objectif tant que c'est possible.

Un sprint se conclut par une démonstration, présentant à tous les acteurs projets le résultat de l'incrément. Cette démonstration est évaluée en regard de l'objectif du Sprint.

Valeurs

© 2006-2007 OQube  | Dernière publication: 13-04-2007