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 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.

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 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.

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 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.

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 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.

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 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.