Pré. | Proc. |
Analyseur de State
L' Analyseur de State est une fonctionnalité qui permet d'analyser, de détecter et d'enregistrer les états des instances d'une Class. La fonctionnalité fonctionne en combinant une définition d'état (définie sur une classe comme une contrainte) et des marqueurs appelés points State . Il est disponible pour tous les langages supportés par l' Analyseur d'Exécution , y compris Microsoft.NET, Mono, Java et C++ natif.
Nous commençons par sélectionner une classe et composons notre définition d'état.
Nous pouvons obtenir une image de toutes les définitions d'état que nous avons définies en plaçant la classe sur un diagramme et en la liant aux notes de classe qui sont elles-mêmes liées à une contrainte de définition d'état particulière. Nous expliquons comment procéder dans une section ultérieure.
Les points State sont définis en plaçant un ou plusieurs marqueurs dans le code source pertinent.
Le programme à analyser est exécuter à l'aide de la commande Analyseur de State . Lorsque l' Analyseur d'Exécution rencontre un point d' State , l'instance courante de la Classe est analysée. Lorsque le domaine de valeur de l'instance correspond à la définition d'état, un état est enregistré. A chaque variation de l'instance, de nouveaux états sont ainsi détectés. Le contrôle répertorie chaque état au fur et à mesure qu'il est découvert. Sous chaque état, le contrôle répertorie l'ensemble discret de transitions vers d'autres états effectuées par des instances de la classe.
Les informations peuvent être utilisées pour créer une Statemachine .
En utilisant les mêmes informations, nous pouvons facilement produire une Carte de Chaleur . Cet exemple montre une classe 'Train', sa définition d' State 'Bulletin' (sous forme de note liée) et la Carte de Chaleur qu'elle a produite. Les chiffres de la carte sont des pourcentages. Sur la carte, nous pouvons observer que les trains étaient dans l'état "En transit" 46 % du temps.
Il s'agit de l'analyse de la définition d' State du « Bulletin » qui a produit notre Carte de Chaleur .
Accéder
Ruban |
Exécuter > Outils > Enregistreur > Ouvrir Enregistreur > Analyseur de State Conception > Elément > Editeurs > Contraintes |
Définitions de State
Définitions de State sont composées dans les propriétés Constraints d'un élément Class. Le type de contrainte doit être nommé StateDefinition.name , où 'name' est votre choix de titre pour la définition. Ces titres sont listés dans la liste déroulante de l' Analyseur de State chaque fois qu'une classe est sélectionnée. Vous sélectionnez une seule définition dans cette zone de liste déroulante avant d'exécuter le programme. La définition d' State dans notre exemple est nommée "StateDefinition.Location". Il définit les états en fonction de l'emplacement des instances de la classe CTrain.
Définitions de State sont composées d'une ou plusieurs spécifications. Chaque spécification d'état commence par le mot clé 'statedef' qui est ensuite suivi d'une ou plusieurs instructions. Les instructions définissent les contraintes qui décrivent l'état, et éventuellement une variable dont la valeur peut être utilisée pour nommer l'état. Les instructions sont entourées d'accolades et se terminent par un point-virgule, comme indiqué :
statedef {
Location=0;
Nom.de.départ ;
}
Nommer les états à l'aide de variables
Dans cet exemple, 'Location' est une constante et 'Departing.name' est une variable. Une instruction supplémentaire suit les contraintes et indique le nom de l' State à attribuer à partir de la variable valeur . Voici la définition avec la directive de nommage.
statedef {
Location=0;
Nom.de.départ ;
}
name=Departing.Name;
Nommer les états à l'aide de littéraux
Dans cet exemple, la définition State ne contient que des constantes et l'état est nommé à l'aide d'un littéral.
statedef {
Location=100;
}
nom='Central' ;
Une définition d' State unique définissant plusieurs spécifications d' State .
statedef {
Passagers > 100 ;
}
nom=Occupé ;
statedef {
Passagers >= 50 ;
}
nom=Silencieux ;
statedef {
Passagers < 50 ans ;
}
nom=très silencieux ;
statedef {
Passagers = 0 ;
}
nom=inactif ;
State par défaut
Une définition State peut spécifier un état « fourre-tout » par défaut qui décrira l'état d'une instance lorsqu'aucun autre état n'est vrai. Vous définissez un état par défaut pour la définition avec une déclaration ressemblant à ceci :
statedef {
Location=0;
Nom.de.départ ;
}
name=Departing.Name;
par défaut=Déplacement ;
Dans cet exemple, pendant que l'exécution est en cours, toute instance détectée ayant un attribut 'Location' différent de zéro sera enregistrée comme étant dans l'état 'Moving'.
Vous pouvez choisir d'exclure l'enregistrement de l'état par défaut en désactivant l'option 'Inclure l'état par défaut' dans le menu déroulant de la barre d'outils de l' Analyseur de State . Cela exclurait les transitions vers tout état « par défaut » enregistré.
Création de Notes sur un élément de classe affichant des Définitions de State
Cette section décrit comment créer le diagramme de classe qui montre toutes les définitions d' Définitions de State définies pour la classe.
Actions
Afficher un diagramme de classe |
Ouvrez un diagramme de classe existant ou créez-en un nouveau. |
Créer un lien vers l'élément Class |
Faites glisser la classe d'intérêt sur le diagramme en tant que lien. |
Créer un élément de note |
Créez un élément de note sur le diagramme et liez-le à la classe. |
Lier la note à la définition d' State |
Sélectionnez le lien entre la Note et la Classe et, à l'aide de son menu contextuel, sélectionnez l'option 'Lier la Note à la Fonctionnalité de l'élément'. |
Choisissez la définition à afficher sur la Note |
Dans la boîte de dialogue de l'élément, choisissez "Contraintes" dans la liste déroulante. Toutes les définitions Définitions de State définies seront listées pour que vous puissiez choisir. |
Répéter |
Répétez la procédure pour toutes les autres Définitions de State de la classe. |