Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

Chapitre 717 minDébutant

User stories, critères d'acceptation, estimation et backlog

Par Josselyn C., prof de BTS SIO. Mis à jour le .

À la fin de ce chapitre, tu sauras

  • écrire une user story au bon format, avec ses critères d'acceptation ;
  • vérifier une story avec la grille INVEST et la découper ;
  • estimer en points avec le planning poker ;
  • calculer une vélocité et remplir un sprint sans le surcharger.

5 exercices corrigés

Une user story (en français, récit utilisateur) décrit un besoin en une phrase, du point de vue de celui qui en profite : « En tant que rôle, je veux action afin de bénéfice ». Accompagnée de ses critères d'acceptation, elle devient un élément du Product Backlog que l'équipe peut estimer, réaliser et vérifier. Ce chapitre montre comment écrire une bonne story, la découper, l'estimer en points avec le planning poker, puis utiliser la vélocité pour remplir un sprint sans le surcharger.

Le format d'une user story

En tant que salarié emprunteur, je veux réserver un ordinateur portable pour une période afin de l'avoir le jour de mon déplacement sans écrire à la logistique.

Les trois parties ont chacune un rôle :

PartieQuestionPourquoi c'est utile
En tant que…Qui en profite ?Oblige à penser à un utilisateur réel, pas au système
Je veux…Que veut-il pouvoir faire ?Décrit une action, sans imposer de solution technique
Afin de…Pourquoi ?Donne la valeur : elle aide le Product Owner à prioriser et l'équipe à choisir la solution la plus simple

