Tous les articles

Modéliser les états avant d'écrire les écrans

Un statut ajouté après coup dans une liste déroulante finit en conditions dispersées dans tout le code. Le graphe des états se dessine avant.

·2 min de lecture

Une commande peut être en attente, validée, préparée, expédiée, livrée, annulée, ou retournée. Ces sept mots ont l’air d’une simple liste. Ils décrivent en réalité un ensemble de règles que personne n’a écrites.

La liste déroulante n’est pas un modèle

Quand les états vivent dans un champ texte alimenté par une liste, rien n’empêche de passer directement de « en attente » à « livrée », ni de rouvrir une commande annulée.

Le contrôle finit par exister — sous forme de conditions dispersées dans les écrans, dans les exports, dans les traitements de nuit. Elles ne s’accordent pas toujours, et personne ne peut répondre à la question « quelles transitions sont autorisées ? » autrement qu’en lisant le code.

Écrire le graphe

Deux colonnes, sur une feuille : chaque état, et les états vers lesquels il peut mener. Une demi-heure avec le métier.

L’exercice fait apparaître les questions restées en suspens. Une commande expédiée peut-elle être annulée ? Que devient le stock ? Une commande retournée revient-elle à « livrée » ou passe-t-elle dans un état distinct ? Ces réponses ont un impact comptable, et elles se donnent mieux avant qu’après.

Le graphe devient ensuite une table dans le code : une transition non déclarée est refusée, où qu’elle soit demandée.

Les effets de bord se rattachent à la transition

Un courriel part au passage à « expédiée ». Le stock est décrémenté au passage à « validée ». La facture est émise au passage à « livrée ».

Attacher ces effets aux transitions plutôt qu’aux écrans garantit qu’ils se produisent quel que soit le chemin — depuis l’interface, depuis un import, depuis une interconnexion. C’est ce qui évite les commandes expédiées sans courriel parce qu’elles ont été traitées par lot.

Les états terminaux

Certains états sont définitifs : annulée, archivée. Le déclarer explicitement empêche des réouvertures accidentelles, et permet aux traitements de nuit d’ignorer ces enregistrements sans condition supplémentaire.

C’est aussi ce qui rend l’archivage possible : sans état terminal identifié, aucune règle de purge ne peut être écrite sans risque.

Le bénéfice le plus visible

Le graphe se lit par une personne non technique. Il devient le document de référence commun entre le métier et le développement, et il rend les demandes d’évolution beaucoup plus précises : « ajouter un état entre préparée et expédiée » remplace « il faudrait pouvoir suivre ce qui est en cours de conditionnement ».