FR2868566A1 - Method invocation sequence recording process for e.g. object, involves recording and protecting structural information, of invocation graph, representing sequence of invocations and comprising temporal information of invocations - Google Patents

Method invocation sequence recording process for e.g. object, involves recording and protecting structural information, of invocation graph, representing sequence of invocations and comprising temporal information of invocations Download PDF

Info

Publication number
FR2868566A1
FR2868566A1 FR0403431A FR0403431A FR2868566A1 FR 2868566 A1 FR2868566 A1 FR 2868566A1 FR 0403431 A FR0403431 A FR 0403431A FR 0403431 A FR0403431 A FR 0403431A FR 2868566 A1 FR2868566 A1 FR 2868566A1
Authority
FR
France
Prior art keywords
graph
invocations
invocation
reading
sequence
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
FR0403431A
Other languages
French (fr)
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
METAPAGES SARL
Original Assignee
METAPAGES SARL
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by METAPAGES SARL filed Critical METAPAGES SARL
Priority to FR0403431A priority Critical patent/FR2868566A1/en
Publication of FR2868566A1 publication Critical patent/FR2868566A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3409Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment for performance assessment
    • G06F11/3414Workload generation, e.g. scripts, playback
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

The process involves creating and saving a graph of method invocations and saving the name of the invocations, type and value of parameters and signature comprising an ordered list of classes of parameters and list of the parameters. Structural information of the graph representing a sequence of the invocations and comprising temporal information of the invocations is recorded and protected. Independent claims are also included for the following: (A) a process of reading a sequence of method invocations (B) a device for recording and reading a sequence of method invocations.

Description

PROCEDE ET DISPOSITIF D'ENREGISTREMENT ET DE LECTURE DE FLOTSMETHOD AND DEVICE FOR RECORDING AND READING FLOTS

D'INVOCATIONS DE METHODES.INVOCATIONS OF METHODS.

La présente invention concerne un procédé et un dispositif d'enregistrement et de lecture de flots d'invocations de méthodes. La présente invention est, en particulier, relative à la vie, à la persistance des objets, librairies, composants et logiciels. Elle s'applique, en particulier, à l'enregistrement de suites chronologiques d'invocations de méthodes d'un objet en vue de rejouer ces suites, par exemple dans le domaine du test et du traitement d'images. La présente invention permet ainsi, par exemple, d'appliquer successivement les mêmes séquences de filtres successifs sur différentes images.  The present invention relates to a method and a device for recording and reading streams of method invocations. The present invention is, in particular, relating to the life, the persistence of objects, libraries, components and software. It applies, in particular, to the recording of chronological sequences of invocations of methods of an object with a view to replaying these sequences, for example in the field of testing and image processing. The present invention thus makes it possible, for example, to successively apply the same sequences of successive filters on different images.

Java (marque déposée) permet de développer des applications modulaires et réutilisables à base de composants dans des environnements distribués. Dans ce cadre, la possibilité de sauvegarder un graphe d'objets (états des objets, relations entre eux, etc..) sur un support volatile ou non est intéressante et importante. Cette fonction, appelée "sérialisation", permet de reconstituer ultérieurement le graphe des objets dans un état donné. Cette sérialisation, qui peut être qualifiée de statique, n'est pas suffisante dans de nombreux cas.  Java (registered trademark) is used to develop modular and reusable component-based applications in distributed environments. In this context, the possibility of saving a graph of objects (object states, relations between them, etc.) on a volatile medium or not is interesting and important. This function, called "serialization", makes it possible to reconstitute later the graph of the objects in a given state. This serialization, which can be described as static, is not sufficient in many cases.

On rappelle que la sérialisation statique consiste à sauvegarder l'état d'un système à un instant t. Elle ne donne pas d'indication sur les actions ayant menées à cet état. Ce type de sérialisation n'est pas suffisant dans les exemples suivants: - test: la sérialisation statique permet de sauvegarder l'état du système, mais ne permet pas de rejouer les traitements ayant conduit à un dysfonctionnement.  It is recalled that static serialization consists of saving the state of a system at a time t. It gives no indication of the actions that led to this state. This type of serialization is not sufficient in the following examples: - test: the static serialization makes it possible to save the state of the system, but does not make it possible to replay the treatments which led to a dysfunction.

- traitement d'image: il n'est pas possible de capturer les traitements appliqués à une image pendant une séance de travail pour les appliquer ultérieurement à une autre image; la sérialisation statique ne peut que sauver l'état du système; Une application est bien plus que les objets qui la composent. Les objets communiquent entre eux par le biais des méthodes qui s'appellent tout au long de l'exécution de l'application.  - image processing: it is not possible to capture the treatments applied to an image during a work session to apply them later to another image; static serialization can only save the state of the system; An application is much more than the objects that compose it. The objects communicate with each other through the methods that are called throughout the execution of the application.

Les procédures de test de logiciel en cours de programmation actuellement connues consistent à mettre des points d'arrêt en différents endroits du code source.  Currently known software testing procedures currently being programmed involve putting breakpoints in different places in the source code.

Ces procédures ne permettent pas de rejouer l'ensemble des invocations de méthodes mises en oeuvre jusqu'au point d'arrêt, ce qui entraîne des tâtonnements successifs et empiriques nuisibles à la productivité du programmeur.  These procedures do not make it possible to replay all the invocations of methods implemented until the stopping point, which entails successive trial and error that is detrimental to the productivity of the programmer.

La présente invention vise à remédier à ces inconvénients.  The present invention aims to remedy these disadvantages.

À cet effet, la présente invention vise un procédé d'enregistrement d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte au moins: - une étape de création et de sauvegarde d'un graphe d'au moins une invocation de méthode et - une étape de sauvegarde d'informations de structure du graphe représentatives d'un enchaînement des dites invocations de méthode.  For this purpose, the present invention aims at a method of recording at least one invocation flow of at least one method, characterized in that it comprises at least: a step of creating and saving a graph of at least one method invocation and - a step of saving graph structure information representative of a sequence of said method invocations.

Grâce à ces dispositions, l'enregistrement conserve la séquence d'invocations de méthodes et peut être relu ou ré-exécuté sur le même objet ou sur un objet différent mais compatible.  Thanks to these arrangements, the record retains the sequence of method invocations and can be re-read or re-executed on the same object or on a different but compatible object.

L'intérêt d'enregistrer l'historique des invocations et leur contexte est que la relecture (c'est-à-dire la ré-exécution) des invocations de méthodes de cet enregistrement permet de faire revivre les objets dans leur contexte, à tout moment ou de ré-appliquer les mêmes invocations de méthodes à des objets similaires aux objets sur lesquels étaient appliquées les invocations de méthodes enregistrées.  The interest of recording the history of the invocations and their context is that the replay (that is to say the re-execution) of the invocations of methods of this recording makes it possible to revive the objects in their context, at any time. when to re-apply the same method invocations to object-like objects on which the invocations of stored methods were applied.

Par exemple, dans le cas des boîtes noires des avions, la présente invention permet de connaître la totalité des interventions sur le système informatique de l'avion de chaque application pour laquelle la présente invention est mise en oeuvre. Il est ainsi possible de savoir ce qui s'est passé.  For example, in the case of black boxes of aircraft, the present invention makes it possible to know all the operations on the computer system of the aircraft of each application for which the present invention is implemented. It is possible to know what happened.

De plus, la présente invention permet de procéder à l'enregistrement des invocations de méthodes sans demande spécifique de la part de chaque application. On peut alors certifier ce qui s'est passé jusqu'à une panne, par exemple, et permettre une amélioration de la programmation du système informatique.  In addition, the present invention makes it possible to proceed to the recording of invocations of methods without specific request from each application. We can then certify what happened until a breakdown, for example, and allow an improvement in the programming of the computer system.

Selon des caractéristiques particulières, au cours de l'étape de sauvegarde d'informations de structure, les informations de structure du graphe comportent des informations de temporalité des invocations de méthode.  According to particular features, during the structure information saving step, the graph structure information includes time information of the method invocations.

Grâce à ces dispositions, l'enregistrement conserve la séquence d'invocations de méthodes de chaque objet dans le temps et rend compte de la vie de l'objet concerné.  Thanks to these provisions, the recording preserves the sequence of method invocations of each object in time and accounts for the life of the object concerned.

Selon des caractéristiques particulières, au cours de l'étape de sauvegarde d'informations de structure, les informations de structure du graphe comportent des informations d'édition et/ou ajout de branches dudit graphe.  According to particular characteristics, during the structure information saving step, the graph structure information includes information for editing and / or adding branches of said graph.

Grâce à ces dispositions, le graphe peut être modifié au cours de sauvegardes successives.  Thanks to these provisions, the graph can be modified during successive backups.

