Réserver une Démo
Pré. Proc.

Génération de code – Statemachines

Une Statemachine illustre comment un object (représenté par une classe) peut changer d'état, chaque changement d'état étant une transition initiée par un déclencheur découlant d'un événement, souvent sous des conditions ou des contraintes définies comme des gardes. Au fur et à mesure que vous modélisez la façon dont l' object change d'état, vous pouvez générer et construire (compiler) du code à partir de celui-ci dans le langage logiciel approprié et exécuter le code, en visualisant l'exécution via le simulateur Modèle .

Il est également possible, dans Enterprise Architect , de combiner les Statemachines d'objets distincts mais liés pour voir comment ils interagissent (via Broadcast Événements ), et de créer et générer rapidement du code à partir de variantes du modèle. Par exemple, vous pouvez modéliser le comportement de :

  • La roue arrière côté passager d'un véhicule en modes traction arrière et traction avant (un seul Statemachine )
  • Le volant et les quatre roues motrices d'un véhicule en mode 4 roues motrices (cinq Statemachines )
  • Les roues d'un véhicule tout-terrain et d'une voiture de sport (deux artefacts, instances d'une combinaison de Statemachines )
L'élément Statemachine Exécutable Artifact est d'une importance cruciale pour générer et tester le code de toutes ces options. Il agit comme conteneur et unité de génération de code pour vos modèles Statemachine .

Vous n'utilisez pas cette méthode pour générer du code pour les langages de définition de matériel, mais vous pouvez également générer du code HDL et du code logiciel à partir de Statemachines à l'aide des facilités génériques de génération de code dans Enterprise Architect (voir les procédures Générer Code Source ).

Prérequis

  • Sélectionnez « Paramètres > Modèle > Options > Ingénierie du code source » et, pour le langage de codage logiciel approprié (Java, C, C# ou ANSI C++), définissez l'option « Utiliser la nouvelle Statemachine Gabarit » sur « Vrai »
  • Si vous travaillez en C++, sélectionnez « Paramètres > Modèle > Options > Ingénierie du code source > C++ » et définissez l'option « Version C++ » sur « ANSI »
Cette méthode de génération de code ne s'applique pas aux gabarits de génération de code Legacy Statemachine développés avant Enterprise Architect Release 11.0, ni à la génération de code Hardware Definition Language.

Accéder

Faites glisser un artefact Statemachine Exécutable depuis la page « Simulation » de la boîte à outils Diagramme vers votre diagramme . La page « Simulation » de la boîte à outils Diagramme est accessible à l'aide de l'une des méthodes décrites dans ce tableau .

Ruban

Conception > Diagramme > Boîte à outils > Simulation

Raccourcis Clavier

Ctrl+Maj+3 > Simulation

Autre

Vous pouvez afficher ou masquer la boîte à outils Diagramme en cliquant sur les icônesChevron Right ou Chevron Left à l'extrémité gauche de la barre de légende en haut de la Vue Diagramme .

Préparez votre (vos) diagramme (s) Statemachine

Étape

Action

Voir aussi

1

Pour chaque Statemachine vous souhaitez modéliser, créez un diagramme de classe.

Ajouter de nouveaux Diagrammes

2

Depuis la page « Classe » de la boîte à outils Diagramme , faites glisser l'icône « Classe » sur votre diagramme et donnez à l'élément un nom approprié.

Créer des éléments

3

Cliquez-droit sur l'élément Class et sélectionnez l'option de menu contextuel 'Nouveau Diagramme enfant | Statemachine '.

Donnez au diagramme de la Statemachine un nom approprié.

4

Créez le modèle Statemachine pour refléter les transitions appropriées entre States .

Statemachines

Configurer l'artefact Statemachine Exécutable

Étape

Action

Voir aussi

1

Créez un nouveau diagramme de classe pour contenir la ou les Statemachine modélisées à partir desquelles vous avez l'intention de générer du code.

Ajouter de nouveaux Diagrammes

2

Depuis la page « Simulation » de la boîte à outils Diagramme , faites glisser l'icône « Statemachine Exécutable » sur le diagramme pour créer l'élément Artefact. Nommez l'élément et faites glisser ses bordures pour l'agrandir.

Artefact

3

Depuis la fenêtre Navigateur , faites glisser l'élément Class (premier) contenant un diagramme Statemachine sur l'élément Artifact du diagramme .

La dialogue « Coller <nom de l'élément> » s'affiche. Dans le champ « Déposer sous », cliquez sur la flèche déroulante et sélectionnez la valeur « Propriété ».

(Si le dialogue ne s'affiche pas, appuyez sur Ctrl pendant que vous faites glisser l'élément Classe depuis la fenêtre Navigateur .)

Déposer des éléments depuis la fenêtre Navigateur

4

Cliquez sur le bouton OK . L'élément Class est collé à l'intérieur de l'artefact en tant que partie.

Partie

5

Répétez les étapes 3 et 4 pour toutes les autres classes avec Statemachines que vous souhaitez combiner et pour lesquelles vous souhaitez générer du code. Il peut s'agir de :

  • Répétez les « gouttes » de la même classe et de Statemachine , modélisation d'objets parallèles
  • Différentes classes et Statemachines , modélisation d'objets interactifs séparés

6

Cliquez-droit sur l'élément Artifact et sélectionnez l'option ' Propriétés > Propriétés ', développez la catégorie 'Avancé' et, dans le champ 'Langue', cliquez sur la flèche déroulante et définissez la langue du code sur la même langue que celle définie pour les éléments Class.

Vous pouvez maintenant faire glisser cet élément Statemachine Exécutable Artifact de la fenêtre Navigateur sur le diagramme autant de fois que vous le souhaitez et modifier les parties pour modéliser des variantes du système ou du processus, ou le même système ou processus avec différents langages de programmation.

Générer du code à partir d'un artefact

Étape

Action

Voir aussi

1

Cliquez sur l'élément Statemachine Exécutable Artifact et sélectionnez l'option de ruban 'Simulate > States Exécutables > Statemachine > Générer '.

La dialogue « Génération de code Statemachine exécutable » s'affiche.

2

Dans le champ « Répertoire de sortie du projet », saisissez ou recherchez le chemin du répertoire sous lequel créer les fichiers de sortie.

Lors de la génération de code, tous les fichiers existants dans ce répertoire sont supprimés.

3

Sélectionnez le système cible. Si vous travaillez sous Windows sélectionnez l'option « Local ». Si vous travaillez sous Linux, choisissez l'option « À distance ». Le choix affecte les scripts générés pour support la Simulation .

4

Dans le champ « Emplacement du répertoire d'installation de <compilateur> », saisissez ou recherchez le chemin du répertoire d'installation du compilateur, qui sera automatiquement mappé au chemin local (affiché à gauche du champ). Pour chaque langage de programmation, les chemins peuvent ressembler à ces exemples :

  • Java
    JAVA_HOME C:\Program Files (x86)\Java\jdk1.7.0_17
  • C/C++
    VC_HOME C:\Program Files (x86)\Microsoft Visual Studio 9.0
  • C#
    CS_HOME C:\ Windows \Microsoft.NET\Framework\V3.5

5

Cliquez sur le bouton Générer . Les fichiers de code sont créés en fonction du langage de programmation.

La fenêtre Sortie système s'affiche avec un onglet « Sortie Statemachine Exécutable », indiquant la progression et l'état de la génération.

Lors de la génération du code, une fonction de validation automatique est exécutée pour vérifier les erreurs diagramme ou de modèle par rapport aux contraintes UML . Les éventuelles erreurs sont identifiées par des messages d'erreur dans l'onglet ' Statemachine Exécutable Output'.

Double-cliquez sur un message d'erreur pour afficher la structure modélisation dans laquelle l'erreur se produit et corrigez l'erreur avant de régénérer le code.

6

Lorsque le code est généré sans erreur, cliquez sur l'élément Artifact et sélectionnez l'option de ruban « Simuler > States Exécutables > Statemachine > Construire » pour compiler le code.

La fenêtre Sortie système s'affiche avec un onglet « Créer », indiquant la progression et l'état de la compilation. Notez que la compilation inclut la configuration de l'opération de simulation.

Macros de génération de code

Vous pouvez également utiliser deux macros dans la génération de code pour Statemachines .

Nom de la macro

Description

ENVOYER_EVENEMENT

Envoyer un événement à un récepteur (la partie). Par exemple :

%SEND_EVENT("événement1", "Partie1")%

ÉVÉNEMENT DIFFUSÉ

Diffuser un événement à tous les récepteurs. Par exemple :

%BROADCAST_EVENT("événement2")%

Exécuter/simuler du code à partir d'un artefact

Étape

Action

Voir aussi

1

Sélectionnez l'option du ruban « Simuler > Simulation Dynamique > Simulateur > Appliquer l'espace de travail » pour afficher ensemble la fenêtre Simulation et la fenêtre Simulation Événements

Placez les deux fenêtres dans une zone pratique de l’écran.

Fenêtres de Simulation Fenêtre Simulation Événements

2

Sur le diagramme ou la fenêtre Navigateur , cliquez sur l'élément Artifact et sélectionnez l'option de ruban 'Simulate > States Exécutables > Statemachine > Exécuter '.

Le premier diagramme Statemachine de la série s'affiche avec la simulation du processus déjà démarrée. Dans la fenêtre Simulation , les étapes de traitement sont indiquées dans ce format :

[03516677] Partie 1 [Classe 1]. Initial_367_TO_State4_142 Effet

[03516683] Partie 1 [Classe 1]. StateMachine_State4 ENTRÉE

[03516684] Partie 1 [Classe 1].StateMachine_State4 DO

[03518375] Bloqué

3

Cliquez sur les boutons appropriés de la barre d’outils de la fenêtre de Simulation pour parcourir la simulation comme vous le souhaitez.

Lorsque la simulation se termine au niveau de l'élément Quitter ou Terminer, cliquez sur le bouton Arrêter dans la barre d'outils de la fenêtre Simulation .

Exécuter Simulation de Modèle

4

Lorsque la trace indique Bloqué, la simulation a atteint un point où un événement Déclencheur doit se produire avant que le traitement puisse continuer. Dans la fenêtre Simulation Événements , dans la colonne « Déclencheurs en Attente », double-cliquez sur le Déclencheur approprié.

Lorsque le Déclencheur est déclenché, la simulation continue jusqu'au prochain point de pause, Déclencheur ou sortie.

Déclencheurs Déclencheurs en Attente

Notes

  • Si vous apportez de petites modifications à un modèle Statemachine existant, vous pouvez combiner les opérations de génération, de construction et exécuter de code en sélectionnant l'option de ruban « Simuler > States Exécutables > Statemachine > Générer , construire et exécuter ».
  • Vous pouvez également générer du code en JavaScript

Apprenez Plus