Réserver une Démo
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.

The image shows a State defintion that can be used to perform runtime state analysis of a running program

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.

This diagram shows a class with three State Defintions, that can be used to detect Busy and Idle States in a running process

Les points State sont définis en plaçant un ou plusieurs marqueurs dans le code source pertinent.

The image shows a Statepoint marker placed in a function to trigger State Analysis

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.

The image shows a live view of state transitions detected in a running process using Enterprise Architect State Definitions

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.

The image below shows one of the assets, a heatmap, that can be produced from State Analysis of a running process in Enterprise Architect

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.