Une story n'est pas une spécification complète. On dit qu'elle tient en trois C : une carte (la phrase, assez courte pour tenir sur un post-it), une conversation (le détail se discute entre le Product Owner et l'équipe, au moment où l'on va la réaliser) et une confirmation (les critères d'acceptation, qui disent quand elle est terminée).

Voici les premières stories de Prêt'Matos :

N°User story
1En tant que salarié, je veux me connecter avec mon compte de l'entreprise afin de ne pas gérer un mot de passe de plus.
2En tant que salarié, je veux consulter le catalogue et la disponibilité du matériel afin de savoir ce que je peux emprunter et quand.
4En tant que salarié, je veux réserver un matériel pour une période afin de l'avoir le jour où j'en ai besoin.
5En tant que gestionnaire logistique, je veux enregistrer la sortie et le retour d'un matériel afin de savoir à tout moment où il se trouve.
7En tant que salarié, je veux recevoir un rappel la veille de la date de retour afin de ne pas oublier de rapporter le matériel.

Les critères d'acceptation

Les critères d'acceptation sont les conditions qu'une story doit remplir pour être acceptée par le Product Owner. Ils lèvent l'ambiguïté avant le développement et servent directement de cas de test. Pour la story 4 :

  • la réservation porte sur un matériel, une date de début et une date de fin ;
  • on ne peut pas réserver un matériel déjà réservé sur une partie de la période ;
  • la date de début ne peut pas être dans le passé, et un prêt dure au plus 15 jours ;
  • après validation, la réservation apparaît dans « mes réservations » et la logistique la voit dans son planning.

On les écrit souvent au format Étant donné / Quand / Alors (en anglais Given / When / Then), issu du développement piloté par le comportement (BDD) : le contexte de départ, l'action, puis le résultat attendu.

gherkin
# language: fr
Fonctionnalité: Réserver un matériel

  Scénario: Le matériel est déjà réservé sur une partie de la période
    Étant donné que le portable PC-07 est réservé du 10 au 14 mars
    Quand Julie demande à réserver PC-07 du 12 au 18 mars
    Alors la réservation est refusée
    Et le message « PC-07 est déjà réservé du 10 au 14 mars » s'affiche

  Scénario: Le matériel est libre
    Étant donné que le portable PC-07 n'a aucune réservation en mars
    Quand Julie demande à réserver PC-07 du 12 au 18 mars
    Alors la réservation est enregistrée
    Et elle apparaît dans la liste « mes réservations » de Julie

Ce format, appelé Gherkin, peut être exécuté par des outils de tests automatisés comme Cucumber, qui reconnaissent les mots-clés français grâce à la première ligne # language: fr. Même sans outil, il oblige à penser aux cas limites : chevauchement de dates, période dans le passé, matériel en réparation.

Ne confonds pas les critères d'acceptation, propres à chaque story, et la Definition of Done, commune à toutes les stories (code relu, tests passés, déployé en recette : les artefacts). Une story est terminée quand elle remplit les deux.

La grille INVEST

Une bonne user story est INVEST :

LettreQualitéCe que ça veut direStory qui ne la respecte pas
IIndépendanteRéalisable sans attendre une autre story, dans la mesure du possible« Afficher les retards (nécessite la story des statistiques) »
NNégociableLe détail reste à discuter, ce n'est pas un contrat« Le bouton bleu 14 px en haut à droite qui ouvre une fenêtre modale »
VValorisableElle apporte une valeur visible à un utilisateur ou au client« Migrer vers la dernière version du framework » (une tâche technique)
EEstimableL'équipe la comprend assez pour l'estimer« Améliorer l'application »
SSmall, petiteElle tient largement dans un sprint« Gérer tout le cycle de prêt du matériel »
TTestableOn peut vérifier qu'elle est faite, grâce à ses critères« L'application doit être agréable à utiliser »

Découper une story trop grosse

Une story trop grosse pour un sprint s'appelle une épopée (epic). « En tant que gestionnaire, je veux gérer le cycle de prêt du matériel » est une épopée : elle contient la sortie, le retour, la prolongation, les retards, les pannes. On la découpe en stories plus petites, chacune utile, selon l'un de ces axes :

Axe de découpageExemple pour « gérer le cycle de prêt »
Les étapes du processusEnregistrer la sortie ; enregistrer le retour ; prolonger un prêt
Les règles métierRéserver sans contrôle de durée, puis ajouter la durée maximale de 15 jours
Le cas nominal, puis les cas particuliersRetour normal ; retour avec matériel endommagé
Les rôlesLe salarié voit ses prêts ; la logistique voit tous les prêts
Les donnéesUn matériel à la fois ; puis un lot (un portable avec sa souris et son sac)

Le Product Backlog de Prêt'Matos

Le Product Backlog est ordonné : le haut est détaillé et estimé, prêt à entrer dans un sprint ; le bas est plus grossier et sera précisé plus tard. Le Product Owner le réordonne en continu selon la valeur, les risques et les dépendances. Voici celui de Prêt'Matos au début du projet, avec les estimations en points et le sprint où chaque élément a finalement été terminé :

OrdreÉlémentPointsTerminé au
1Se connecter avec son compte d'entreprise3Sprint 1
2Consulter le catalogue et la disponibilité3Sprint 1
3(Logistique) Ajouter ou modifier un matériel du catalogue2Sprint 1
4Réserver un matériel pour une période5Sprint 2
5(Logistique) Enregistrer la sortie et le retour5Sprint 2
6Voir et annuler mes réservations3Sprint 3
7Recevoir un rappel la veille du retour2Sprint 3
8(Logistique) Voir les prêts en retard2Sprint 3
9(Logistique) Exporter l'historique en CSV2Sprint 3
10Consulter l'historique de mes prêts3Sprint 3
11(Direction) Statistiques d'utilisation du matériel8—
Total38

Certaines équipes ajoutent une Definition of Ready : la liste de ce qu'un élément doit avoir pour entrer dans un sprint (une story au bon format, des critères d'acceptation, une estimation, pas de dépendance bloquante). Ce n'est pas une notion du Scrum Guide, mais elle évite de commencer un sprint avec des éléments flous.

Estimer en points avec le planning poker

Les équipes agiles estiment souvent les stories en points (story points) plutôt qu'en heures. Un point n'est pas une unité de temps : c'est une mesure relative de la taille d'une story, qui mêle la quantité de travail, la complexité et l'incertitude. On choisit une story de référence (« se connecter » vaut 3) et on compare : « réserver » est plus gros, avec des règles de chevauchement, disons 5.

