Simulation de modèle de State Machine avec Enterprise Architect

Webinaire August 2017
Dans ce webinaire, vous apprendrez à
  • Modèlez et designez une State Machine représentant un Joueur Audio
  • Simulez le fonctionnement du joueur audio à l'aide d'une state machine exécutable.
  • Produisez le code et implémenter un prototype basé sur le Web d'un Joueur Audio.

Comment pouvez-vous générer le code d'une State Machine Exécutable pour construire un prototype basé sur le Web?

Enterprise Architect vous permet de modeler, construire et simuler une State Machine Exécutable. Nous utiliserons un exemple de Joueur Audio pour montrer comment vous pouvez modeler le comportement de système et générer le code d'une State Machine Exécutable.

Non seulement la simulation nous aide à mieux comprendre le comportement de système, mais il peut aussi produire le code de Javascript qui nous permet de développer une application Web commode pour un Joueur Audio virtuel.

Scott Hebbard
Scott Hebbard

Questions de l'auditoire

Cliquez sur une question pour voir la réponse.

Général

Quelle version d'Enterprise Architect avez-vous utilisée dans la démonstration?

J'ai utilisé Enterprise Architect 13.5, Build 1351,

Comment puis-je apprendre plus de Simulation Modèle?

Le manuel de l'utilisateur d'Enterprise Architect fournit une vue d'ensemble complète de Simulation modèle. Pour plus d'informations, plaisez voir le sujet d'Aide Simulation Modèle.

Qu'est-ce qui devrait être minimal la version de logiciel d'Enterprise Architect pour exécuter la simulation de statemachine?

Génération de Code pour Stateachines Exécutables est supportée dans les éditions Ultimate et Systems Engineering d'Enterprise Architect. Pour référence, voir notre Page de Comparer les Éditions.

En plus d'un enregistrement du webinaire pour le visionnage postérieur, pourrez-vous partager le modèle étant démontré pour une utilisation pratique?

Oui. Nous avons utilisé le modèle d'Exemple EA pour votre commodité. Une copie du modèle d'EAEXAMPLE est livrée avec chaque copie d'Enterprise Architect.

Où est le Modèle d'Exemple d'Enterprise Architect situé ?

Le fichier est EAExample.eap, qui est typiquement trouvé dans l'installation le Répertoire. Sur Windows, un chemin de fichier typique serait:

C:\Program Files (x86)\Sparx Systems\EA

Où se trouve l'exemple de lecteur de CD dans le Navigateur de Projet du modèle d'exemple EA?

Le Chemin du lecteur de CD Modèle dans le Navigateur de Projet du modèle d'Exemple EA peut être situé:
Example Model.Model Simulation.Executable State Machine.Example: CD Player.CD Player Simulation.

Quelle version d'Enterprise Architect a cette fonction pour générer le code JavaScript?

Les capacités de génération de code sont disponibles dans Enterprise Architect 13 et ci-dessus. Enterprise Architect a été capable de simuler une Statemachine pendant quelque temps.

Voulez-vous envoyer un é-mail pour obtenir l'accès au webinaire enregistré et télécharger l'exemple de code?

Oui. Nous envoyons par courrier électronique tous les participants enregistrés pour les informer de la publication du webinaire. Le catalogue arrière de tous les webinaires précédents sont disponibles via notre Bibliothèque Webinaire.

Ainsi, j'ai l'édition actuelle d'ingénierie des systèmes et je regarde le Sparx Systems\EA Répertoire ... dans lequel sous-répertoire est le modèle?

Le fichier est EAExample.eap, qui se trouve généralement dans le répertoire d'installation:
C:\Program Files (x86)\Sparx Systems\EA
Le chemin du navigateur de projet peut être situé:
Example Model.Model Simulation.Executable State Machine.Example: CD Player.CD Player Simulation.

Simulation et Génération de Code

J'ai généré un code JavaScript, mais quelles autres alternatives sont disponibles?

Cinq langues sont actuellement supportées. Ces langues incluent C, C++, C#, Java et JavaScript.

Avez-vous plus d'exemples de Statemachines Executable?

Oui. Une Expression Régulière et un exemple de CD sont disponibles du sujet d'Aide
Exemple: Simulation en HTML avec JavaScript.

Pourriez-vous avoir montré une simulation similaire, mais en générant automatiquement le code dans une autre langue comme ASP.NET?

ASP.net n'est pas actuellement supporté pour la génération de code automatique d'une Statemachine Exécutable. Cependant, d'autres langues incluant C, C ++, C *, Java et le Javascript sont supportées.

Est-ce que Enterprise Architect supporte-t-il C# pour Génération de Code de Simulation de Statemachine?

Oui.

Sont les modèles de génération de code pour ce code de simulation éditable? # Le code dans une autre langue comme ASP.net?

