~ / RICM5 / IHM / tps / doc /

introspact

© 2007—2012 - Renaud Blanch

Ce document présente l'outils introspact qui permet d'explorer, à l'exécution, une hiérarchie d'agents PAC.

Présentation

Introspact est un outil qui permet d'explorer une hiérarchie d'agents PAC pendant leur vie. Il permet d'observer leur état et de visualiser les appels de méthodes entre agents.

Affichage de l'arbre d'agent

L'agent PV = nRT suivant :

% source ./TP1/6-switch.tcl
% Formule formule
sera ainsi “introspacté” en utilisant la classe Introspact définie dans introspact.tcl :
% source introspact.tcl
% Introspact introspact formule

Introspection des facettes

On peut obtenir des informations sur chaque agent en cliquant dessus, par exemple en cliquant sur l'agent racine formule : La première section de cet fenêtre présente les attributs de l'instance en montrant leurs noms et leurs valeurs (ces dernières étant mises à jour dynamiquement quand la fenêtre est ouverte). La seconde section donne l'ensemble des méthodes de l'instance, en les groupant par la classe d'où elles proviennent. Les paramètres de ces méthodes sont rappelés en gris. Enfin, la section delay permet d'activer (case à cocher) et de paramétrer (index à déplacer) une temporisation qui permet de ralentir l'animation montrant les appels de méthodes. Cette temporisation vaut pour l'objet et ses descendants dans l'arbre d'agents PAC. Si un descendant définit aussi une temporisation, cette dernière remplace celle de son ancêtre.

Visualisation et édition du code

En cliquant sur le nom des méthodes des agents, une nouvelle fenêtre affichant le code de cette méthode s'ouvre. Par exemple, si on clique sur contructor, on obtient :

Ce code est éditable : si on le modifie, fermer la fenêtre en cliquant sur eval modifie la méthode pour toutes les instances de la classe modifiée (déjà existantes ou à venir). Si on clique sur close, les changements ne sont pas appliqués.

Visualisation des communications

Lorsqu'une méthode est appelée sur un agent, les appels sont matérialisés sur l'arbre des agents de la fenêtre principale en rendant ainsi visible toute la pile des appels :

Si la case pause n'est pas cochée, les appels s'enchaînent (avec les temporisations choisies). Si elle est cochée, les appels sont bloqués, et le bouton avec la flèche permet d'avancer pas à pas dans l'exécution.

Manipulation de l'introspacteur

Un object Introspact peut être “détaché” ou “attaché” dynamiquement :

% introspact detach
% introspact attach formule
% introspact attach introspact
La première ligne détache l'introspacteur de la formule, la second le rattache. La dernière ligne l'attache à lui-même. Introspact étant programmé en PAC, il peut en effet s'observer lui-même sans problème particulier.

mise à jour : 11 octobre 2012