Pourquoi des points ? Parce que l'être humain compare beaucoup mieux qu'il ne mesure : tu sais dire qu'une story est deux fois plus grosse qu'une autre bien plus sûrement que dire qu'elle prendra 13 heures. Et les points ne dépendent pas de la personne qui fera le travail.

Le planning poker est la technique d'estimation la plus répandue :

  1. Chaque membre de l'équipe a un jeu de cartes portant une suite proche de celle de Fibonacci : 0, ½, 1, 2, 3, 5, 8, 13, 20, 40, 100, plus « ? » (je ne sais pas).
  2. Le Product Owner lit la story et répond aux questions.
  3. Chacun choisit une carte en secret, puis tout le monde la retourne en même temps.
  4. Si les valeurs sont proches, on retient la valeur commune. Sinon, le plus bas et le plus haut expliquent leur choix : souvent, l'un a vu une difficulté ou une solution que l'autre ignorait.
  5. On revote jusqu'à converger.

Les écarts de la suite grandissent avec les nombres : il ne sert à rien de débattre entre 14 et 15, l'incertitude d'une grosse story ne permet pas cette précision. Une story estimée à 20 ou plus est presque toujours une épopée à découper.

La vélocité et la capacité d'un sprint

La vélocité est le nombre de points des éléments terminés (conformes à la Definition of Done) pendant un sprint. Un élément à moitié fini compte zéro. Prêt'Matos a livré 8 points au sprint 1 (éléments 1, 2 et 3), 10 au sprint 2 (éléments 4 et 5 ; l'élément 6, non terminé, est retourné au backlog) et 12 au sprint 3 (éléments 6 à 10). Vélocité moyenne : (8 + 10 + 12) ÷ 3 = 10 points par sprint.

La vélocité sert à prévoir, pas à juger :

  • pour remplir un sprint : l'équipe prend environ autant de points que sa vélocité moyenne, en tenant compte des absences prévues (avec un membre sur trois absent la moitié du sprint, on vise un sixième de moins) ;
  • pour prévoir une date : après le sprint 3, il reste l'élément 11, soit 8 points ; à 10 points par sprint, un sprint suffit. Si le backlog restant faisait 45 points, il faudrait 45 ÷ 10 = 4,5, donc 5 sprints, soit 10 semaines avec des sprints de deux semaines.

Pour remplir un sprint, on prend les éléments dans l'ordre du backlog tant que le total reste dans la capacité. Si l'élément suivant ne rentre pas, on en discute avec le Product Owner : il peut accepter qu'on prenne un élément plus petit situé plus bas, ou préférer découper l'élément trop gros.

Exercices

Exercice 1 sur 5 Écrire des user stories Réussi À revoir

Un club de sport veut une application pour ses 300 adhérents : réserver un créneau de cours collectif, annuler une réservation, recevoir une alerte si une place se libère ; les coachs consultent la liste des inscrits ; le secrétariat crée les créneaux.

  1. Écris quatre user stories, avec au moins deux rôles différents.
  2. Donne trois critères d'acceptation pour la story « réserver un créneau ».
Voir la réponseMasquer la réponse de l'exercice 1
  1. Par exemple :
    • En tant qu'adhérent, je veux réserver une place à un cours collectif afin d'être sûr d'avoir une place en arrivant.
    • En tant qu'adhérent, je veux annuler ma réservation afin de libérer la place pour quelqu'un d'autre.
    • En tant que coach, je veux consulter la liste des inscrits à mon cours afin de préparer le matériel.
    • En tant que secrétaire, je veux créer les créneaux de la semaine afin que les adhérents puissent réserver.
  2. Par exemple : on ne peut pas réserver un cours complet (l'application propose alors la liste d'attente) ; un adhérent ne peut pas réserver deux cours qui se chevauchent ; la réservation ferme deux heures avant le début du cours ; seul un adhérent à jour de sa cotisation peut réserver.

Tu avais trouvé ?

Exercice 2 sur 5 Diagnostic INVEST Réussi À revoir

