User Story et Informatique industrielle

Après une introduction sur les base de ce concept, penchons-nous sur la question des stories en environnement industriel.

Et l’info indus ?

C’est la même chose qu’en IT… Avec probablement deux nuances de taille.

  • l’Utilisateur est possiblement un autre système. Et suivant la complexité de l’ensemble, il sera pertinent d’envisager des sous-systèmes qui deviennent autant d’Utilisateurs potentiels. Cela suppose donc, certainement, une modélisation préalable en composants matériels-logiciels (HW-SW).
  • De plus, un préalable non-dit des stories est que le contrôle du système se fait au travers des interactions avec l’extérieur. Autrement dit, l’intelligence embarquée est plus ou moins liée directement à une interaction avec un « Utilisateur » externe.
    Ce qui est bien le cas généralement en IT (pas toujours, l’informatisation d’un workflow ou d’un traitement batch sont des contre-exemples ici) et pas forcément en info indus.

Modélisation agile

Notez qu’une modélisation agile, comme tout artefact, respecte les principes de « petits stocks » ou « feedback concret rapide ». Autrement dit, pas de « grosse modélisation » sans feedback concret qui valide au fur et à mesure. Par ailleurs, la conception émergente implique un refactoring qui permet d’adapter l’artefact aux évolutions. Autrement dit, la modélisation se fait progressivement, au fur et à mesure des nécessités et ce qui est déjà modélisé est éventuellement mis à jour pour autoriser les évolutions.

Un cas concret

Commençons par le diagramme de contexte. Prenons l’exemple d’un boitier « centrale incendie ». Il reçoit des données de capteurs (fumée, ouverture porte…) et, si nécessaire, actionne des dispositifs (ouverture d’aération, fermeture de porte…). Prenons le cas simple de deux features.

Contexte « centrale incendie »

« Capteurs » constitue un Utilisateur, un « acteur » au sens UML. Nous pouvons donc envisager des stories du style

En tant que Capteur
J’envoie une donnée de température…

En effet, le composant ou sous-système en interface dialogue par définition avec les Utilisateurs.

Diagramme de sous-systèmes

Voyons maintenant un diagramme de composants*. Pourquoi ? Car la complexité du système fait que l’intelligence embarquée est bien plus « importante » que le nombre d’interactions. Une story implique probablement de nombreux tests d’acceptation.

Composants de la « centrale incendie »

Désormais, chacun de ces composants ou « sous-systèmes » devient « système » à son tour (le sens des dépendances <<use>> reste… pifométrique ici, peu importe).

Si nous considérons maintenant le (sous-)système « Interface Capteurs », nous pouvons rédiger des stories telles que (sachant que la modélisation comprend deux « utilisateurs » pour ce sous-système) :
En tant que Capteur
J’envoie une détection de fumée

ou bien
En tant que Superviseur
Je suis informé d’une détection de fumée

De même au niveau du (sous-)système « Contrôleur Actionneurs »
En tant que Superviseur
Je ferme une porte en stoppant l’électro-aimant

Nous pourrions d’ailleurs créer les diagrammes « contexte système » de chacun des sous-systèmes, par exemple :

Contexte sous-système Interface Capteurs

Quand les stories ne sont pas adaptées…

Le concept de user story n’est pas toujours adapté. Ou bien au prix de découpages qui finissent par ne plus avoir aucun sens. Heureusement, il existe des concepts complémentaires. Nous verrons cela dans un futur billet.

* Il existe certainement de bien meilleures modélisations des sous-systèmes….