Selon des caractéristiques particulières, au cours de l'étape de création et de sauvegarde de graphe, on sauvegarde, pour chaque enregistrement d'une invocation de méthode, au moins le nom de la méthode en question, le type et la valeur de ses paramètres, sa signature comportant une liste ordonnée des classes des paramètres de la méthode et une liste ordonnée des paramètres de la méthode.  According to particular characteristics, during the step of creating and saving the graph, at least the name of the method in question, the type and the value of its parameters are saved for each record of a method invocation. , its signature comprising an ordered list of the classes of the parameters of the method and an ordered list of the parameters of the method.

Dans le cadre d'une application objet, par exemple une application java (marque déposée), chaque objet, ou l'application elle-même, peut enregistrer des invocations de méthodes accompagnées de la valeur des paramètres de la méthode et de la durée écoulée depuis la création de l'enregistrement.  In the context of an object application, for example a java (registered trademark) application, each object, or the application itself, can record method invocations accompanied by the value of the parameters of the method and the elapsed time. since the creation of the recording.

Selon des caractéristiques particulières, le procédé tel que succinctement exposé ci-dessus comporte une étape de positionnement d'un pointeur dans le graphe.  According to particular features, the method as briefly described above includes a step of positioning a pointer in the graph.

Selon des caractéristiques particulières, au cours de l'étape de création et de sauvegarde de graphe, on insère au moins une invocation de méthode dans le graphe, à partir de la position dudit pointeur, sans effacement des invocations de méthode déjà enregistrées (mode "préservé").  According to particular characteristics, during the step of creating and saving a graph, inserting at least one method invocation into the graph, from the position of said pointer, without erasing the already recorded method invocations ("mode"). preserved ").

Selon des caractéristiques particulières, au cours de l'étape de création et de sauvegarde de graphe, on remplace, dans le graphe, à partir de la position dudit pointeur, au moins une invocation de méthode déjà enregistrée par au moins une nouvelle invocation de méthode (mode "normal").  According to particular features, during the step of creating and saving a graph, in the graph, from the position of said pointer, at least one method invocation already registered is replaced by at least one new method invocation. ("normal" mode).

Selon un deuxième aspect, la présente invention vise un procédé de lecture d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte: - au moins une étape de lecture d'au moins une partie d'un graphe d'au moins une invocation de méthode et d'informations de structure du graphe représentatives d'un enchaînement des dites invocations de méthode et - une étape d'exécution de chaque invocation de méthode lue.  According to a second aspect, the present invention aims at a method of reading at least one invocation flow of at least one method, characterized in that it comprises: at least one step of reading at least a part a graph of at least one method invocation and graph structure information representative of a sequence of said method invocations and a step of executing each method invocation read.

Selon des caractéristiques particulières, au cours de l'étape de lecture, on lit des informations de structure du graphe comportant des informations de temporalité des 25 invocations de méthode.  According to particular features, during the reading step, graph structure information including time information of the method invocations is read.

Selon des caractéristiques particulières, au cours de l'étape de lecture, on lit des informations de structure du graphe comportant des informations d'édition et/ou ajout de branches dudit graphe.  According to particular characteristics, during the reading step, graph structure information is read comprising information for editing and / or adding branches of said graph.

Selon des caractéristiques particulières, au cours de l'étape de lecture, on lit, pour chaque enregistrement d'une invocation de méthode lu, au moins le nom de la méthode en question, le type et la valeur de ses paramètres, sa signature comportant une liste ordonnée des classes des paramètres de la méthode et une liste ordonnée des paramètres de la méthode.  According to particular characteristics, during the reading step, for each record of a read method invocation, at least the name of the method in question, the type and the value of its parameters, its signature including an ordered list of parameter classes of the method and an ordered list of method parameters.

Selon des caractéristiques particulières, le procédé de lecture tel que succinctement exposé ci-dessus comporte une étape de sélection d'un mode de lecture entre un premier mode de lecture, dit "normal", dans lequel on lit seulement une partie des noeuds du graphe et un deuxième mode de lecture, dit "préservé", dans lequel on lit l'intégralité des noeuds du graphe.  According to particular features, the reading method as briefly described above comprises a step of selecting a reading mode between a first reading mode, called "normal", in which only a portion of the nodes of the graph are read. and a second reading mode, said "preserved", in which one reads all the nodes of the graph.

Selon un troisième aspect, la présente invention vise un procédé d'enregistrement et de lecture d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte: - au moins une étape de création et de sauvegarde d'un graphe d'au moins une invocation de méthode et d'informations de structure du graphe représentatif d'un enchaînement des dites invocations de méthode; - au moins une étape de lecture d'au moins une partie dudit graphe et d'informations de structure du graphe représentatif d'un enchaînement des dites invocations de méthode et, - une étape d'exécution de chaque invocation de méthode lue.  According to a third aspect, the present invention aims at a method for recording and reading at least one invocation flow of at least one method, characterized in that it comprises: at least one step of creation and of saving a graph of at least one invocation of method and structure information of the graph representative of a sequence of said method invocations; at least one step of reading at least a portion of said graph and structure information of the graph representative of a sequence of said method invocations and a step of executing each method invocation read.

Selon des caractéristiques particulières, au cours de chaque étape de création et de sauvegarde, les invocations de méthode sont effectuées sur au moins un premier objet et en ce que, au cours de l'étape d'exécution, les invocations de méthode sont effectuées sur au moins un deuxième objet différent ou non de chaque premier objet.  According to particular features, during each creation and saving step, the method invocations are performed on at least one first object and in that during the execution step, the method invocations are performed on at least one second or different object of each first object.

Selon des caractéristiques particulières, chacun des procédés d'enregistrement (premier aspect) et d'enregistrement et de lecture (troisième aspect), comporte une étape de modification du graphe ou d'au moins un noeud.  According to particular features, each of the recording (first aspect) and recording and reading (third aspect) methods includes a step of modifying the graph or at least one node.

Selon un quatrième aspect, la présente invention vise un dispositif d'enregistrement d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte au moins: - un moyen de création et de sauvegarde d'un graphe d'au moins une invocation 25 de méthode et - un moyen de sauvegarde d'informations de structure du graphe représentatives d'un enchaînement des dites invocations de méthode.  According to a fourth aspect, the present invention is aimed at a device for recording at least one invocation flow of at least one method, characterized in that it comprises at least: a means of creation and backup of a graph of at least one method invocation and - a graph structure information saving means representative of a sequence of said method invocations.

Selon un cinquième aspect, la présente invention vise un dispositif de lecture d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte au moins: - un moyen de lecture d'au moins une partie d'un graphe d'au moins une invocation de méthode et d'informations de structure du graphe représentatives d'un enchaînement des dites invocations de méthode et - un moyen d'exécution de chaque invocation de méthode lue.  According to a fifth aspect, the present invention aims at a device for reading at least one invocation flow of at least one method, characterized in that it comprises at least: a means for reading at least a part a graph of at least one method invocation and graph structure information representative of a sequence of said method invocations and a means for executing each method invocation read.

Les avantages, buts et caractéristiques des deuxième à cinquième aspects de la présente invention étant similaires à ceux du premier aspect, ils ne sont pas rappelés ici.  Since the advantages, aims and features of the second to fifth aspects of the present invention are similar to those of the first aspect, they are not repeated here.

D'autres avantages, buts et caractéristiques de la présente invention ressortiront de la description qui va suivre, faite en regard des dessins annexés dans lesquels: - la figure 1 représente, schématiquement, le fonctionnement d'un mode de réalisation particulier d'un composant enregistreur de séquences d'invocations de méthodes conforme à la présente invention; - la figure 2 représente, schématiquement, une succession d'étapes mises en oeuvre dans un mode particulier de réalisation d'un procédé d'enregistrements d'objets conforme à la présente invention; - la figure 3 représente, schématiquement, une mise en oeuvre des procédés et dispositifs d'enregistrement et de lecture objets de la présente invention appliquée au traitement d'images à distance et - la figure 4 représente, schématiquement, un graphe et son parcours, en fonction du mode d'enregistrement et de lecture mis en oeuvre.  Other advantages, objects and features of the present invention will emerge from the description which follows, made with reference to the accompanying drawings in which: - Figure 1 shows, schematically, the operation of a particular embodiment of a component sequence recorder of method invocations according to the present invention; FIG. 2 represents, schematically, a succession of steps implemented in a particular embodiment of an object registration method according to the present invention; FIG. 3 schematically represents an implementation of the recording and reading methods and devices of the present invention applied to the remote image processing and FIG. 4 schematically represents a graph and its path, depending on the recording and playback mode used.

