Outil graphique complet pour modéliser, éditer et exporter des automates temporisés étendus par des données.
Cet outil s'adresse principalement à la modélisation pour la vérification formelle.
- Démarrage Rapide
- Fonctionnalités
- Manuel d'Utilisation
- Architecture et Formats
- Raccourcis Clavier
- Dépannage
- Décompressez l'archive
.zipdisponible dansshare/linux. - Double-cliquez sur l'exécutable
ta-guipour lancer l'application.
- Python 3.10 ou supérieur
-
Créer un environnement virtuel :
python -m venv venv source venv/bin/activate -
Installer les dépendances :
pip install -r requirements.txt
python main.pyL'interface graphique s'ouvrira, vous présentant une zone de travail vierge prête à l'emploi.
Si vous souhaitez générer un exécutable portable pour votre système d'exploitation,
-
Assurez-vous d'avoir installé PyInstaller dans votre environnement :
pip install pyinstaller
-
Lancez la commande de compilation depuis la racine du projet :
pyinstaller --noconsole --onefile --add-data "resources:resources" --name "nom_souhaité_pour_votre_exe" main.py
-
Une fois terminé, l'exécutable final se trouvera dans le dossier
dist/. (Note: sous macOS, utilisez--windowedà la place de--noconsoleet partagez le.appcompressé en zip).
- Modélisation visuelle : Création de localités et de transitions par pointer-cliquer.
- Trajectoires personnalisées : Contrôle fin des flèches via des points de pliage (nails).
- Horloges globales : Déclaration centralisée des variables temporelles via la barre d'outils.
- Invariants : Ajout de contraintes de séjour sur les localités (ex:
x <= 5). - Gardes & Actions : Définition de conditions de franchissement et d'événements de synchronisation sur les transitions.
- Resets : Remise à zéro sélective des horloges lors des franchissements.
-
Import / Export JSON : Format standardisé pour assurer la portabilité et la comptabilité avec d'autres outils comme UPPAL.
-
Éditeur de données étendues : Interface dédiée ("Data") pour définir des structures, alias, variables initiales et fonctions de mise à jour.
- Ajouter un état : Cliquez le petit cercle sur la barre d'outils "Nouvelle Localité" puis cliquez sur le canvas. Le premier état créé est automatiquement défini comme état initial (double bordure).
- Ajouter une transition : Cliquez sur "➔ Nouvelle Transition", puis reliez un état source à un état cible.
- Définir des horloges : Utilisez l'icône 🕒 dans la barre d'outils pour ajouter de nouvelles horloges (ex:
x,y). - Éditer les contraintes : Sélectionnez une localité ou une transition avec le clic gauche. Le panneau de droite s'ouvre pour vous permettre d'ajouter des invariants, des gardes, ou des actions.
- Sauvegarder : Allez dans Fichier > Sauvegarder ou faite " Ctrl + S" pour sauvegarder modèle sous JSON.
💡 Astuce : Vous pouvez annuler l'outil en cours d'utilisation en appuyant sur la touche Échap ou avec un clic droit sur le canevas.
Le projet respecte scrupuleusement le patron de conception MVC (Model-View-Controller), garantissant un code découplé et maintenable :
- Model (
model.py) : Gère les données de l'automate indépendamment de l'interface. - View (
View/) : Composants PySide6 gérant exclusivement l'affichage et les interactions utilisateur. - Controller (
controller.py) : Orchestre les événements entre la vue et le modèle.
Les modèles sont exportés en JSON. Les contraintes saisies humainement (ex: x <= 5) sont compilées en matrices DBM (via utils/dbm_engine.py) pour une compatibilité directe avec les outils de vérification formelle. À l'ouverture d'un fichier, l'opération inverse est effectuée pour restaurer l'affichage textuel dans l'interface de manière transparente.
Si vous souhaitez générer un exécutable portable autonome pour votre système d'exploitation, l'outil utilise PyInstaller.
- Assurez-vous d'avoir installé PyInstaller dans votre environnement :
pip install pyinstaller
- Lancez la commande de compilation depuis la racine du projet :
pyinstaller --noconsole --onefile --add-data "resources:resources" --name "nomdeexe" main.py
- Une fois terminé, l'exécutable final se trouvera dans le dossier
dist/. (Note: sous macOS, utilisez--windowedà la place de--noconsoleet partagez le.appcompressé en zip).
| Raccourci | Action |
|---|---|
Cmd+N / Ctrl+N |
Créer un nouvel automate vierge |
Cmd+O / Ctrl+O |
Ouvrir un fichier JSON existant |
Cmd+S / Ctrl+S |
Sauvegarder l'automate courant |
Échap |
Annuler le mode de création en cours ou l'action en cours |
Clic Gauche |
Ouvrir le panneau de propriétés (nœuds/transitions) ou le menu d'édition (horloges/actions) |
Clic Droit |
Annuler le mode de création en cours sur le canevas |
| Problème | Solution |
|---|---|
| L'application ne démarre pas | Vérifiez que le module PySide6 est bien installé (pip install -r requirements.txt) et que votre version de Python est ≥ 3.10. |
| Impossible d'ajouter un nœud/flèche | Vérifiez que l'outil correspondant est bien en surbrillance dans la barre d'outils en haut de la fenêtre. |