Oui. Il y a deux façons

  1. Vous pouvez modifier les modèles afin que toute la génération de code supplémentaire utilise le modèle personnalisé. Utilisez le ruban Code | Configurez | Editeur de Modèle de Code. In the Language champ choisissez l'une des: STM_C, STM_C#_Structured, STM_C++_Structured, STM_JAVA_Structured, STM_JavaScript
  2. Vous pouvez modifier le code produit directement. Quand vous voulez simuler avec le code modifié, NE PAS "générer", qui écrasera le code personnalisé. Compilez juste ( ne pas nécessaire pour le Javascript) et exécuté.

Un événement peut-il être publié d'une classe à une autre classe? Par exemple, une simulation de transmission de gaz envoyant des événements à une simulation de moteur?

Oui. Vous pouvez émettre un événement à tous les cas ou envoyer l'événement à un cas spécifique.
Reportez-vous à l'exemple dans le sujet d'aide Exemple: Deferred Event Pattern.

Pour supporter la génération de code pour des langues plusieurs avec le même modèle, nous avons présenté deux macros:
%SEND_EVENT(Event Name In Quotes, CONTEXT_REF(instance name))%
%BROADCAST_EVENT(Event Name In Quotes)%

Exemple d'utilisation:
%SEND_EVENT("NEW_REQUEST", CONTEXT_REF(server))%
%BROADCAST_EVENT("NEW_REQUEST")%

Je comprends que la statemachine d'UML permet d'opérations avec des paramètres. Comment le modelez-vous?

Vous pouvez définir des opérations avec des paramètres dans la classe (possédant le statemachine), appeler ensuite les opérations dans le comportement de l'état ou l'effet de la transition en spécifiant des arguments.
Pour exemple, MyClassdéfinit une opération int AddTwoNumbers(int MyParam)et trois attributs:int nOne; int nTwo; int nThree
Maintenant, dans le comportement d'entrée d'un InitState, nous spécifions le code initial comme suit:
nOne = 5;
nTwo = 6;
Dans le comportement d'entrée de MyState, nous spécifions le code initial comme suit:
nThree = AddTwoNumbers(nOne, nTwo);
Lorsque cet état est actif, la valeur d'exécution de:
nThree will be 11.

Autre

La simulation fonctionnera-t-elle avec le lecteur de CD comme un Bloc de SysML au lieu d'une classe?

Un Bloc est un type de la Classe, si oui, si vous configurez le Bloc avec les Attributs nécessaires et les Opérations il les utilisera ceux pendant la génération de codes.

Peut il l'interface aux dispositifs externes comme PLCs?

La Simulation génère un code basé sur le modèle de Statemachine. Ce modèle peut avoir des déclencheurs. Ces déclencheurs peuvent provenir de périphériques externes comme les PLC, mais vous devez vraiment changer le code généré pour configurer votre interface à ceux-ci.

Consultez la section Utilisation du code existant dans le rubrique d'aide:
Génération de code pour Executable Statemachines.

Il semble que le C, C ++ et d'autres langues compilées exigerait la compilation. N'est-ce pas ? Donc il exigerait qu'un peu de configuration pour connecter Enterprise Architect au compilateur et l'exécution?

Oui. Ceci est expliqué dans la rubrique d'aide Génération de code pour Statemachines Executable.

Vous devez assurer que vous faites configurer votre génération de code à l'interface avec votre IDE et vous devez changer Element.Language de Javascript à C ++ dans la <<StateMachine<< Exécutable et artefact..

Aussi pour C ++, notez que les instructions utilisent une notation différente:

JavaScript:
this.currentTrack=0;

C++:
this->currentTrack=0;

Vous devez donc modifier ces instructions dans les opérations et les transitions.

Nous envisageons de fournir une nouvelle fonctionnalité pour améliorer cette transition.

Si j'ai changé le code généré par Enterprise Architect à l'extérieur de Enterprise Architect pour ajouter des fonctions détaillées. Pourrais-je importer ce code à Enterprise Architect donc il ne serait pas écrasé sur des améliorations d'Enterprise Architect après l'importation?

Enterprise Architect supporte en avant l'ingénierie de modèles comportementaux. Il ne supporte pas de rétro-ingénierie d'entre ceux pour des raisons évidentes.
Si vous voulez modifier le code, ensuite il est préférable il dans le modèle puis de le générer.

Les diagrammes de séquence peuvent-ils être générés à partir du résultat de la trace de simulation?

Pas directement dans le cadre du processus de simulation.
Cependant, les diagrammes de séquence peuvent être générés du code utilisant les l'Analyseur d'Exécution Visuel d'Enterprise Architect. Voir le sujet d'Aide Enregistrement

Comment éviter que la version prochaine du code généré écrase vraiment le code de mise en œuvre détaillé que nous avons écrit?

Si vous mettez à jour le code généré à l'extérieur du modèle alors comme il n'y a aucune rétro-ingénierie de code modèle comportemental, ceci ne sera pas mis à jour dans le modèle. Ainsi, si vous modifiez le code, c'est le meilleur vous ceci faire dans le modèle ou supposer que la modélisation est complète et ceci faire séparément à la modélisation.

Comment Enterprise Architect supporte-t-il l'analyse statistique pour valider des modèles ?