Avant de décrire différents modes de réalisation de la présente invention, on donne, ci-après, les définitions suivantes: - "système" (en anglais "system") : il s'agit du système objet de la présente invention comportant un composant "enregistreur" et un composant "lecteur", ainsi que les enregistrements logiciels créés par le composant enregistreur et lu par le composant lecteur; - "objet" (en anglais "object") : un objet est un ensemble d'attributs et de méthodes représentant une entité logique instanciée en mémoire vive. La représentation de l'objet dépend du langage utilisé pour l'implémentation du système, par exemple en langages java, C++ (marque déposée), SmallTalk, est un objet, en langage C, c'est une structure; "méthode" (en anglais "method") : une méthode associée à un objet dont l'appel (ou invocation) peut être enregistré par le composant enregistreur du système avec ses paramètres. Suivant le langage informatique considéré, la méthode peut être une fonction, une procédure, une macro,... ; "sérialisation" (en anglais "serialisation" ou "serialization") : la sérialisation est la sauvegarde d'un objet présent en mémoire vive sur un support volatile ou non, sous une forme persistante; - "séquence d'invocations de méthodes" (en anglais "Method Invocation sequence") ou "session d'enregistrement" : c'est un graphe ordonné d'appels de méthode. Une séquence d'invocations de méthodes est une suite ordonnée d'enregistrements de noeuds d'invocation de méthode (voir ci- dessous) : dans sa forme la plus simple, ce graphe est une liste ordonnée; - "enregistreur" d'invocations de méthodes (en anglais "Method Invocation Recorder") : c'est le composant du système qui permet d'enregistrer effectivement des séquences d'invocations de méthodes. Il gère aussi la sérialisation de celles-ci; - "lecteur" d'invocations de méthodes (en anglais "Method Invocation Player") : c'est le composant du système qui permet de rejouer le contenu d'une séquence d'invocations de méthodes; - "noeud d'invocation de méthode" (en anglais "Method Invocation Node") : il contient une unité d'invocation de méthode (voir ci-dessous) ainsi que des données de gestion de la structure du graphe (notamment les liens vers le père et les enfants du noeud dans son graphe) et un code de temps relatif au début de l'enregistrement; le noeud d'invocation de méthode sert à la structuration du graphe et à la gestion des informations temporelles; - "unité d'invocation de méthode" (en anglais "Method Invocation Item") : c'est un enregistrement unitaire d'un appel de méthode de l'objet; - "mode" (en particulier mode d'enregistrement et de lecture) : c'est le mode d'enregistrement ou le mode de lecture d'une séquence d'invocations de méthodes; "options" (d'enregistreur ou de lecteur) : ce sont des variantes de lecture des noeuds d'invocation de méthodes d'une séquence d'invocations de méthodes. Les options prennent en compte le temps, etc; "tête" (de lecture du lecteur d'invocation de méthode et d'enregistrement de l'enregistreur d'invocation de méthode) : c'est le positionnement (par exemple par un pointeur) à partir duquel est effectué une lecture ou un enregistrement de noeuds d'invocation de méthodes d'une séquence d'invocations de méthodes: c'est la position à partir de laquelle un enregistrement ou une lecture de noeuds d'invocations de méthode s'effectue; "code de temps" (en anglais "time code" ou, en abrégé "TC") : le TC est la durée écoulée depuis le début d'une session d'enregistrement dans une séquence d'invocations de méthodes; "cassette d'invocation de méthodes" (en anglais "Method Invocation Cartridge") : c'est une liste ordonnée (dans le temps) de sessions nommées.  Before describing various embodiments of the present invention, the following definitions are given below: - "system" (in English "system"): this is the system object of the present invention comprising a component " recorder "and a" player "component, as well as software records created by the recorder component and read by the reader component; - "object" (in English "object"): an object is a set of attributes and methods representing a logical entity instantiated in RAM. The representation of the object depends on the language used for the implementation of the system, for example in Java languages, C ++ (registered trademark), SmallTalk, is an object, in C language, it is a structure; "method": a method associated with an object whose call (or invocation) can be registered by the system logging component with its parameters. Depending on the computer language considered, the method can be a function, a procedure, a macro, ...; "serialization" (in English "serialization" or "serialization"): the serialization is the backup of an object present in RAM on a volatile medium or not, in a persistent form; - "Method invocation sequence" or "recording session": it is an ordered graph of method calls. A sequence of method invocations is an ordered sequence of method invocation node records (see below): in its simplest form, this graph is an ordered list; Method Invocation Recorder ("Method Invocation Recorder"): This is the component of the system that makes it possible to actually record sequences of method invocations. It also manages the serialization of these; - "Method Invocation Player" (in English "Method Invocation"): it is the component of the system which makes it possible to replay the contents of a sequence of invocations of methods; - "Method invocation node" (in English "Method Invocation Node"): it contains a method invocation unit (see below) as well as management data of the structure of the graph (including links to the father and the children of the node in his graph) and a relative time code at the beginning of the recording; the method invocation node is used for structuring the graph and managing time information; - "method invocation unit" (in English "Method Invocation Item"): it is a unitary record of a method call of the object; - "mode" (in particular recording and reading mode): this is the recording mode or the reading mode of a sequence of method invocations; "options" (recorder or reader): these are variants of reading the method invocation nodes of a sequence of method invocations. Options take into account time, etc; "head" (method invocation reader reading and method invocation recorder read): this is the positioning (eg by a pointer) from which a read or a record is made method invocation nodes of a method invocation sequence: this is the position from which a record or reading of method invocation nodes takes place; "time code" (in English "time code" or, abbreviated "TC"): the TC is the time elapsed since the start of a recording session in a sequence of method invocations; "Method Invocation Cartridge": This is an ordered list (in time) of named sessions.

Ainsi: - une cassette d'invocations de méthodes contient des séquences d'invocation de méthodes; - une séquence d'invocations de méthodes contient des noeuds d'invocation de méthodes; un noeud d'invocations de méthodes contient une unité d'invocation de méthode ainsi que des données de gestion de la structure du graphe (notamment les liens vers le père et les enfants du noeud dans son graphe) et un code de temps relatif au début de l'enregistrement.  Thus: - a method invocation cassette contains method invocation sequences; a sequence of method invocations contains method invocation nodes; a method invocation node contains a method invocation unit as well as management data of the graph structure (including links to the father and children of the node in its graph) and a relative time code at the beginning of the recording.

La figure 1 représente, schématiquement, le fonctionnement d'un mode de réalisation particulier de l'enregistreur de séquences d'invocations de méthodes. Ce composant enregistreur permet de manipuler et d'enregistrer des séquences d'invocations de méthodes. Une séquence d'invocations de méthodes est constituée d'un objet sérialisable, comportant une interface publique (une interface publique est l'ensemble des attributs et des méthodes utilisables de l'extérieur sur des objets d'une même classe) de manipulation, d'écriture et de lecture des noeuds d'invocation de méthode. Une séquence d'invocations de méthodes contient un graphe ordonné de noeuds d'invocation de méthode. La sérialisation de la séquence d'invocations de méthodes permet de sauvegarder les enregistrements de noeuds d'invocation de méthode sans langage intermédiaire.  FIG. 1 represents, schematically, the operation of a particular embodiment of the method invocation sequence recorder. This recorder component makes it possible to manipulate and save sequences of method invocations. A sequence of method invocations consists of a serializable object, including a public interface (a public interface is the set of attributes and methods that can be used externally on objects of the same class), write and read method invocation nodes. A sequence of method invocations contains an ordered graph of method invocation nodes. The serialization of the method invocation sequence allows the saving of method invocation node records without intermediate language.

