Chapitre 916 minDébutant
Spécifier l'interface : maquettes annotées, user stories et critères d'acceptation
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- rédiger la partie interface d'un cahier des charges ;
- écrire des exigences ergonomiques vérifiables ;
- annoter une maquette : données, règles, états et comportements ;
- écrire des critères d'acceptation qui vérifient l'ergonomie.
4 exercices corrigés1 schéma
Spécifier l'interface, c'est décrire les écrans de façon assez précise pour que le développeur sache quoi coder, le testeur quoi vérifier et le client quoi valider : exigences ergonomiques vérifiables, maquettes annotées avec leurs données, leurs règles, leurs comportements et leurs états, user stories accompagnées de critères d'acceptation qui couvrent aussi l'ergonomie. Ce chapitre montre comment écrire chacun de ces éléments pour Prêt'Matos, comment les relier entre eux et comment faire valider l'interface.
La partie interface d'un cahier des charges
Le cahier des charges décrit le besoin et ses contraintes. Sa partie consacrée à l'interface contient, selon la taille du projet, tout ou partie des éléments suivants :
| Élément | Contenu | Pour Prêt'Matos |
|---|---|---|
| Utilisateurs et contexte | Les profils, leurs équipements, leur environnement ; les personas | Les trois personas du chapitre 4 |
| Exigences ergonomiques et d'accessibilité | Des exigences numérotées et vérifiables | ENF-05 et ENF-06, ci-dessous |
| Arborescence et enchaînements | La liste des écrans et les chemins des tâches principales | Les écrans ECR1 à ECR11 du chapitre 5 |
| Maquettes | Un wireframe ou une maquette par écran, avec ses états | Maquettes Figma, version validée |
| Charte ou design system | Couleurs, typographie, composants | Le petit design system de Sorbier |
| Textes de l'interface | Libellés, messages d'erreur, de confirmation, d'aide ; ton (tutoiement ou vouvoiement) | Liste des messages, vouvoiement |
| Compatibilité | Navigateurs, systèmes, tailles d'écran, langues | Deux dernières versions des navigateurs courants ; de 360 px de large au grand écran |
Dans un projet agile comme Prêt'Matos, ces éléments ne sont pas tous écrits d'avance : les exigences générales et l'arborescence le sont au début, les maquettes et les critères d'acceptation de chaque écran juste avant le sprint où il sera développé.
Écrire des exigences ergonomiques vérifiables
« Intuitive », « ergonomique », « moderne », « accessible » : ces mots expriment une attente, mais personne ne peut dire à la recette s'ils sont respectés. Une exigence ergonomique utile précise qui, quoi, dans quelles conditions et comment on le vérifie (écrire une exigence vérifiable).
| Exigence floue | Exigence vérifiable |
|---|---|
| « L'application doit être intuitive. » | ENF-05 Lors d'un test utilisateur, chaque salarié qui n'a jamais utilisé l'application réserve un matériel en moins de 2 minutes, sans aide. |
| « L'application doit être accessible. » | ENF-06 Les écrans ECR1 à ECR6 respectent les critères de niveau A et AA des WCAG 2.2, vérifiés par un audit sur ces six écrans avant la mise en service. |
| « L'application doit être réactive. » | ENF-07 Toute action affiche un retour en moins de 0,1 seconde (bouton enfoncé, indicateur) ; toute attente de plus d'une seconde affiche « Chargement… ». |
| « L'application doit être jolie et moderne. » | ENF-08 Les écrans utilisent exclusivement les composants et les jetons du design system de Sorbier (version 1.0). |
| « L'application doit marcher sur mobile. » | ENF-09 Toutes les fonctions des salariés sont utilisables sur un écran de 360 pixels de large, sans défilement horizontal, avec des cibles tactiles d'au moins 44 × 44 pixels. |
La maquette annotée
Une maquette montre un état de l'écran à un instant. Pour qu'elle serve de spécification, on l'annote : des repères numérotés sur l'écran, et dans la marge, ce que l'image ne dit pas.
| Type d'annotation | Ce qu'elle précise | Exemple sur ECR5 « Mes réservations » |
|---|---|---|
| Données | D'où vient chaque information, son format | Désignation du matériel ; dates au format JJ/MM ; statut calculé à partir des dates et de la sortie |
| Règles d'affichage | Tri, filtres, regroupements, limites | Groupes « En cours » puis « À venir » ; dans chaque groupe, date de retrait croissante ; les réservations terminées vont dans « Historique » |
| Comportements | Ce que fait chaque action, au clic, au clavier, au survol | « Annuler » ouvre la confirmation ECR6 ; Échap la ferme ; après l'annulation, le focus va au titre du groupe |
| États | Les variantes de l'écran (voir plus bas) | Chargement, vide, erreur, rempli |
| Droits | Qui voit quoi, qui peut faire quoi | Le salarié ne voit que ses réservations ; « Annuler » n'existe que pour les réservations à venir |
| Textes | Les libellés et messages exacts | « Vous n'avez aucune réservation. » ; « Réservation de VP-01 du 24/03 annulée. » |
| Accessibilité | Structure, noms accessibles, focus, annonces | Titre principal « Mes réservations » ; bouton nommé « Annuler la réservation de VP-01 du 24/03 » ; message d'annulation annoncé |
Une annotation précise vaut mieux qu'une maquette de plus. « Les réservations sont triées par date » laisse deux questions : laquelle (retrait ou retour) et dans quel sens ? « Tri par date de retrait croissante » n'en laisse aucune.
Les états d'un écran
Un écran qui affiche des données n'a pas un seul aspect. Les maquettes oublient souvent ses autres états, et le développeur les invente alors en dernière minute, ou pas du tout : un écran blanc pendant le chargement, une liste vide sans explication, une erreur muette.
| État | Quand | Ce que l'écran doit montrer |
|---|---|---|
| Chargement | Pendant l'appel à l'API | Un indicateur et un texte, annoncés aux lecteurs d'écran ; la structure de la page déjà en place |
| Vide | Aucune donnée à afficher | Une phrase qui explique, et l'action qui permet d'en sortir (« Voir le catalogue ») |
| Erreur | L'API ne répond pas, ou répond une erreur | Ce qui s'est passé, en clair, et une action (« Réessayer ») ; jamais la trace technique |
| Rempli | Les données sont là | Le contenu, organisé selon les règles d'affichage |
| Partiel ou volumineux | Beaucoup de données | Pagination, « Afficher plus », recherche |
| Interdit | L'utilisateur n'a pas le droit | Un message (« Cet écran est réservé à la logistique ») et un lien vers son accueil |
Les formulaires ont aussi leurs états (vierge, en cours de saisie, en erreur, en cours d'envoi, envoyé) et chaque composant les siens (normal, survolé, focus, désactivé). Le design system les décrit une fois pour toutes ; la maquette de chaque écran ne dessine que ceux qui lui sont propres.
User stories et critères d'acceptation qui vérifient l'ergonomie
Une user story dit ce que veut l'utilisateur ; ses critères d'acceptation disent quand elle est terminée. Pour que l'ergonomie soit vérifiée, elle doit figurer dans ces critères : le message exact, l'emplacement du focus, l'état après l'action, le comportement au clavier. Voici la story 6 de Prêt'Matos, « En tant que salarié, je veux voir et annuler mes réservations afin de libérer le matériel quand je n'en ai plus besoin », au format Étant donné / Quand / Alors :
# language: fr
Fonctionnalité: Annuler une réservation
Scénario: Annuler une réservation à venir
Étant donné que Julie a réservé VP-01 du 24 au 26 mars 2027
Et que nous sommes le 15 mars 2027
Quand Julie choisit « Annuler » sur cette réservation dans « Mes réservations »
Alors une confirmation affiche « Annuler la réservation de VP-01 du 24/03 au 26/03 ? »
Et elle propose les boutons « Annuler la réservation » et « Garder la réservation »
Scénario: Confirmer l'annulation
Étant donné que la confirmation d'annulation de VP-01 est affichée
Quand Julie choisit « Annuler la réservation »
Alors la réservation disparaît du groupe « À venir »
Et le message « Réservation de VP-01 du 24/03 annulée. » s'affiche et est annoncé aux lecteurs d'écran
Et VP-01 apparaît disponible du 24 au 26 mars dans le catalogue
Scénario: Renoncer à l'annulation au clavier
Étant donné que la confirmation d'annulation de VP-01 est affichée
Quand Julie appuie sur la touche Échap
Alors la confirmation se ferme et la réservation est conservée
Et le focus revient sur le bouton « Annuler » de cette réservation
Scénario: Une réservation commencée ne s'annule pas
Étant donné que Julie a retiré PC-07 le 12 mars 2027
Quand elle affiche « Mes réservations » le 15 mars 2027
Alors PC-07 apparaît dans le groupe « En cours » avec la mention « À rendre le 18/03 »
Et aucune action « Annuler » n'est proposée pour PC-07
Ces scénarios servent trois fois : ils lèvent les ambiguïtés avant le développement (que devient le focus ? que dit le message ?), ils deviennent les cas du cahier de recette, et ils peuvent être automatisés dans un test de bout en bout (Playwright). L'anomalie A-03 de la recette de Prêt'Matos, une réservation refusée sans message, n'aurait pas passé la revue si le critère d'acceptation avait donné le message exact.
La Definition of Done de l'équipe, commune à toutes les stories, ajoute les vérifications d'ergonomie qui valent partout :
- l'écran correspond à la maquette validée, avec tous ses états ;
- les textes sont ceux de la liste des messages, sans faute ;
- tout se fait au clavier, avec un focus visible ;
- l'écran a été vérifié à 360 pixels de large et avec un zoom à 200 % ;
- les contrastes des nouveaux éléments ont été mesurés ;
- l'outil automatique d'accessibilité ne signale aucune erreur.
Relier exigences, maquettes, stories, cas d'utilisation et tests
Chaque élément de la spécification doit pouvoir être relié aux autres : c'est la traçabilité. Elle permet de vérifier qu'aucune exigence n'est oubliée et de savoir quoi retester quand un écran change.
| Exigence | User story | Écrans | Cas d'utilisation UML | Vérification |
|---|---|---|---|---|
| EF-04 Réserver un matériel | Story 4 | ECR1, ECR2, ECR3, ECR4 | Réserver un matériel | Cas de recette R-01 à R-03 |
| EF-06 Voir et annuler ses réservations | Story 6 | ECR5, ECR6 | Annuler une réservation | Scénarios ci-dessus |
| ENF-05 Réserver en moins de 2 minutes sans aide | Toutes les stories de réservation | ECR1 à ECR4 | — | Test utilisateur de la version 2 |
| ENF-06 WCAG 2.2 niveau AA | Toutes | ECR1 à ECR6 | — | Audit avant la mise en service |
Le diagramme de cas d'utilisation et sa description textuelle disent ce que le système fait pour chaque acteur ; les maquettes disent comment l'acteur le fait à l'écran ; les critères d'acceptation disent comment on le vérifie. Les trois se répondent : un scénario d'erreur de la description textuelle (« le matériel est déjà réservé ») doit avoir son message sur la maquette et son critère d'acceptation.
Faire valider l'interface
La validation se fait en deux temps.
Avant le développement, la Product Owner (ou le client) valide les maquettes et les critères d'acceptation. Présente-les par tâche, note les remarques, fais une nouvelle version et obtiens un accord explicite, daté : un courriel, un commentaire dans l'outil de maquettage, une ligne dans le compte rendu de réunion. C'est la version de référence.
Après le développement, la recette vérifie que l'application est conforme : chaque critère d'acceptation est rejoué, les exigences ergonomiques sont mesurées (le test chronométré de l'ENF-05, l'audit de l'ENF-06). Les écarts deviennent des anomalies, avec leur gravité.
Exercices
Exercice 1 sur 4 Des exigences vérifiables Réussi À revoir
Réécris ces exigences d'un cahier des charges pour une application de réservation de salles de réunion, de façon qu'on puisse les vérifier à la recette.
- « L'application doit être simple pour les nouveaux salariés. »
- « Les erreurs doivent être bien gérées. »
- « L'application doit respecter les normes d'accessibilité. »
- « Le planning doit être lisible. »
Voir la réponseMasquer la réponse de l'exercice 1
Des formulations possibles :
- « Lors d'un test avec cinq salariés arrivés depuis moins d'un mois, chacun réserve une salle pour une réunion donnée en moins de 90 secondes, sans aide. »
- « Chaque erreur de saisie est signalée sous le champ concerné par un message qui indique comment la corriger ; la saisie est conservée. La liste des messages est validée par le client. »
- « Les écrans de réservation respectent les critères de niveau A et AA des WCAG 2.2, vérifiés par un audit avant la mise en service. »
- « Le planning d'une journée s'affiche sans défilement horizontal de 360 pixels de large au grand écran ; le texte a un contraste d'au moins 4,5:1 ; une salle occupée est signalée par un texte, pas seulement par une couleur. »
Tu avais trouvé ?
Exercice 2 sur 4 Les états d'un écran Réussi À revoir
L'écran ECR10 « Prêts en retard » de la logistique liste les matériels qui auraient dû être rendus, avec l'emprunteur et le nombre de jours de retard. Décris ses états (chargement, vide, erreur, rempli) et ce que chacun doit afficher.
Voir la réponseMasquer la réponse de l'exercice 2
| État | Affichage |
|---|---|
| Chargement | Titre « Prêts en retard » déjà affiché, indicateur et texte « Chargement des prêts en retard… », annoncé aux lecteurs d'écran |
| Vide | « Aucun prêt en retard aujourd'hui. » : c'est une bonne nouvelle, pas une erreur ; un lien vers « Aujourd'hui » |
| Erreur | « Impossible de charger les prêts en retard : vérifiez votre connexion. » et un bouton « Réessayer » |
| Rempli | Un prêt par ligne : matériel, emprunteur, date de retour prévue, nombre de jours de retard écrit (« 3 jours de retard »), action « Envoyer un rappel » ; tri par retard décroissant |
On peut ajouter l'état « interdit » : un salarié qui ouvre l'adresse de cet écran voit « Cet écran est réservé à la logistique » (et le serveur refuse les données, comme le vérifie le cas de recette R-04).
Tu avais trouvé ?
Exercice 3 sur 4 Des critères d'acceptation Réussi À revoir
Écris, au format Étant donné / Quand / Alors, deux scénarios d'acceptation pour la story « En tant que magasinier, je veux enregistrer le retour d'un matériel en scannant son étiquette afin de ne pas le chercher dans une liste » : le cas nominal et le cas d'un matériel qui n'est pas en prêt. Pense à l'ergonomie : message, focus, enchaînement.
Voir la réponseMasquer la réponse de l'exercice 3
# language: fr
Fonctionnalité: Enregistrer un retour par scan
Scénario: Le matériel scanné est en prêt
Étant donné que PC-07 est en prêt chez Julie depuis le 12 mars 2027
Et que l'écran « Enregistrer un retour » est affiché
Quand Noah scanne l'étiquette de PC-07
Alors l'écran affiche « PC-07, prêté à Julie Lefèvre depuis le 12/03 »
Et la date de retour est pré-remplie avec la date du jour
Et le choix de l'état « Bon état » est proposé par défaut
Scénario: Le matériel scanné n'est pas en prêt
Étant donné que VP-01 n'est pas en prêt
Quand Noah scanne l'étiquette de VP-01
Alors le message « VP-01 n'est pas en prêt : vérifiez l'étiquette ou cherchez le matériel par son numéro. » s'affiche
Et le champ de recherche reçoit le focus
Et aucun retour n'est enregistré
Les scénarios donnent le message exact, la valeur par défaut et la place du focus : ce sont eux qui garantissent qu'une fois codé, l'écran sera aussi pratique que sur la maquette.
Tu avais trouvé ?
Exercice 4 sur 4 La traçabilité Réussi À revoir
La Product Owner décide de modifier l'écran ECR3 « Réserver » : le motif devient obligatoire pour les vidéoprojecteurs. En t'appuyant sur le tableau de traçabilité du chapitre, liste ce qu'il faut mettre à jour et retester.
Voir la réponseMasquer la réponse de l'exercice 4
- L'exigence EF-04 et la règle de gestion (motif obligatoire pour les vidéoprojecteurs).
- La maquette de ECR3 : le libellé du motif (« Motif » sans « facultatif » pour un vidéoprojecteur), la phrase sur les champs obligatoires, le nouveau message d'erreur.
- Les critères d'acceptation de la story 4 : un scénario « vidéoprojecteur sans motif » refusé avec son message.
- La description textuelle du cas d'utilisation « Réserver un matériel » : une étape et un scénario d'erreur.
- Les tests : les cas de recette R-01 à R-03 (rejoués en non-régression) et un nouveau cas pour le motif ; le test de l'ENF-05 si le temps de réservation risque d'augmenter.
- La documentation d'utilisation, si elle décrit le formulaire.
Tu avais trouvé ?