Scrum apparait en 1996, avec une idée simple : si le développement d'un système est imprévisible, il est pertinent de créer des points de contrôles, des "revues" périodiques et sur une courte durée. Point.
En 1999, l'Extreme Programming nait : c'est l'ouvrage XPE de Kent Beck. XP offre un système complet :
- Rôles, Droits de chacun
- Valeurs (Communication, Feedback, Simplicité, Courage, Respect) et Principes (adaptation locale, assumer la simplicité, voyager léger...
Pratiques, qui se déclinent en : - Planification (Equipe complète, User stories, Tests-Client...)
- Développement collectif (Rythme durable, intégration continue, métaphore...)
- Fabrication du système (TDD, refactoring, conception émergente).
De fait, Scrum intègre en 2004 des apports de XP tels que User Stories.
Aujourd'hui, nous avons donc un ensemble de pratiques de planification, déclinées par Scrum et XP. Ces pratiques ont pour but de planifier très régulièrement le projet, le planning étant adaptatif.
- Equipe complète : Client ( Product Owner) et développeurs
- Itératif incrémental "court"
- Expression de besoins par demandes de type User Stories.
Scrum se base sur un cycle de type :
- Sprint 0
- Planification de la release
- Boucle sur les sprints
XP propose un cycle de vie qui intègre de base plusieurs releases, le feedback concret des Utilisateurs intervenant alors dans le pilotage du projet. C'est la pratique "versions fréquentes" de XP.
- Exploration
- Engagement : planification des releases
- Boucle sur les releases, qui inclue une boucle sur les itérations dans les releases.
Un autre point important : la gestion des demandes du Product Owner. Si XP préconise une gestion par User Stories sur cartes "papier" (ce qui induit un aspect kinesthésique), autant XP que Scrum s'accomodent parfaitement d'une gestion informatisée, dans le respect du principe de simplicité qui structure les pratiques agiles. Dans cet ordre d'idées, une approche ShuHaRi permet de comprendre par l'expérience les préconisations de XP et ainsi de mieux adapter à l'environnement dans lequel l'agile est déployé.