Sparx Systems BPSim l'MDG supporte l'analyse statistique de simulations. Comme Statemachines sont plus du minutage, la logique et le débogage ces stats ne sont pas enregistrées pour une simulation de Statemachine Exécutable.

Pouvons-nous simuler et produire le code de base pour plus qu'une langue?

Oui.

Envoyez S'il vous plaît des infos sur l'accouplement avec OpenModelica?

Enterprise Architect supporte vraiment l'interface avec OpenModelica pour la simulation Paramétrique SysML. Il ne fournit pas le support d'OpenModelica pour StateMachines Exécutable.

Puis-je ajouter une simulation de diagramme d'activité à la transition d'état?

Pour une simulation modèle Comportementale standard dans Enterprise Architect, vous pouvez appeler un diagramme d'Activité d'un État dans un diagramme de Statemachine, dans le cadre de la simulation. Pour la simulation via Statemachines Exécutable - ces seuls supports la génération de code de Statemachines, pas d'autres modèles Comportementaux comme des Activités.

La génération de code modèle comportementale de d'Enterprise Architect supporte vraiment la génération l'Activité, Sequence et Statemachines pour coder. Il ne supporte pas de simulation.

Quelle est l'idée de l'Artefact Statemachine Exécutable et quel est son but pour la génération de code. Est-ce que nous pouvons personnaliser le le gabarit pour générer le code?

L'Artefact de Statemachine Exécutable peut apparaître redondant en exécutant seulement un cas seul d'une Classe contenant un Statemachine. Le but de l'Artefact est d'assurer que vous pouvez simuler les cas multiples de votre Classe/Statemachine en créant des Artefacts multiples pour couvrir ceux-ci.

Pour des exemples d'utilisation de plusieurs instances, consultez la rubrique d'aide:
Exemple Statemachine Executable.

Où pouvons-nous obtenir une copie du modèle que vous utilisez?

Dans le EAExampe.eap répertoire fourni avec Enterprise Architect.

Voir le fichier EAExampe.eap dans le répertoire ...\Program Files (x86)\Sparx Systems\EA.

Voir le paquetage Example Model.Model Simulation.Executable State Machine.Example: CD Player.

Est-ce possible de définir des cas de test automatisés pour la statemachine exécutable pour le vérifier?

Les Cas de Test automatisés peuvent être générés dans Enterprise Architect de Scénarios de Cas d'Utilisation. Si, dans votre modélisation, vous avez défini un ensemble de Scénarios de Cas d'Utilisation avant et la couverture de la création de votre Statemachines, alors ces Cas de test peuvent être générés des Scénarios pour l'utilisation avec le Statemachines.

Si nous générons le code est-ce possible de synchroniser des changements de code en arrière au modèle?

Enterprise Architect supporte en avant l'ingénierie de modèles comportementaux. Il ne supporte pas de rétro-ingénierie d'entre ceux pour des raisons évidentes.

Si vous souhaitez modifier le code, il est préférable de le faire dans le modèle et de le générer.
Cependant vous pouvez importer le code, mais on ne le recommande pas.

Est-il possible de simuler des modèles avec plusieurs instances dans Enterprise Architect?

Oui, utilisant plusieurs artefacts représentant la même statemachine. Pour plus de détails, reportez-vous au sujet d'aide Artefact de Statemachine Exécutable.

Comment peut une fonction externe être appelé de l'intérieur de la statemachine ou: Comment intégrer la statemachine dans d'autre logiciel?

Après la génération du code vous pouvez modifier l'utilise cet éditeur de code d'Enterprise Architect et ajouter de nouvelles fonctions ou appeler des fonctions externes comme vous modifieriez un code dans un IDE. Vous pouvez aussi modifier le code dans n'importe quel IDE ou l'éditeur qui supporte votre langue cible

Est-il possible d'effectuer des simulations sur des diagrammes composites?

Oui.

Quelle version d'Enterprise Architect supporte la simulation d'une statemachine?

Simulation des Statemachines Exécutables est supportée dans les éditions Ultimate et Systems Engineering d'Enterprise Architect. Pour une comparaison détaillée d'éditions d'Enterprise Architect, voir notre
Page de Comparer les Éditions.

La génération de code à partir d'une statemachine exécutable exigent une sorte spéciale de Licence?

La génération de Code pour des Statemachines Exécutables est soutenue les éditions Ultimate et Systems Engineering d'Enterprise Architect. Pour une comparaison détaillée d'éditions d'Enterprise Architect, voir notre
Page de Comparer les Éditions

Est-il possible d'exporter le modèle de statemachine vers un fichier formaté JSON?

Enterprise Architect supporte l'exportation du modèle au format XMI, mais pas au format JSON.

Le code C généré peut-il être facilement ou rapidement personnalisé aux besoins de programmeurs ? (Exemple: ajoutez un en-tête de fonction spécifique à chaque fonction ou changez l'indentation)

Oui.

La simulation est-elle encore une interprétation du modèle ou une exécution du code généré?

C'est l'exécution du code généré.