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 Classe. 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 . Elle est disponible pour tous les langages pris en charge par l' Analyseur d'Exécution , y compris Microsoft.NET, Mono, Java et le C++ natif.
Nous commençons par sélectionner une classe et composer 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 établissant un lien vers les 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 du contrôle Analyseur de State . Lorsque l' Analyseur d'Exécution rencontre un point State , l'instance courante de la classe est analysée. Lorsque le domaine valeur de l'instance correspond à la définition de l'état, un état est enregistré. Chaque fois que l'instance varie, de nouveaux états sont ainsi détectés. Le contrôle liste chaque état au fur et à mesure qu'il est découvert. Sous chaque état, le contrôle liste l'ensemble discret des transitions vers d'autres états effectuées par les 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 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. À partir de 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 State du « Bulletin » qui a produit notre Carte de Chaleur .
Accéder
Ruban |
Exécuter > Outils > Enregistreur > Ouvrir Enregistreur > Analyseur de State Conception > Élément > Éditeurs > Contraintes |
Définitions de State
Définitions de State sont composées dans les propriétés de contrainte d'un élément de classe. Le type de contrainte doit être nommé StateDefinition.name , où 'name' est le titre de votre choix pour la définition. Ces titres sont répertoriés dans la zone de 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 State de notre exemple est nommée 'StateDefinition.Location'. Elle 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 valeur peut être utilisée pour nommer l'état. Les instructions sont placées entre accolades et se terminent par un point-virgule comme indiqué :
statedef {
Location=0;
Départ.Nom;
}
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;
Départ.Nom;
}
name=Departing.Name;
Nommer les états à l'aide de littéraux
Dans cet exemple, la définition State contient uniquement des constantes et l’état est nommé à l’aide d’un littéral.
statedef {
Location=100;
}
nom='Central';
Une définition State unique définissant plusieurs spécifications State .
statedef {
Passagers > 100 ;
}
nom=Occupé;
statedef {
Passagers >= 50 ;
}
nom=Silencieux;
statedef {
Passagers < 50 ;
}
nom=Très calme;
statedef {
Passagers = 0;
}
nom=Inactif;
State par défaut
Une définition State peut spécifier un état par défaut « fourre-tout » 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 instruction ressemblant à ceci :
statedef {
Location=0;
Départ.Nom;
}
name=Departing.Name;
par défaut = En mouvement ;
Dans cet exemple, pendant que l'exécution est en cours, toute instance détectée ayant un attribut « Emplacement » différent de zéro sera enregistrée comme étant dans l'état « En mouvement ».
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 Analyseur de State . Cela exclurait l'enregistrement des transitions vers tout état « par défaut ».
Création Notes sur un élément de classe qui affichent Définitions de State
Cette section décrit comment créer le diagramme de classe qui montre toutes les Définitions de State définies pour la classe.
Actes
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 qui vous intéresse sur le diagramme en tant que lien. |
Créer un élément note |
Créez un élément note sur le diagramme et liez-le à la classe. |
Associez la note à la définition State |
Sélectionnez le lien entre la Note et la classe et, en utilisant son menu contextuel, sélectionnez l'option « Lier Note à Fonctionnalité de l'élément ». |
Choisissez la définition à afficher sur la Note |
Dans la dialogue des éléments, choisissez « Contraintes » dans la liste déroulante. Toutes Définitions de State définies seront répertoriées pour que vous puissiez faire votre choix. |
Répéter |
Répétez la procédure pour toutes les autres Définitions de State de la classe. |