L'enregistreur d'invocation de méthode permet de: - créer un objet "séquence d'invocations de méthodes" en mémoire vive; - sauvegarder une séquence d'invocations de méthodes, en sérialisant l'objet "séquence d'invocations de méthodes" à un instant donné ; - charger une séquence d'invocations de méthodes en créant un objet "séquence d'invocations de méthodes" en mémoire à partir d'une sérialisation. On observe que cette fonction se retrouve aussi dans le composant lecteur d'invocation de méthode; - enregistrer un noeud d'invocation de méthode; L'enregistrement d'un noeud d'invocation de méthode comporte les étapes suivantes: - créer un objet "séquence d'invocations de méthodes" ou charger une "séquence d'invocations de méthodes", étape 100; - dans le cas ou l'objet "séquence d'invocations de méthodes" est créé, ajouter la date et heure universelle qui sert d'indicateur de début de session, étape 105: le code de temps absolu TCA (date et heure universelle) n'est enregistré qu'une fois au début de la session; - choisir le mode d'enregistrement, étape 110, parmi les suivants: mode d'enregistrement "normal" : dans ce cas, le comportement du composant enregistreur est similaire à celui d'un magnétophone audio numérique, c'est-à-dire que l'enregistrement se fait à l'emplacement de la tête. La tête est avancée d'une position. Les éventuels enregistrements qui se trouvaient à cette position sont effacés; 10. mode d'enregistrement "préservé" (en anglais "preserve") : l'enregistrement du nouveau noeud d'invocation de méthode ne provoque pas l'effacement du noeud qui se trouvaient éventuellement en cette position: l'enregistrement crée une nouvelle branche à l'emplacement de la tête. Le noeud initial n'est pas détruit. Ils resteront accessibles à la lecture via un mode particulier (voir plus loin le fonctionnement du composant lecteur) ; - positionner la tête (en cas de création d'un enregistrement, la tête est automatiquement positionnée en début d'enregistrement), étape 115: l'enregistreur d'invocation de méthode permet de revenir au début de la séquence, d'aller en fin de séquence ou de positionner la tête dans la séquence entre le premier et le dernier noeud d'invocation de méthode (il s'agit d'un positionnement de la tête sans lecture, seul le lecteur permettant la relecture des enregistrements. Il appartient donc à l'application d'utiliser le lecteur si elle désire rejouer les enregistrements et synchroniser ainsi l'état de l'objet et l'enregistrement dans le cas d'un déplacement de la tête.) ; - pour chaque enregistrement d'une invocation de méthode à effectuer, les informations sur cette invocation de méthode sont regroupées dans une unité d'invocation de méthode, étape 120, y compris: le nom de la méthode en question, le type et la valeur de ses paramètres ou arguments, la signature et, éventuellement, une référence à l'objet concerné par la méthode et d'autres informations utiles; les informations définissant une unité d'invocation de méthode sont: - sa signature: c'est ce qui permet de définir et donc différencier les méthodes au sein d'une classe. La signature est constituée de: o nom de la méthode, o liste ordonnée des classes des paramètres de la méthode; - une liste ordonnée des paramètres de la méthode; un objet (facultatif) sur lequel sera invoquée la méthode. Cet objet est utile dans le cas où chaque unité d'invocation de méthode pourrait avoir un objet cible propre; et, un commentaire textuel (facultatif).  The method invocation recorder allows you to: - create a "method invocation sequence" object in random access memory; - save a sequence of method invocations, by serializing the object "method invocation sequence" at a given moment; - load a sequence of method invocations by creating a "method invocation sequence" object in memory from a serialization. It can be seen that this function is also found in the method invocation reader component; - register a method invocation node; The registration of a method invocation node has the following steps: - create a "method invocation sequence" object or load a "method invocation sequence", step 100; - in the case where the "method invocation sequence" object is created, add the universal date and time that serves as the start of session flag, step 105: the absolute time code TCA (universal date and time) is recorded only once at the beginning of the session; selecting the recording mode, step 110, from the following: "normal" recording mode: in this case, the behavior of the recording component is similar to that of a digital audio tape recorder, that is to say that the recording is done at the location of the head. The head is advanced one position. Any recordings that were in this position are erased; 10. preserve mode: the saving of the new method invocation node does not cause the deletion of the node that might have been in this position: the record creates a new branch at the location of the head. The initial node is not destroyed. They will remain accessible to reading via a particular mode (see further the operation of the reader component); - position the head (in case of creation of a recording, the head is automatically positioned at the beginning of recording), step 115: the method invocation recorder makes it possible to return to the beginning of the sequence, to go to end of sequence or position the head in the sequence between the first and the last method invocation node (this is a positioning of the head without reading, only the reader allowing the replay of records. the application to use the player if it wishes to replay the recordings and thus synchronize the state of the object and the recording in the case of a displacement of the head.); for each record of a method invocation to be performed, the information on this method invocation is grouped into a method invocation unit, step 120, including: the name of the method in question, the type and the value its parameters or arguments, the signature and possibly a reference to the object concerned by the method and other useful information; the information defining a method invocation unit is: - its signature: this is what makes it possible to define and thus differentiate the methods within a class. The signature consists of: o name of the method, o ordered list of classes of the parameters of the method; an ordered list of the parameters of the method; an (optional) object on which the method will be invoked. This object is useful in the case where each method invocation unit could have its own target object; and, a textual commentary (optional).

Les informations indispensables sont la signature et les paramètres. Il est à noter que la liste des paramètres et la liste des classes des paramètres seront vides dans le cas d'une méthode sans paramètres.  The essential information is the signature and the parameters. It should be noted that the list of parameters and the list of classes of the parameters will be empty in the case of a method without parameters.

- création d'un noeud d'invocation de méthode, étape 121; - intégration de l'unité d'invocation de méthode dans le noeud d'invocation de méthode, étape 122; - ajout des informations de structure du graphe au noeud d'invocation de méthode, étape 123; - ajout des informations temporelles au noeud d'invocation de méthode, étape 124; - le noeud d'invocation de méthode ainsi que la durée écoulée depuis le début de la session sont enregistrées, étape 125, sous forme de code de temps dans la séquence d'invocations de méthodes, en fonction du mode sélectionné ; ces indications temporelles (par exemple celles liées à l'enregistrement d'un noeud d'invocation de méthode) sont des codes de temps relatifs (TCR) qui sont obtenus par la formule TCR=TCA TCAC où TCAC est le code de temps absolu courant au moment de l'enregistrement; Au cours d'une étape 130, il est déterminé si l'enregistrement est achevé. Sinon, on retourne à l'étape 120. La fin de l'enregistrement est déterminée par le programme. Cette fin peut-être définie par l'utilisateur si l'application le permet ou suivant une règle quelconque dans le cas de systèmes automatisés. Par exemple un système peut enregistrer, sur une base quotidienne, tout ou partie des actions effectuées sur un objet.  creating a method invocation node, step 121; integrating the method invocation unit in the method invocation node, step 122; adding graph structure information to the method invocation node, step 123; adding time information to the method invoke node, step 124; the method invocation node and the time elapsed since the beginning of the session are recorded, step 125, as a time code in the sequence of method invocations, according to the selected mode; these time indications (for example those related to the recording of a method invocation node) are relative time codes (TCR) which are obtained by the formula TCR = TCA TCAC where TCAC is the current absolute time code at the time of registration; During a step 130, it is determined whether the recording is completed. Otherwise, return to step 120. The end of the recording is determined by the program. This end can be defined by the user if the application allows it or according to any rule in the case of automated systems. For example, a system can record, on a daily basis, all or part of the actions performed on an object.

À la fin de l'enregistrement des noeuds d'invocation de méthode, au cours d'une étape 135, la séquence d'invocations de méthodes est sauvegardée. On observe qu'à cette étape, on est en cours de construction du graphe, le parcours de l'ensemble du graphe étant effectué par le lecteur de séquence d'invocations de méthodes (voir figure 2).  At the end of the registration of the method invocation nodes, in a step 135, the method invocation sequence is saved. It is observed that at this stage, the graph is being constructed, the path of the whole graph being carried out by the method invocation sequence reader (see FIG. 2).

La figure 2 représente, schématiquement, le fonctionnement d'un mode de réalisation particulier du lecteur de séquences d'invocations de méthodes. Ce composant lecteur permet de relire des séquences d'invocations de méthodes et d'exécuter de différentes manières le contenu des séquences d'invocations de méthodes déjà enregistrées.  FIG. 2 represents, schematically, the operation of a particular embodiment of the method invocation sequences reader. This reader component makes it possible to re-read sequences of method invocations and to execute in different ways the contents of the invocation sequences of already recorded methods.

Après avoir chargé une séquence d'invocations de méthodes, étape 200, l'objet sur lequel on veut rejouer le contenu de la cassette est spécifié, au cours d'une étape 202. Cet objet peut être différent de l'objet qui est à l'origine de l'enregistrement de la séquence d'invocations de méthodes mais doit être compatible avec celui qui est à l'origine de l'enregistrement: il faut les mêmes méthodes et les mêmes types de paramètres (même signature).  After having loaded a sequence of method invocations, step 200, the object on which one wants to replay the contents of the cassette is specified, during a step 202. This object can be different from the object which is to the origin of the recording of the sequence of invocations of methods but must be compatible with the one which is at the origin of the recording: one needs the same methods and the same types of parameters (same signature).

