Document ID: /fineweb-2-swissfilter-quality_10-filterrobots/filtered/07092.jsonl.gz/795

Le problème
Il y a quelque temps, je devais développer un logiciel pour un client qui contenait beaucoup de boutons de commande. Pour la plupart des boutons, il y a des conditions du genre :
- Si on clique sur "Ajouter" et qu'une édition est en cours ...
- Si on clique sur "Enregistrer" et que c'était un ajout ...
- Si on est en train éditer ou d'ajouter une donnée ...
Étant donné la quantité de boutons et de conditions, je me retrouvais rapidement dans un situation pénible pour gérer tous les cas de figure. De plus, je n'étais pas convaincu que le mandant arrivait à m'aider à définir toutes les conditions avant l'écriture du code. Donc, je m'attendais à une phase de tâtonnement avant de livrer la première version.
La proposition de solution
Il se trouve que, par hasard, à ce moment-là je suivais un cours sur la modélisation avec Monsieur Medard Rieder qui est très versé dans le développement d'applications embarquées. Nous avons notamment parlé de logiciels de commande d’ascenseurs. La problématique est assez comparable à la mienne. Beaucoup de boutons de commande et des conditions du genre :
- Si l'utilisateur choisi le deuxième alors qu'il est au rez ...
- Si un utilisateur appelle l'ascenseur ...
- Si quelqu'un appelle ascenseur alors qu'il est au même étage ...
Pour résoudre ce problème, cela fait longtemps que les électroniciens ont résolu ce problème. Pour ce faire ils utilisent les machines à états (Finite State Machine).
Rational Rose
Pour ce cours de modélisation, nous avons utilisé Rational Rose. Concernant les machines à états, ce logiciel permet de les modéliser en UML grâce au diagramme d'états-transitions. Ensuite, le code source peut être généré dans différents langages de programmation.
Le but est atteint, mais à quel prix ? Rational Rose est un excellent produit, ce que je viens de présenter n'est qu'une infime partie de la partie émergée de l'iceberg. Le revers de la médaille c'est que les licences sont coûteuses et donc largement disproportionnées pour résoudre mon problème de base.
Produit plus réaliste pour mes besoins
Ce que j'aimerais c'est rational rose, mais en moins cher. Je m'attends donc à devoir faire des compromis, mais voici les points importants
- Représentation graphique de la machine à états (idéalement UML)
- Passage automatique de la version graphique au code source (Java dans mon cas)
- Bon marché
Editeurs UML
D'abord, je me suis concentré sur les produits concurrents à Rose, mais open source. Tout ce que j'ai vu était nettement inférieur à ma référence, mais également beaucoup moins onéreux.
Il y a d'abord les logiciels de schématique UML que j'utilise régulièrement : Violet et UMLet Ils sont très simples et permettent de modéliser rapidement. Par contre le passage du modèle au code se faire manuellement.
ArgoUML permet de générer du code, mais d'après mes souvenirs, seulement pour le diagramme de classe.
Je n'avais pas tellement confiance en BOUML car l'auteur venait de se fâcher avec un administrateur de Wikipedia et qu'il voulait laisser tombé le projet.
SCXML
Ensuite, j'ai cherché un éditeur de machine à états et je suis tombé rapidement sur SCXML.
Par contre la symbolique n'est pas l'UML, mais bon le rapport qualité/prix m'a eu l'air suffisant pour l'étudier attentivement...