Pour chaque élément d'un backlog, dis quelle lettre d'INVEST n'est pas respectée et propose une correction.

  1. « Optimiser les requêtes SQL de la base. »
  2. « En tant qu'utilisateur, je veux une application rapide. »
  3. « En tant que comptable, je veux gérer toute la facturation. »
  4. « En tant qu'adhérent, je veux voir mes statistiques de présence, une fois que le module de statistiques de la direction sera fait. »
Voir la réponseMasquer la réponse de l'exercice 2
  1. Pas Valorisable pour un utilisateur : c'est une tâche technique. Correction : partir du problème visible, par exemple « En tant que gestionnaire, je veux que la liste des prêts s'affiche en moins de 2 secondes afin de ne pas attendre au guichet », et ranger l'optimisation comme tâche de cette story.
  2. Pas Testable (« rapide » ne se vérifie pas) ni vraiment Estimable. Correction : fixer un seuil dans un critère d'acceptation (« la page s'affiche en moins de 2 secondes »).
  3. Pas Small : c'est une épopée. Correction : la découper (créer une facture, envoyer une facture, enregistrer un paiement, relancer un impayé).
  4. Pas Indépendante. Correction : écrire la story pour qu'elle se suffise (calculer les présences de l'adhérent directement), ou la placer après l'autre dans le backlog en le disant clairement.

Tu avais trouvé ?

Exercice 3 sur 5 Remplir un sprint Réussi À revoir

L'équipe a une vélocité moyenne de 10 points. Le backlog ordonné commence par : A (3 points), B (5), C (2), D (3), E (2).

  1. Quels éléments entrent dans le sprint ? Pour combien de points ?
  2. Un développeur sera absent la moitié du sprint dans une équipe de trois. Quelle capacité retiens-tu, et que deviennent les éléments retenus ?
Voir la réponseMasquer la réponse de l'exercice 3
  1. A (3), puis B (total 8), puis C (total 10) : la capacité est atteinte. A, B et C, pour 10 points. D et E attendent le sprint suivant.
  2. L'équipe perd un demi-membre sur trois, soit un sixième de sa capacité : 10 × 5/6 ≈ 8 points. On garde A et B (8 points) ; C attend, sauf si le Product Owner préfère un autre choix compatible avec 8 points (A, C et D, par exemple, pour 8 points également).

Tu avais trouvé ?

Exercice 4 sur 5 Vélocité et prévision Réussi À revoir

Une équipe a terminé 7, 9 et 11 points lors de ses trois premiers sprints de deux semaines. Il reste 40 points dans le backlog.

  1. Quelle est sa vélocité moyenne ?
  2. Combien de sprints faut-il prévoir pour terminer le backlog ? Combien de semaines ?
  3. Au sprint 4, l'équipe a commencé deux stories de 5 points sans en terminer aucune, et terminé une story de 3 points. Quelle est sa vélocité pour ce sprint ?
Voir la réponseMasquer la réponse de l'exercice 4
  1. (7 + 9 + 11) ÷ 3 = 27 ÷ 3 = 9 points par sprint.
  2. 40 ÷ 9 ≈ 4,4, arrondi à 5 sprints, soit 10 semaines.
  3. 3 points : seuls les éléments terminés comptent. Les deux stories commencées retournent au backlog, où elles seront réestimées si besoin.

Tu avais trouvé ?

Exercice 5 sur 5 Du critère au scénario Réussi À revoir

Réécris au format Étant donné / Quand / Alors le critère suivant de la story « annuler ma réservation » du club de sport : « Une réservation ne peut plus être annulée moins de deux heures avant le début du cours. »

Voir la réponseMasquer la réponse de l'exercice 5
gherkin
# language: fr
Scénario: Annulation trop tardive
  Étant donné que Karim est inscrit au cours de yoga de 18 h
  Et qu'il est 16 h 30
  Quand Karim demande à annuler sa réservation
  Alors l'annulation est refusée
  Et le message « Annulation impossible moins de deux heures avant le cours » s'affiche

Un second scénario vérifierait le cas autorisé : à 15 h 30, l'annulation est acceptée et la place est proposée au premier de la liste d'attente.

Tu avais trouvé ?

Chapitre terminé !

Fais les 5 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Kanban et choix de la méthode : agile, cycle en V ou hybrideRevoir le sommaire du cours