Au cours d'une étape 205, on choisit un mode de lecture, c'est-à-dire de ré- exécution, de la séquence d'invocations de méthodes, parmi - mode Normal : le comportement est similaire à celui d'un magnétophone audio numérique: les unités d'invocation de méthodes des noeuds d'invocation de méthodes sont exécutées dans l'ordre de leurs positions dans l'enregistrement jusqu'à la fin de l'enregistrement. Si la séquence d'invocations de méthodes a été enregistrée en mode preserve les noeuds d'invocation de méthode inutiles sont ignorés; - mode préservé : la lecture commence à l'emplacement de la tête. Les enregistrements des noeuds d'invocation de méthode sont exécutés dans l'ordre jusqu'à la fin. Si la cassette a été enregistrée en mode préservé , les noeuds d'invocation de méthode inutiles sont pris en compte et rejoués dans le bon ordre: - lors de l'enregistrement si le mode était preservé , quand la tête d'écriture revenait en arrière et recommençait à écrire, l'enregistreur au lieu d'effacer la branche se trouvant après la tête, en faisant la branche gauche du noeud du graphe courant et créait une branche droite qui devenait la branche principale; - à la lecture, si ce graphe est lu en mode normal, le parcours du graphe se fait exclusivement le long des sous arbres droits de chaque noeud du graphe; - en lecture en mode preserve , l'ensemble du graphe est parcouru en "parcours préfixe", c'est à dire que l'on part du sommet, pour chaque noeud du graphe, on parcourt successivement les sous-arbres de la gauche vers la droite.  During a step 205, a mode of reading, ie of re-execution, of the sequence of method invocations is chosen, among - Normal mode: the behavior is similar to that of a digital audio tape recorder: The method invocation units of the method invocation nodes are executed in the order of their positions in the recording until the end of the recording. If the method invocation sequence was saved in the preserve mode, the unnecessary method invocation nodes are ignored; - preserved mode: playback starts at the location of the head. The records of the method invocation nodes are executed in order until the end. If the tape has been saved in the preserved mode, the unnecessary method invocation nodes are taken into account and replayed in the correct order: - when recording if the mode was preserved, when the writing head came back and began writing again, the recorder instead of erasing the branch after the head, making the left branch of the current graph node and creating a straight branch that became the main branch; when reading, if this graph is read in normal mode, the graph is traveled exclusively along the right subtrees of each node of the graph; - in read mode preserve, the whole graph is traversed in "route prefix", that is to say that one starts from the top, for each node of the graph, one traverses successively sub-trees of the left towards the right.

Le parcours d'un sous-arbre est terminé quand on atteint une feuille (noeud sans enfant). Ce mode permet de faire passer l'objet sur lequel est jouée la cassette par les mêmes états intermédiaires que l'objet à l'origine de l'enregistrement. Au cours d'une étape 210, la tête peut être positionnée (par défaut, elle est positionnée en début de séquence d'invocations de méthodes) : le lecteur permet de revenir au début, d'aller en fin ou de positionner la tête sur la cassette.  The path of a subtree is completed when one reaches a leaf (node without child). This mode makes it possible to pass the object on which the cassette is played by the same intermediate states as the object at the origin of the recording. During a step 210, the head can be positioned (by default, it is positioned at the beginning of sequence of invocations of methods): the reader makes it possible to return to the beginning, to go at the end or to position the head on The tape.

Au cours d'une étape 215, on spécifie un type d'exécution temporelle parmi les suivants: - libre (valeur par défaut): le lecteur rejoue les séquences d'invocations de méthodes à la suite les unes des autres; - temporisé : le lecteur rejoue les séquences d'invocation de méthodes en tentant de respecter les codes de temps TC; Au cours d'une étape 220, la lecture de la séquence d'invocation de méthodes, appliquée à l'objet "compatible" sélectionnée au cours de l'étape 202 est déclenchée et effectuée. Au cours d'une étape 225, on détermine si la lecture est achevée. Sinon, on retourne à l'étape 220. Si oui, on arrête le fonctionne du lecteur, étape 230.  During a step 215, one of the following types of temporal execution is specified: - free (default value): the reader re-plays the invocation sequences of methods following each other; - Timed: the player replay the method invocation sequences by attempting to respect TC time codes; During a step 220, the reading of the method invocation sequence applied to the "compatible" object selected in step 202 is triggered and performed. During a step 225, it is determined whether the reading is complete. Otherwise, we return to step 220. If yes, we stop the operation of the player, step 230.

Les modes de réalisation décrits en regard des figures 1 et 2 peuvent, en variante, fonctionner en "Multi pistes" : la séquence d'invocations de méthodes exposée ci-dessus ne permet d'enregistrer l'invocation des méthodes que d'un seul objet à la fois. En variante, on ajoute une propriété de piste à la séquence d'invocations de méthodes: une piste est associée à un objet, et elle contient l'enregistrement des invocations de méthodes de cet objet. La création de plusieurs pistes associées à des objets différents permet alors l'enregistrement contextuel et synchronisé des comportements des objets associés.  The embodiments described with reference to FIGS. 1 and 2 may, in a variant, operate in "multi-tracks": the sequence of invocations of methods explained above makes it possible to record the invocation of methods only by one object at a time. Alternatively, a track property is added to the method invocation sequence: a track is associated with an object, and it contains the record of method invocations of that object. The creation of several tracks associated with different objects then allows contextual and synchronized recording of the behaviors of the associated objects.

Les fonctions manipulant la position de la tête sont alors étendues pour permettre un positionnement synchro, dans le temps, de l'ensemble des pistes. On observe qu'au moment de la lecture, on peut ne relire qu'une partie des pistes de l'enregistrement.  The functions manipulating the position of the head are then extended to allow synchronized positioning, in time, of all the tracks. It is observed that at the time of the reading, one can re-read only part of the tracks of the recording.

On donne, ci-dessous, des exemples d'applications de la présente invention: - dans le cadre d'une session applicative, conservation de l'historique des traitements effectués qui permet d'annuler des traitements en revenant en arrière ou de  Examples of applications of the present invention are given below: in the context of an application session, keeping the history of the treatments carried out which makes it possible to cancel treatments by going backwards or

les répéter (voir description de la figure 3) ;  repeat them (see description of Figure 3);

- dans le cadre d'une application distribuée, l'enregistrement en local de traitements à effectuer permet une exécution déportée, différée et/ou répétitive (voir description de la figure 3) ; - dans le cadre du test et de l'optimisation de code, l'enregistrement automatique en continu de la vie d'objets sélectionnés permet de nombreuses utilisations à posteriori, parmi lesquelles: analyser pas à pas le résultat d'exécution; exécuter sur un serveur différent pour comparaison en tenant compte ou 35 non des temps; créer des jeux de tests en changeant la valeur des paramètres des invocations enregistrées avant exécution; supprimer ou ajouter des invocations à des fins de simulation; simuler la charge en exécutant en parallèle la même séquence sur plusieurs objets; - dans le cadre de l'automatisation d'applications ou de traitements, l'enregistrement de lots de traitements à effectuer et leur exécution sur un ensemble d'objets à traiter permettent d'effectuer les mêmes services qu'un moteur de macro sans nécessiter pour cela un langage intermédiaire et un interpréteur; les appels aux lecteur et enregistreur peuvent être introduits automatiquement dans le pseudo code, dans le cadre de pré-traitement (preprocessing), à la compilation ou à l'exécution de l'application.  in the context of a distributed application, the local recording of processing operations to be carried out allows remote, deferred and / or repetitive execution (see description of FIG. 3); - in the context of code testing and optimization, the continuous automatic recording of the life of selected objects allows many uses a posteriori, among which: analyze step by step the result of execution; run on a different server for comparison, taking into account or not times; create test sets by changing the value of the invocation parameters saved before execution; delete or add invocations for simulation purposes; simulate the load by running the same sequence in parallel on several objects; - In the context of the automation of applications or processes, the batch of treatments to be recorded and their execution on a set of objects to be processed make it possible to perform the same services as a macro engine without requiring for this an intermediary language and an interpreter; Calls to the reader and recorder can be entered automatically in the pseudo code, in the preprocessing frame, in the compilation or the execution of the application.

La figure 3 représente, schématiquement, une mise en oeuvre des procédés et dispositifs d'enregistrement et de lecture objets de la présente invention.  FIG. 3 schematically represents an implementation of the recording and reading methods and devices of the present invention.

La partie "client" 300 illustrée en figure 3 comporte un moteur (ou bloc applicatif) 330. La partie client est, dans le mode de réalisation représenté en figure 3, est une applet (en français "appliquette") javaqui met en oeuvre une interface utilisateur 310 qui permet à l'utilisateur d'appliquer des filtres sur des images et de les annuler ou de les répéter et de rejouer les filtres appliqués en local (sur des images basses résolution) sur des images distantes de plus hautes résolutions.  The "client" part 300 illustrated in FIG. 3 comprises a motor (or application block) 330. The client part is, in the embodiment represented in FIG. 3, is an applet (in French "applet") java which implements a user interface 310 that allows the user to apply filters to images and cancel or repeat them and replay filters applied locally (on low resolution images) to distant images of higher resolutions.

La partie client comporte un enregistreur 305, qui met en oeuvre le procédé objet de la présente invention. La partie client comporte aussi une bibliothèques 315 de fonctions ou méthodes de filtrage ou de traitement d'image. Sous le contrôle de l'utilisateur et sur appel du moteur 330 qui applique des méthodes de la bibliothèque 315 à une image 320 de basse résolution (par exemple 320 x 200 pixels en 256 couleurs), les invocations de méthodes du moteur 330 sont automatiquement enregistrées par l'enregistreur 305 pour former un enregistrement 325 d'une séquence d'invocations de méthodes comme exposé en regard de la figure 1.  The client part comprises a recorder 305, which implements the method that is the subject of the present invention. The client part also includes a library 315 functions or methods of filtering or image processing. Under the control of the user and on call of the motor 330 which applies methods of the library 315 to a low resolution image 320 (for example 320 x 200 pixels in 256 colors), the method invocations of the engine 330 are automatically registered. by the recorder 305 to form a record 325 of a sequence of method invocations as set forth with reference to FIG.

Puis, sous le contrôle de l'utilisateur, l'enregistrement 325 est transmis au serveur 350 qui comporte un lecteur 355 de lecture de séquences d'invocations de méthodes. Un moteur 375, similaire au moteur 330, met en oeuvre une bibliothèque 365 identique à la bibliothèque 315 et effectue les appels du lecteur 355.  Then, under the control of the user, the record 325 is transmitted to the server 350 which includes a reader 355 reading sequences of invocations methods. A motor 375, similar to the engine 330, implements a library 365 identical to the library 315 and makes the calls of the reader 355.

Le serveur 350 de retouche d'images numériques en ligne (avec OPI, acronyme de "Open Prepress Interface" : système permettant de travailler sur une image basse résolution et de répercuter les actions sur la version haute résolution de cette même image) répercute les actions ou invocations de méthodes définies par la séquence d'invocations de méthodes 325 transmise à partir du client, sur une image 370 haute définition (par exemple 3.200 x 2.000 pixels en 16 millions de couleurs) conservée ou chargée par le serveur. Ainsi, la mise en oeuvre de la présente invention permet de ne faire transiter que des séquences d'invocations de méthodes représentant des traitements d'image, séquences extrêmement légères en terme d'utilisation de bande-passante, par rapport à la bande passante qui serait nécessaire pour faire transiter des images haute ou très haute résolution.  The 350 digital image editing server online (with OPI, acronym for "Open Prepress Interface": system allowing to work on a low resolution image and to pass on the actions on the high resolution version of this same image) echoes the actions or invocations of methods defined by the method invocation sequence 325 transmitted from the client, on a 370 high definition image (for example 3.200 x 2.000 pixels in 16 million colors) conserved or loaded by the server. Thus, the implementation of the present invention makes it possible to pass only sequences of invocations of methods representing image processing, extremely light sequences in terms of bandwidth usage, compared to the bandwidth that would be necessary to pass high or very high resolution images.

On observe, en figure 4, un graphe d'invocations de méthodes enregistrées successivement, en mode "préservé". Lors d'une lecture en mode normal, les noeuds du graphe (qui correspondent à des invocations de méthode) qui sont successivement lus sont 401, 405 et 407. Lors d'une lecture en mode "préservé", les noeuds du graphe qui sont successivement lus sont 401, 402, 403, 404, 405, 406 et 407.  FIG. 4 shows a graph of invocations of methods recorded successively, in "preserved" mode. When reading in normal mode, the nodes of the graph (which correspond to method invocations) which are successively read are 401, 405 and 407. During a read in "preserved" mode, the nodes of the graph which are successively read are 401, 402, 403, 404, 405, 406 and 407.

Dans un mode particulier de réalisation adapté à la programmation d'un logiciel, on insert à chaque demande d'invocation de méthode une demande enregistrement de noeud (on peut, à la compilation d'un code, en mode "débug" ou non, ajouter les appels correspondants à l'enregistreur). Ainsi, dans une étape de pré-processing, au code source, on ajoute à chaque morceau de code correspondant à une invocation de méthode, un appel de l'enregistreur.  In a particular embodiment adapted to the programming of a software, one insert at each request of method invocation a node registration request (it is possible, at the compilation of a code, in "debug" mode or not, add the corresponding calls to the recorder). Thus, in a pre-processing step, the source code is added to each piece of code corresponding to a method invocation, a call from the recorder.

D'une manière générale, l'invention permet de conserver les transformations d'états dans une machine à états.  In general, the invention makes it possible to preserve state transformations in a state machine.

Grâce à la présente invention, dans le cadre d'une application objet, par exemple une application java, chaque objet, ou l'application elle-même, peut enregistrer des invocations de méthodes accompagnées de la valeur des paramètres et de la durée écoulée depuis la création de l'enregistrement.  With the present invention, in the context of an object application, for example a java application, each object, or the application itself, can record invocations of methods accompanied by the value of the parameters and the time elapsed since the creation of the recording.

L'utilisateur peut changer la position de la tête d'enregistrement et choisir d'enregistrer d'autres invocations, revenir en arrière, insérer des invocations, avec ou sans effacer des invocations précédemment présentes dans l'enregistrement logiciel. Il peut ainsi former un historique exhaustif, ou non, de la vie de l'objet, c'est-à-dire des invocations de méthodes.  The user can change the position of the recording head and choose to record other invocations, rewind, insert invocations, with or without deleting invocations previously present in the software record. It can thus form an exhaustive history, or not, of the life of the object, that is to say invocations of methods.

Une fois qu'un enregistrement d'une séquence d'invocation de méthodes est achevé, il est possible de le sauvegarder dans une bibliothèque logicielle. Du fait que cet enregistrement logiciel est très compact, par rapport aux objets invoqués, cet enregistrement logiciel peut être transmis au sein d'un système distribué.  Once a record of a method invocation sequence is complete, it can be saved in a software library. Because this software record is very compact, relative to the objects invoked, this software record can be transmitted within a distributed system.

Le contenu de l'enregistrement logiciel peut être rejoué à volonté par le système sur lequel fonctionne l'application objet, par le composant logiciel appelé "composant lecteur". Plusieurs modes de lecture permettent de rejouer les appels ou invocations de méthodes de différentes manières, en tenant compte du temps, selon l'historique complet, ...  The contents of the software record can be replayed at will by the system on which the object application operates, by the software component called "reader component". Several modes of reading make it possible to replay the calls or invocations of methods in different ways, taking into account the time, according to the complete history, ...

L'enregistrement logiciel étant indépendant de l'objet à l'origine de l'enregistrement logiciel, il peut être rejoué sur des objets différents de l'objet à l'origine de l'enregistrement, moyennant une compatibilité entre les objets considérés.  Since the software record is independent of the object at the origin of the software recording, it can be replayed on objects that are different from the object at the origin of the recording, provided that the objects concerned are compatible.

La sérialisation dynamique mise en oeuvre conformément à la présente invention permet d'enregistrer ces traitements et de les rejouer de différentes manières: o en pas à pas pour effectuer une correction d'erreur de code informatique sur l'application, o en changeant le contexte d'exécution (plate-forme, objet cible, etc.), o en modifiant le contenu de la séquence d'invocation de méthode ou des noeuds d'invocation de méthode pour tester différents comportements.  The dynamic serialization implemented in accordance with the present invention makes it possible to record these processes and to replay them in different ways: o step by step to perform a correction of computer code error on the application, o by changing the context runtime (platform, target object, etc.), or by modifying the contents of the method invocation sequence or method invocation nodes to test different behaviors.

Ainsi, grâce à la mise en oeuvre de la présente invention, plusieurs manipulations de flots d'invocations de méthodes peuvent être effectuées: le contenu d'une cassette d'invocations de méthodes peut être modifié en vue de son exécution. Cette modification peut porter sur les éléments suivants: - la cassette elle même par ajout, retrait de séquences d'invocation de méthode, la séquence d'invocation de méthode, par modification du graphe, c'est-à-dire ajout, retrait, déplacement de noeuds ou sous-arbres du graphe, - le noeud d'invocation de méthode, par exemple par la modification des données temporelles, - l'unité d'invocation de méthode, par modification de la méthode, par modification de la signature ou des paramètres de la méthode.  Thus, thanks to the implementation of the present invention, several method invocation flow manipulations can be performed: the contents of a method invocation cassette can be modified for execution. This modification can relate to the following elements: - the cassette itself by addition, withdrawal of sequences of invocation of method, the sequence of invocation of method, by modification of the graph, that is to say addition, withdrawal, displacement of nodes or subtrees of the graph, - the method invocation node, for example by the modification of the temporal data, - the method invocation unit, by modification of the method, by modification of the signature or parameters of the method.

Ces différentes modifications peuvent être réalisées par programmation ou édition du contenu d'une cassette. La manipulation de flots d'invocations de méthodes peut intervenir par exemple dans un environnement de test. Par exemple, des modifications automatiques du graphe peuvent: - détecter où se situe une erreur de programmation, par modifications successives du graphe et confinement des causes de l'erreur, - permettre d'augmenter la tolérance aux pannes.  These various modifications can be made by programming or editing the contents of a cassette. The manipulation of method invocation flows can occur for example in a test environment. For example, automatic changes to the graph can: - detect where a programming error is located, by successive modifications of the graph and containment of the causes of the error, - allow to increase the fault tolerance.

Un premier exemple concerne la modification de la séquence. Une séquence 35 d'invocations de méthodes SI est issue d'une première exécution de méthodes d'un objet A. On veut rejouer cette séquence sur un objet B tout en notifiant chaque exécution d'une méthode de la séquence à un objet C. La mise en oeuvre de la présente invention permet d'analyser la séquence Si et de générer une séquence S2 contenant outre les noeuds de la séquence S1, des noeuds de notification contenant l'appel à la méthode de notification de l'objet C. Un deuxième exemple concerne la modification du noeud. Dans cet exemple, on veut exécuter une séquence d'invocations de méthodes en accélérant ou en ralentissant certaines parties de cette séquence. La mise en oeuvre de la présente invention permet l'analyse puis la modification des données temporelles contenues dans les noeuds de la séquence.  A first example concerns the modification of the sequence. A sequence of invocations of SI methods results from a first execution of methods of an object A. We want to replay this sequence on an object B while notifying each execution of a method of the sequence to an object C. The implementation of the present invention makes it possible to analyze the sequence Si and to generate a sequence S2 containing, in addition to the nodes of the sequence S1, notification nodes containing the call to the notification method of the object C. second example concerns the modification of the node. In this example, we want to execute a sequence of method invocations by accelerating or slowing down some parts of this sequence. The implementation of the present invention allows the analysis and modification of the temporal data contained in the nodes of the sequence.

Un troisième exemple concerne la modification de la méthode. Dans cet exemple, une séquence d'invocation de méthodes Si est issue d'une première exécution de méthodes d'un objet A instance d'une classe Cl. Le source de la classe Cl est modifiée, puis recompilée pour donner une classe C2. Si on veut rejouer la séquence Si sur un objet B instance de la classe C2. Cela provoquera des erreurs si les signatures des méthodes de C2 sont différentes de celles de Cl. Sous certaines conditions, on définit alors une traduction de la séquence Si vers une séquence S2, adaptant les signatures des méthodes et les paramètres enregistrés dans la séquence Si pour rendre ces méthodes exécutables sur l'objet B. Un quatrième exemple concerne la modification de la méthode par modification des paramètres. Dans cet exemple, dans un environnement de test, on veut exécuter une séquence d'invocations de méthodes Si en faisant varier certains paramètres des méthodes enregistrées dans S1. Grâce à la mise en oeuvre de la présente invention, ceci peut être obtenu par l'analyse puis la modification des paramètres des méthodes contenues dans les noeuds de la séquence. On obtient ainsi un jeu de test constitué des séquence modifiées S2, S3,...,Sn.  A third example concerns the modification of the method. In this example, an invocation sequence of methods S1 comes from a first execution of methods of an object A instance of a class Cl. The source of the class Cl is modified and then recompiled to give a class C2. If we want to replay the sequence Si on an object B instance of the class C2. This will cause errors if the signatures of the methods of C2 are different from those of Cl. Under certain conditions, a translation of the sequence Si to a sequence S2 is then defined, adapting the signatures of the methods and the parameters recorded in the sequence Si for make these methods executable on the object B. A fourth example concerns the modification of the method by modifying the parameters. In this example, in a test environment, we want to execute a sequence of method invocations Si by varying certain parameters of the methods recorded in S1. Thanks to the implementation of the present invention, this can be obtained by analyzing and then modifying the parameters of the methods contained in the nodes of the sequence. This gives a test set consisting of modified sequences S2, S3, ..., Sn.

Claims (14)

REVENDICATIONS 1 - Procédé d'enregistrement d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte au moins: - une étape de création et de sauvegarde (110 à 122, 125) d'un graphe d'au moins une invocation de méthode et - une étape de sauvegarde d'informations de structure du graphe (123, 124) représentatives d'un enchaînement des dites invocations de méthode.  1 - Method for recording at least one invocation flow of at least one method, characterized in that it comprises at least: a creation and backup step (110 to 122, 125) of a graph of at least one method invocation and - a step of saving structure information of the graph (123, 124) representative of a sequence of said method invocations. 2 - Procédé d'enregistrement selon la revendication 1, caractérisé en ce que, au cours de l'étape de sauvegarde d'informations de structure (123, 124), les informations de structure du graphe comportent des informations de temporalité des invocations de méthode.  2 - Recording method according to claim 1, characterized in that, during the step of saving structure information (123, 124), the graph structure information includes time information of the method invocations . 3 - Procédé d'enregistrement selon l'une quelconque des revendications 1 ou 2, caractérisé en ce que, au cours de l'étape de sauvegarde d'informations de structure (123, 124), les informations de structure du graphe comportent des informations d'édition et/ou ajout de branches dudit graphe.  3 - recording method according to any one of claims 1 or 2, characterized in that, during the step of saving structure information (123, 124), the structure information of the graph include information editing and / or adding branches of said graph. 4 - Procédé d'enregistrement selon l'une quelconque des revendications 1 à 3, caractérisé en ce que, au cours de l'étape de création et de sauvegarde de graphe (110 à 122, 125), on sauvegarde, pour chaque enregistrement d'une invocation de méthode, au moins le nom de la méthode en question, le type et la valeur de ses paramètres, sa signature comportant une liste ordonnée des classes des paramètres de la méthode et une liste ordonnée des paramètres de la méthode.  4 - recording method according to any one of claims 1 to 3, characterized in that, during the step of creating and saving graph (110 to 122, 125), is saved for each record of a method invocation, at least the name of the method in question, the type and value of its parameters, its signature comprising an ordered list of classes of the parameters of the method and an ordered list of the parameters of the method. - Procédé d'enregistrement selon l'une quelconque des revendications 1 à 4, caractérisé en ce qu'il comporte une étape de positionnement d'un pointeur (115) dans le graphe.  - Recording method according to any one of claims 1 to 4, characterized in that it comprises a step of positioning a pointer (115) in the graph. 6 - Procédé d'enregistrement selon la revendication 5, caractérisé en ce que, au cours de l'étape de création et de sauvegarde de graphe (110 à 122, 125), on insère au moins une invocation de méthode dans le graphe, à partir de la position dudit pointeur, sans effacement des invocations de méthode déjà enregistrées (mode "préservé").  6 - recording method according to claim 5, characterized in that, during the step of creating and saving graph (110 to 122, 125), at least one method invocation is inserted into the graph, from the position of said pointer, without erasing method invocations already recorded ("preserved" mode). 7 - Procédé d'enregistrement selon l'une quelconque des revendications 5 ou 6, caractérisé en ce que, au cours de l'étape de création et de sauvegarde de graphe, on remplace, dans le graphe, à partir de la position dudit pointeur, au moins une invocation de méthode déjà enregistrée par au moins une nouvelle invocation de méthode (mode "normal").  7 - recording method according to any one of claims 5 or 6, characterized in that, during the step of creating and saving graph, is replaced in the graph, from the position of said pointer at least one method invocation already registered by at least one new method invocation ("normal" mode). 8 - Procédé d'enregistrement selon l'une quelconque des revendications 1 à 7, caractérisé en ce qu'il comporte: - au moins une étape de lecture (205 à 220) d'au moins une partie dudit graphe et d'informations de structure du graphe représentatif d'un enchaînement des dites invocations de méthode et - une étape d'exécution (225) des invocations de méthodes lues.  8 - recording method according to any one of claims 1 to 7, characterized in that it comprises: - at least one step of reading (205 to 220) of at least a portion of said graph and information of structure of the representative graph of a sequence of said method invocations and - an execution step (225) of invocations of read methods. 9 - Procédé d'enregistrement selon la revendication 8, caractérisé en ce que, au cours de l'étape d'exécution (225), les invocations de méthode sont effectuées sur au moins un objet différent ou non de chaque objet sur lequel les invocations de méthode ont agit au cours de chaque étape de création et de sauvegarde.  9 - recording method according to claim 8, characterized in that, during the execution step (225), the method invocations are performed on at least one different object or not of each object on which the invocations of method took action during each creation and backup step. - Procédé de lecture d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte: - au moins une étape de lecture (205 à 220) d'au moins une partie d'un graphe d'au moins une invocation de méthode et d'informations de structure du graphe représentatives d'un enchaînement des dites invocations de méthode et - une étape d'exécution (225) de chaque invocation de méthode lue.  - Method for reading at least one invocation flow of at least one method, characterized in that it comprises: - at least one step of reading (205 to 220) of at least a part of a graph at least one method invocation and graph structure information representative of a sequence of said method invocations and - an execution step (225) of each method invocation read. 11 - Procédé de lecture selon la revendication 10, caractérisé en ce que, au cours de l'étape de lecture (205 à 220), on lit des informations de structure du graphe comportant des informations de temporalité des invocations de méthode.  11 - Reading method according to claim 10, characterized in that, during the reading step (205 to 220), is read graph structure information including temporal information method invocations. 12 - Procédé de lecture selon l'une quelconque des revendications 10 ou 11, caractérisé en ce que, au cours de l'étape de lecture (205 à 220), on lit des informations de structure du graphe comportant des informations d'édition et/ou ajout de branches dudit graphe.  12 - Reading method according to any one of claims 10 or 11, characterized in that, during the reading step (205 to 220), is read graph structure information including editing information and / or adding branches of said graph. 13 - Procédé de lecture selon l'une quelconque des revendications 10 à 12, caractérisé en ce que, au cours de l'étape de lecture (205 à 220), on lit, pour chaque enregistrement d'une invocation de méthode lu, au moins le nom de la méthode en question, le type et la valeur de ses paramètres, sa signature comportant une liste ordonnée des classes des paramètres de la méthode et une liste ordonnée des paramètres de la méthode.  13 - Reading method according to any one of claims 10 to 12, characterized in that, during the reading step (205 to 220), is read for each record of a method invocation read, to minus the name of the method in question, the type and value of its parameters, its signature containing an ordered list of classes of the parameters of the method and an ordered list of the parameters of the method. 14 - Procédé de lecture selon l'une quelconque des revendications 10 à 13, caractérisé en ce qu'il comporte une étape de sélection d'un mode de lecture (205) entre un premier mode de lecture, dit "normal", dans lequel on lit seulement une partie des noeuds du graphe et un deuxième mode de lecture, dit "préservé", dans lequel on lit l'intégralité des noeuds du graphe.  14 - Reading method according to any one of claims 10 to 13, characterized in that it comprises a step of selecting a reading mode (205) between a first reading mode, called "normal", in which we read only a part of the nodes of the graph and a second reading mode, said "preserved", in which we read the entirety of the nodes of the graph. - Procédé selon l'une quelconque des revendications 1 à 14, caractérisé en ce qu'il comporte une étape de modification du graphe ou d'au moins un noeud.  - Method according to any one of claims 1 to 14, characterized in that it comprises a step of modifying the graph or at least one node. 16 - Dispositif d'enregistrement d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte au moins: - un moyen de création et de sauvegarde d'un graphe d'au moins une invocation de méthode et - un moyen de sauvegarde d'informations de structure du graphe représentatives d'un enchaînement des dites invocations de méthode.  16 - Device for recording at least one invocation flow of at least one method, characterized in that it comprises at least: a means for creating and saving a graph of at least one invocation method and - a means for saving graph structure information representative of a sequence of said method invocations. 17 - Dispositif de lecture d'au moins un flot d'invocation d'au moins une méthode, caractérisé en ce qu'il comporte au moins: - un moyen de lecture d'au moins une partie d'un graphe d'au moins une invocation de méthode et d'informations de structure du graphe représentatives d'un enchaînement des dites invocations de méthode et - un moyen d'exécution de chaque invocation de méthode lue.  17 - Device for reading at least one invocation flow of at least one method, characterized in that it comprises at least: a reading means of at least a part of a graph of at least an invocation of method and graph structure information representative of a sequence of said method invocations and a means for executing each method invocation read.
FR0403431A 2004-04-01 2004-04-01 Method invocation sequence recording process for e.g. object, involves recording and protecting structural information, of invocation graph, representing sequence of invocations and comprising temporal information of invocations Pending FR2868566A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR0403431A FR2868566A1 (en) 2004-04-01 2004-04-01 Method invocation sequence recording process for e.g. object, involves recording and protecting structural information, of invocation graph, representing sequence of invocations and comprising temporal information of invocations

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR0403431A FR2868566A1 (en) 2004-04-01 2004-04-01 Method invocation sequence recording process for e.g. object, involves recording and protecting structural information, of invocation graph, representing sequence of invocations and comprising temporal information of invocations

Publications (1)

Publication Number Publication Date
FR2868566A1 true FR2868566A1 (en) 2005-10-07

Family

ID=34944346

Family Applications (1)

Application Number Title Priority Date Filing Date
FR0403431A Pending FR2868566A1 (en) 2004-04-01 2004-04-01 Method invocation sequence recording process for e.g. object, involves recording and protecting structural information, of invocation graph, representing sequence of invocations and comprising temporal information of invocations

Country Status (1)

Country Link
FR (1) FR2868566A1 (en)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8230477B2 (en) * 2007-02-21 2012-07-24 International Business Machines Corporation System and method for the automatic evaluation of existing security policies and automatic creation of new security policies
US8332939B2 (en) 2007-02-21 2012-12-11 International Business Machines Corporation System and method for the automatic identification of subject-executed code and subject-granted access rights
CN111221721A (en) * 2018-11-27 2020-06-02 中国移动通信集团上海有限公司 Automatic recording and executing method and device for unit test cases

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014514A (en) * 1995-05-15 2000-01-11 Sun Microsystems, Inc. System for generating and graphically displaying call stack information for processing elements in a parallel processing system
WO2003005202A1 (en) * 2001-07-06 2003-01-16 Computer Associates Think, Inc. Method and system for providing a virtual user interface
US6532023B1 (en) * 1999-08-12 2003-03-11 International Business Machines Corporation Recording selected applet events of a user interaction sequence
US20030056200A1 (en) * 2001-09-19 2003-03-20 Jun Li Runtime monitoring in component-based systems

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6014514A (en) * 1995-05-15 2000-01-11 Sun Microsystems, Inc. System for generating and graphically displaying call stack information for processing elements in a parallel processing system
US6532023B1 (en) * 1999-08-12 2003-03-11 International Business Machines Corporation Recording selected applet events of a user interaction sequence
WO2003005202A1 (en) * 2001-07-06 2003-01-16 Computer Associates Think, Inc. Method and system for providing a virtual user interface
US20030056200A1 (en) * 2001-09-19 2003-03-20 Jun Li Runtime monitoring in component-based systems

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8230477B2 (en) * 2007-02-21 2012-07-24 International Business Machines Corporation System and method for the automatic evaluation of existing security policies and automatic creation of new security policies
US8332939B2 (en) 2007-02-21 2012-12-11 International Business Machines Corporation System and method for the automatic identification of subject-executed code and subject-granted access rights
CN111221721A (en) * 2018-11-27 2020-06-02 中国移动通信集团上海有限公司 Automatic recording and executing method and device for unit test cases
CN111221721B (en) * 2018-11-27 2023-09-05 中国移动通信集团上海有限公司 Automatic recording and executing method and device for unit test cases

Similar Documents

Publication Publication Date Title
US10409564B2 (en) Recording and playback of development sessions
US9196305B2 (en) Smart transitions
US20110066892A1 (en) Visual test automation tool for message-based applications, web applications and SOA systems
CN100437552C (en) Managing metadata and system thereof
CN108959069A (en) A kind of method for tracing and device of function operation
US8886016B2 (en) Propagating metadata associated with digital video
US20120195573A1 (en) Video Defect Replacement
US6591377B1 (en) Method for comparing system states at different points in time
FR3105862A1 (en) METHOD AND SYSTEM FOR SELECTING A LEARNING MODEL WITHIN A PLURALITY OF LEARNING MODELS
CN115629968A (en) Test data recording method and device
FR2864654A1 (en) Program operational characteristics determining process for embedded system e.g. payment terminal, involves simultaneously estimating program structure, possible execution paths and manipulation values in different points of program
FR2868566A1 (en) Method invocation sequence recording process for e.g. object, involves recording and protecting structural information, of invocation graph, representing sequence of invocations and comprising temporal information of invocations
CN106649000A (en) Fault recovery method for real-time processing engine, and corresponding server
CN112612697A (en) Software defect testing and positioning method and system based on byte code technology
EP0672986A1 (en) System analysis method
FR2898707A1 (en) METHOD, DEVICE AND SYSTEM FOR MANAGING STRUCTURED INFORMATION IN A GRAPHICAL SCENE
JP5772233B2 (en) Program execution trace information aggregation program, apparatus, and method
DE69728766T2 (en) System of program objects and program components with external interface
Adamson QuickTime for java: A developer's notebook
Santander An interactive debugging approach based on time-traveling queries
CN117093323B (en) Method and system for realizing sandbox mechanism based on back-end execution engine
CN112230935B (en) Privacy risk detection method, device and equipment in application
CN114666668B (en) Video playback method, system, equipment and storage medium
CN114490285A (en) System and method for replaying RPA flow execution process
WO2007036654A1 (en) Data structure and method for creating a computer software documentation