FR2786003A1 - Generation of source code for computer program controlling of example switching of PABX telephone system; uses intuitive interface to select language and environment as well as functions required - Google Patents

Generation of source code for computer program controlling of example switching of PABX telephone system; uses intuitive interface to select language and environment as well as functions required Download PDF

Info

Publication number
FR2786003A1
FR2786003A1 FR9814333A FR9814333A FR2786003A1 FR 2786003 A1 FR2786003 A1 FR 2786003A1 FR 9814333 A FR9814333 A FR 9814333A FR 9814333 A FR9814333 A FR 9814333A FR 2786003 A1 FR2786003 A1 FR 2786003A1
Authority
FR
France
Prior art keywords
source code
blocks
rules
aggregation
programming language
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
FR9814333A
Other languages
French (fr)
Inventor
Jean Michel Claude
Laurence Demounem
Pierrick Guingo
Vincent Lambert
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.)
Alcatel CIT SA
Alcatel Lucent SAS
Original Assignee
Alcatel CIT SA
Alcatel SA
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 Alcatel CIT SA, Alcatel SA filed Critical Alcatel CIT SA
Priority to FR9814333A priority Critical patent/FR2786003A1/en
Publication of FR2786003A1 publication Critical patent/FR2786003A1/en
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code

Abstract

The code generator uses code blocks held in libraries (Lib-One, Lib-Two). The blocks are predefined for different applications and programming languages. The programmer uses an intuitive interface to select the language and environment as well as functions required. The code blocks are aggregated in target files (TargetOne, TargetTwo) under rules (RULESFILE) produced by user selections.

Description

PROCEDE DE GENERATION DU CODE SOURCE D'UN PROGRAMME POUR
UN EQUIPEMENT INFORMATIQUE
La présente invention concerne un procédé de génération du code source d'un programme pour un équipement informatique.
METHOD FOR GENERATING THE SOURCE CODE OF A PROGRAM FOR
IT EQUIPMENT
The present invention relates to a method for generating the source code of a program for computer equipment.

Elle se rapporte au domaine du génie logiciel, c'est-à-dire l'ensemble des méthodes de production de programmes nécessaires au fonctionnement d'équipements informatiques. It relates to the field of software engineering, that is to say all the methods of production of programs necessary for the operation of computer equipment.

Par équipement informatique, on entend dans le présent exposé, au sens large, tout équipement comprenant des composants matériels et des composants logiciels coopérant en vue de l'obtention d'un résultat technique. Dans la suite, on considère l'exemple non limitatif d'un autocommutateur pour la gestion d'un réseau téléphonique privé (PABX). By computer equipment is meant in the present description, in the broad sense, any equipment comprising hardware components and software components cooperating with a view to obtaining a technical result. In the following, we consider the nonlimiting example of a PABX for the management of a private telephone network (PABX).

Le code source d'un programme est l'expression du programme sous forme non exécutable, dans un langage de programmation évolué tel que les langages C, ADA, Pascal, JAVA, etc., Pour convertir le code source en un programme exécutable par une machine, on doit réaliser une opération, dite opération d'assemblage, à I'aide d'un programme spécifique appelé assembleur. The source code of a program is the expression of the program in non-executable form, in an advanced programming language such as the languages C, ADA, Pascal, JAVA, etc., To convert the source code into a program executable by a machine, an operation, called assembly operation, must be carried out using a specific program called assembler.

Les équipements informatiques complexes présentent en général un ensemble de fonctionnalités différentes. Par exemple, un autocommutateur peut comprendre les fonctionnalités :
. la gestion d'une messagerie ;
. la gestion d'un répertoire de numéros d'appel ;
. le transfert d'appel ;
. le parcage d'appel ;
. le va-et-vient entres plusieurs appels ;
. ta conférence à trois ;
. I'interphonie, etc.
Complex IT equipment generally presents a set of different functionalities. For example, a PBX can understand the functionality:
. messaging management;
. the management of a directory of telephone numbers;
. call transfer;
. call parking;
. back and forth between several calls;
. your three-way conference;
. Intercom, etc.

Dans la pratique, un équipement est conçu pour fonctionner dans un environnement déterminé, impliquant une architecture matérielle déterminée, et pour tre piloté par un programme dont le code source est rédigé dans un langage de programmation déterminé (on parle de programme pilote). Par raccourci, on désignera dans la suite par "équipement de type déterminé", un équipement fonctionnant dans un environnement déterminé et étant pilote par un programme dont le code source est rédigé dans un langage déterminé. Des équipements de mme nature, par exemple des autocommutateurs, peuvent ainsi tre de types différents. In practice, an item of equipment is designed to operate in a determined environment, implying a determined hardware architecture, and to be controlled by a program whose source code is written in a determined programming language (we speak of a pilot program). By shortcut, we will hereinafter designate by "equipment of determined type", equipment operating in a determined environment and being piloted by a program whose source code is written in a determined language. Equipment of the same kind, for example automatic switches, can thus be of different types.

En outre, un équipement de type déterminé fait en général l'objet d'une personnalisation des fonctionnalités qu'il présente, afin de correspondre aux besoins exprimés par l'utilisateur ou, d'une manière générale, de remplir les fonctions requises par l'application qui en est faite. In addition, a given type of equipment is generally the subject of a customization of the functionalities which it presents, in order to correspond to the needs expressed by the user or, in general, to fulfill the functions required by the user. application.

Par exemple, le propriétaire d'un réseau téléphonique privé peut réclamer un autocommutateur présentant certaines seulement des fonctionnalités envisagées ci-dessus, et non les autres.For example, the owner of a private telephone network may request a PBX with only some of the features discussed above, and not the rest.

Cette personnalisation implique principalement la conception d'un programme pilote adapté. II est souhaitable que cette conception puisse tre réalisée par le distributeur des équipements, car c'est lui qui définit avec le client les fonctionnalités finales de l'équipement. Cependant, les compétences de ce distributeur sont par essence plus commerciales que techniques. Un problème particulier provient du fait mentionné plus haut que des équipements de mme nature peuvent tre de types différents. This personalization mainly involves the design of an adapted pilot program. It is desirable that this design can be carried out by the equipment distributor, since it is he who defines with the client the final functionalities of the equipment. However, the skills of this distributor are in essence more commercial than technical. A particular problem stems from the fact mentioned above that equipment of the same kind can be of different types.

Le distributeur n'étant pas un spécialiste de la programmation, il n'a pas de connaissances assez étendues pour concevoir un programme pilote pour les équipements de divers types qu'il propose à la vente. On sait déjà composer un programme en assemblant des modules logiciels prédéfinis, ce qui simplifie et accélère grandement la tâche. Néanmoins, cette opération demeure une opération techniquement délicate. II faut en pratique faire appel à un homme du métier ad hoc, en l'occurrence un spécialiste de la programmation ayant en plus une bonne connaissance des différents types d'équipements. Ceci augmente le coût et le délai de livraison de l'équipement. As the distributor is not a programming specialist, he does not have enough knowledge to design a pilot program for equipment of various types that he offers for sale. We already know how to compose a program by assembling predefined software modules, which greatly simplifies and accelerates the task. However, this operation remains a technically delicate operation. In practice, it is necessary to call upon a person skilled in the art, in this case a programming specialist who also has good knowledge of the different types of equipment. This increases the cost and delivery time of the equipment.

Le but de la présente invention est de simplifier la génération du code source d'un programme pour un équipement informatique, en faisant en sorte que cette génération soit à la portée d'un individu n'ayant pas de connaissances particulières de l'architecture matérielle des différents équipements, ni des différents langages de programmation. The aim of the present invention is to simplify the generation of the source code of a program for computer equipment, by ensuring that this generation is within the reach of an individual having no particular knowledge of the hardware architecture. different equipment, or different programming languages.

A cet effet, I'invention propose un procédé de génération du code source, exprimé dans un langage de programmation déterminé, d'un programme pour un équipement informatique devant fonctionner dans un environnement déterminé, qui comprend les étapes :
a) sélection de l'environnement de fonctionnement et/ou du langage de programmation ;
b) sélection d'au moins une fonctionnalité du programme ;
c) production d'un jeu de règles d'agrégation spécifiques de l'environnement de fonctionnement et/ou du langage de programmation, avec une ou plusieurs règles pour chaque fonctionnalite du programme ;
d) agrégation, en fonction des règles d'agrégation, de blocs de code source rédigés dans ledit langage de programmation et implémentant lesdites fonctionnalités du programme dans ledit environnement d'utilisation.
To this end, the invention proposes a method for generating the source code, expressed in a determined programming language, of a program for a computer equipment having to operate in a determined environment, which comprises the steps:
a) selection of the operating environment and / or programming language;
b) selection of at least one functionality of the program;
c) production of a set of specific aggregation rules for the operating environment and / or the programming language, with one or more rules for each functionality of the program;
d) aggregation, according to the aggregation rules, of blocks of source code written in said programming language and implementing said functionalities of the program in said environment of use.

Ainsi, l'utilisateur n'intervient que pour les étapes de sélection a) et b) qui peuvent tre réalisées à I'aide notamment d'une interface homme/machine adaptée. Une telle interface offre à l'utilisateur des représentations graphiques des fonctionnalités (en pratique des icônes sur un écran d'ordinateur). Elle comprend par exemple un écran d'ordinateur, un clavier et/ou une souris, et des moyens logiciels adaptés. Elle est facilement utilisable par un individu non-spécialiste de la programmation. Thus, the user only intervenes for the selection steps a) and b) which can be carried out using in particular a suitable man / machine interface. Such an interface provides the user with graphical representations of the functionalities (in practice icons on a computer screen). It includes for example a computer screen, a keyboard and / or a mouse, and suitable software means. It can be easily used by an individual who is not a programming specialist.

Les étapes c) et d) sont réalisées respectivement par un premier et par un second programmes adaptés, appelés respectivement moteur de production de règles, et moteur d'agrégation. L'étape c) est réalisée en fonction du résultat des sélections opérées par l'utilisateur aux étapes a) et b). L'étape d) est réalisée en fonction des régies d'agrégation produites à l'étape c). Steps c) and d) are carried out respectively by a first and by a second adapted programs, called respectively engine of production of rules, and engine of aggregation. Step c) is carried out according to the result of the selections made by the user in steps a) and b). Step d) is carried out according to the aggregation rules produced in step c).

De cette manière, l'agrégation de blocs de code de source n'est pas réalisée directement par l'utilisateur. Elle est réalisée par un programme ad hoc, en fonction d'un certain nombre de régies d'agrégation, elles-mme produites en fonction de la sélection d'un environnement d'utilisation et/ou d'un langage de programmation déterminés et de la sélection d'au moins une fonctionnalité du programme pilote opérées par l'utilisateur.  In this way, the aggregation of blocks of source code is not carried out directly by the user. It is carried out by an ad hoc program, according to a certain number of aggregation rules, which are themselves produced according to the selection of a specific user environment and / or programming language and the selection of at least one functionality of the pilot program operated by the user.

D'autres caractéristiques et avantages de l'invention apparaîtront à la lecture de la description qui va suivre. Celle-ci est purement illustrative et doit tre lue au regard des dessins annexés sur lesquels, on a représenté :
-à la figure 1 : un schéma du principe de génération de code source selon l'invention ;
-à la figure 2 : un schéma d'un fichier contenant les régles d'agrégation ;
-à la figure 3 et à la figure 4 : des schémas librairies contenant des blocs de code source ;
-à la figure 5 et à la figure 6 : des schémas représentant des fichiers contenant du code source généré selon l'invention avec les règles d'agrégation de la figure 2.
Other characteristics and advantages of the invention will appear on reading the description which follows. This is purely illustrative and should be read in conjunction with the accompanying drawings, in which:
in FIG. 1: a diagram of the principle of generation of source code according to the invention;
in FIG. 2: a diagram of a file containing the aggregation rules;
in FIG. 3 and in FIG. 4: diagrams of libraries containing blocks of source code;
in FIG. 5 and in FIG. 6: diagrams representing files containing source code generated according to the invention with the aggregation rules of FIG. 2.

A la figure 1, on a représenté schématiquement l'unité centrale 10 d'un ordinateur, reliée à des périphériques classiques tels qu'un écran 20, un clavier 30 et une souris 40. Cet ordinateur convient pour la mise en oeuvre du procédé de génération de code source selon l'invention. II est piloté par un utilitaire (c'est-à-dire un logiciel) ad hoc, sous la commande d'un utilisateur. Celui-ci n'a pas besoin de connaissances particulières en informatique, du moins pas de connaissances allant au-delà de la simple capacité à utiliser des logiciels tels que ceux qui sont maintenant largement répandus dans la bureautique, professionnelle ou domestique. In Figure 1, there is schematically shown the central unit 10 of a computer, connected to conventional peripherals such as a screen 20, a keyboard 30 and a mouse 40. This computer is suitable for implementing the method of source code generation according to the invention. It is controlled by an ad hoc utility (that is to say software), under the control of a user. This one does not need particular knowledge in data processing, at least not knowledge going beyond the simple capacity to use software such as those which are now widely widespread in office automation, professional or domestic.

Un écran d'accueil (non représenté) de l'utilitaire comprend des barres de menu, et/ou des icônes et/ou toutes autres représentations graphiques de commandes qui peuvent tre sélectionnées à I'aide des touches du clavier 30 et/ou de la souris 40. Chaque commande permet la sélection, par l'utilisateur, d'une part des caractéristiques de l'équipement informatique du type considéré (c'est-à-dire son environnement de fonctionnement et le langage de son programme pilote), et d'autre part de ses fonctionnalités. A home screen (not shown) of the utility comprises menu bars, and / or icons and / or any other graphical representations of commands which can be selected using the keys of the keyboard 30 and / or of the mouse 40. Each command allows the user to select a share of the characteristics of the computer equipment of the type under consideration (that is to say its operating environment and the language of its pilot program), and on the other hand its functionality.

Par exemple, des barres de menu permettent, en coopération avec le clavier ou la souris, de sélectionner l'environnement de fonctionnement de l'équipement, à savoir par exemple le type de l'installation téléphonique destinée à recevoir l'autocommutateur (à bus unique, à étoile de bus, etc...).  For example, menu bars make it possible, in cooperation with the keyboard or the mouse, to select the operating environment of the equipment, namely for example the type of telephone installation intended to receive the automatic branch exchange (bus single, bus star, etc.).

Le cas échéant, d'autres barres de menu permettent, toujours en coopération avec le clavier ou la souris, de sélectionner le langage de programmation du programme pilote de l'équipement. En outre, des icônes permettent, en coopération avec la souris, de sélectionner des fonctionnalités de J'équipement.If necessary, other menu bars allow, still in cooperation with the keyboard or the mouse, to select the programming language of the pilot program of the equipment. In addition, icons make it possible, in cooperation with the mouse, to select functionalities of the equipment.

Dit autrement, l'interface homme/machine comporte une représentation graphique des caractéristiques et des fonctionnalités du programme à générer, qui permet leur sélection par l'utilisateur d'une manière simple et intuitive, proche de la formulation en langage naturel. In other words, the man / machine interface includes a graphical representation of the characteristics and functionalities of the program to be generated, which allows their selection by the user in a simple and intuitive manner, close to the formulation in natural language.

Un fichier RULES-FILE (dit fichier de règles produites) est chargé avec des règles d'agrégation Rl, R2, R3... lors d'une étape de production de ces régies. La fonction d'une règle d'agrégation est de définir l'origine et la destination d'un bloc de code source déterminé, qui est dupliqué et agrégé lors d'une étape d'agrégation, ainsi éventuellement que sa situation vis à vis d'un autre bloc au sein d'un fichier de destination. A RULES-FILE file (known as produced rules file) is loaded with aggregation rules Rl, R2, R3 ... during a stage of production of these rules. The function of an aggregation rule is to define the origin and the destination of a determined block of source code, which is duplicated and aggregated during an aggregation step, as well as possibly its situation with respect to 'another block within a destination file.

En effet, des blocs de code source prédéfinis sont contenus à l'origine dans une ou plusieurs librairies telles que Lib0ne et Lib-Two. En fonction des règles d'agrégation générées, des blocs déterminés sont dupliqués et agrégés dans un ou plusieurs fichier de destination tels que TARGETOne et Target-Two. Les règles d'agrégation sont en quelque sorte des instructions de copie comprenant des paramètres. Indeed, blocks of predefined source code are originally contained in one or more libraries such as Lib0ne and Lib-Two. Depending on the aggregation rules generated, specific blocks are duplicated and aggregated in one or more destination files such as TARGETOne and Target-Two. Aggregation rules are sort of copy instructions with parameters.

Un exemple du contenu du fichier RULES-FILE est donné à la figure 2, sur laquelle des régies d'agrégation R1 à R9 sont écrites sous la :
RULE (xxx, yyy, www, zzz)
où les éléments xxx, yyy, www, et zzz sont les paramètres de la règle définissant respectivement les éléments :
. le nom du bloc concerné par la règle ;
. une indication du niveau de priorité associé au bloc lors de l'agrégation (qui détermine l'ordre d'exécution des règles d'agrégation, ainsi qu'on le verra plus loin) ;
. le nom de la librairie d'origine ;
. le nom du fichier de destination.
An example of the content of the RULES-FILE file is given in Figure 2, on which aggregation rules R1 to R9 are written under:
RULE (xxx, yyy, www, zzz)
where the elements xxx, yyy, www, and zzz are the parameters of the rule defining the elements respectively:
. the name of the block affected by the rule;
. an indication of the priority level associated with the block during the aggregation (which determines the order of execution of the aggregation rules, as will be seen below);
. the name of the original bookstore;
. the name of the destination file.

Les deux premiers paramètres ci-dessus sont appelés paramètres d'identification du bloc (ou signature). Comme on I'aura compris, le fichier RULES-FILE doit contenir une règle d'agrégation psr bloc de code source à agréger. The first two parameters above are called block identification parameters (or signature). As will be understood, the RULES-FILE file must contain an aggregation rule psr block of source code to be aggregated.

Comme on I'a dit ci-dessus, des blocs de code source prédéfinis, c'est-à-dire rédigés à I'avance, sont mémorisés dans une ou plusieurs librairies telles que Lib-One et Lib-Two (figure 1). On dira qu'une librairie "contient"des blocs de code source. Dans le domaine du génie logiciel, une librairie est un fichier contenant des blocs de code non forcément liés entre eux d'un point de vue fonctionnel ou logique. As mentioned above, predefined blocks of source code, that is to say, written in advance, are stored in one or more libraries such as Lib-One and Lib-Two (Figure 1) . It will be said that a library "contains" blocks of source code. In the field of software engineering, a library is a file containing blocks of code which are not necessarily linked together from a functional or logical point of view.

Au sein d'un mme bloc, le code source est rédigé dans un seul et unique langage de programmation. Le code source relatif à (c'est-à-dire implémentant) une fonctionnalité donnée est souvent divisé en blocs distincts. Ceci n'est pas absolument nécessaire mais permet de simplifier la conception et la maintenance (réalisation des corrections ou des mises à jour) du code source. II faut agréger un ou plusieurs blocs de code source rédigés dans le mme langage de programmation et relatifs à chaque fonctionnalité pour composer le code source du programme pilote d'un équipement ayant plusieurs fonctionnalités. Within a single block, the source code is written in a single programming language. The source code relating to (that is to say, implementing) a given functionality is often divided into separate blocks. This is not absolutely necessary but makes it possible to simplify the design and maintenance (making corrections or updates) of the source code. One or more blocks of source code written in the same programming language and relating to each functionality must be aggregated in order to compose the source code of the pilot program of equipment having several functionalities.

Dans le présent exposé, le terme"agréger"est utilisé comme signifiant"réunir en un tout des parties distinctes". Néanmoins, dans un cas limite, un unique bloc de code source peut constituer à lui seul le code source d'un programme pilote, si celui-ci n'a qu'une fonctionnalité et si celle-ci est assez simple. Ce cas sera en réalité extrmement rare et n'est mentionné ici qu'afin de garantir toute sa généralité à la fonction d'agrégation selon l'invention. In this paper, the term "aggregate" is used to mean "to bring together distinct parts". However, in a borderline case, a single block of source code can by itself constitute the source code of a pilot program, if it has only one functionality and if this is fairly simple. This case will in reality be extremely rare and is only mentioned here in order to guarantee its generality to the aggregation function according to the invention.

Pour une mme fonctionnalité, il existe des blocs de code source équivalents, pour chaque environnement de fonctionnement et/ou pour chaque langage de programmation. La logique du regroupement des blocs de code source au sein des librairies est choisie, notamment, de manière à faciliter la maintenance de l'ensemble. For the same functionality, there are equivalent source code blocks, for each operating environment and / or for each programming language. The logic of grouping the blocks of source code within libraries is chosen, in particular, so as to facilitate the maintenance of the whole.

Dans un mode de réalisation, une mme librairie contient des blocs de code source rédigés dans un mme langage de programmation. In one embodiment, the same library contains blocks of source code written in the same programming language.

Néanmoins ceci n'est pas obligatoire, et une librairie peut contenir des blocs de code source rédigés dans des langages de programmation différents. However, this is not mandatory, and a library can contain blocks of source code written in different programming languages.

Dans un autre mode de réalisation, une librairie déterminée contient uniquement des blocs de code source relatifs à un et un seul environnement d'utilisation de l'équipement. In another embodiment, a determined library contains only blocks of source code relating to one and only one environment for using the equipment.

Dans un autre mode de réalisation encore, une librairie déterminée contient uniquement des blocs de code source relatifs à une et une seule fonctionnalité du programme pilote. Ces modes de réalisations peuvent éventuellement se combiner. Dit autrement une librairie déterminée peut, par exemple contenir des blocs de code source qui sont à la fois relatifs à un environnement d'utilisation déterminé et rédigés dans un langage de programmation déterminé. In yet another embodiment, a determined library contains only blocks of source code relating to one and only one functionality of the pilot program. These embodiments can possibly be combined. In other words, a given library can, for example contain blocks of source code which are both relating to a given environment of use and written in a given programming language.

A la figure 3 et à la figure 4, on a représenté, de façon schématique, le contenu des librairies Lib0ne et Lib-Two de la figure 1. Les blocs de code source sont schématiquement représentés par trois traits horizontaux. In FIG. 3 and in FIG. 4, the content of the Lib0ne and Lib-Two libraries of FIG. 1 is represented schematically. The blocks of source code are schematically represented by three horizontal lines.

Dans une librairie, un bloc de code source est repéré par un marqueur de début de bloc et un marqueur de fin de bloc. Les marqueurs sont par exemple des mots ayant une valeur particulière et identifiable. Ils ont une première fonction qui est de repérer le début et la fin d'un bloc de code source dans une librairie. In a library, a source code block is identified by a block start marker and an end block marker. The markers are for example words having a particular and identifiable value. They have a first function which is to locate the beginning and the end of a block of source code in a library.

En outre les marqueurs peuvent tre de types différents. Par exemple, aux figures, on distingue des marqueurs de début de bloc différents, à savoir MARKER~1, MARKER~2 et MARKER3, auxquels correspondent les marqueurs de fins de bloc associés, respectivement ENDMARKER1, ENDMARKER2 et ENDMARKER3. A chacun de ces couples de marqueurs correspond un niveau de priorité associé au bloc repéré par les marqueurs. Ces niveaux de priorité associés aux blocs interviennent pour déterminer l'ordre dans lequel les blocs sont agrégés lors de l'étape d'agrégation, II est en effet courant que des parties de code source doivent se trouver avant d'autres au sein d'un fichier contenant le code source d'un programme, afin de respecter une certaine syntaxe dans la programmation. A titre d'illustration, on peut noter qu'un programme comprend classiquement, dans cet ordre, une partie de déclaration des variables utilisées, puis une partie de déclaration des fonctions utilisées, et enfin une partie correspondant au corps du programme proprement dit. In addition, the markers can be of different types. For example, in the figures, there are different start of block markers, namely MARKER ~ 1, MARKER ~ 2 and MARKER3, which correspond to the associated end of block markers, respectively ENDMARKER1, ENDMARKER2 and ENDMARKER3. Each of these pairs of markers corresponds to a priority level associated with the block identified by the markers. These priority levels associated with the blocks intervene to determine the order in which the blocks are aggregated during the aggregation step. It is in fact common that parts of source code must be before others within a file containing the source code of a program, in order to respect a certain syntax in programming. By way of illustration, it can be noted that a program conventionally comprises, in this order, a part for declaring the variables used, then a part for declaring the functions used, and finally a part corresponding to the body of the program itself.

C'est la deuxième fonction des marqueurs au sens de la présente invention, que d'indiquer le niveau de priorité associé au bloc. En pratique, le marqueur de début de bloc est fourni comme deuxième paramètre d'identification du bloc dans la règle d'agrégation. L'effet produit est une détermination de l'ordre dans lequel ! a régie d'agrégation correspondante sera exécutée par rapport aux autres règles d'agrégation.It is the second function of markers within the meaning of the present invention to indicate the priority level associated with the block. In practice, the block start marker is provided as the second block identification parameter in the aggregation rule. The effect produced is a determination of the order in which! he corresponding aggregation rules will be executed in relation to the other aggregation rules.

Le génération du code source d'un programme pilote s'effectue comme il va maintenant tre décrit. The generation of the source code of a pilot program is carried out as will now be described.

L'utilisateur sélectionne l'environnement de fonctionnement de l'équipement, ou le langage de programmation du programme pilote à générer, ou les deux (étape a)).)) sélectionne ensuite une fonctionnalité souhaitée du programme pilote (étape b)). Ces sélections sont réalisées par l'utilisateur par l'intermédiaire de l'interface homme/machine précitée. Le reste des opérations est réalisé de manière transparente vis à vis de l'utilisateur, c'est-à-dire que, en principe, il n'a pas besoin d'intervenir (sauf pour lancer l'exécution des autres étapes où pour interrompre leur exécution de toute manière appropriée). The user selects the operating environment of the equipment, or the programming language of the pilot program to be generated, or both (step a)).)) Then selects a desired functionality of the pilot program (step b)). These selections are made by the user via the aforementioned man / machine interface. The rest of the operations are carried out transparently vis-à-vis the user, that is to say that, in principle, he does not need to intervene (except to start the execution of the other steps where for interrupt their execution in any appropriate manner).

Lors de l'étape b), une commande associée à l'icône symbolisant la fonctionnalité sélectionnée est exécutée. Cette commande a pour effet de sélectionner (étape c)), parmi des régies prédéfinies, spécifiques de la fonctionnalité, celles et seulement celles qui concernent l'environnement de fonctionnement et le langage de programmation sélectionnés à l'étape a). During step b), a command associated with the icon symbolizing the selected functionality is executed. The effect of this command is to select (step c)), from predefined rules, specific to functionality, those and only those relating to the operating environment and the programming language selected in step a).

Toutes les régies prédéfinies qui sont spécifiques de la fonctionnalité, sont mémorisées dans un fichier permanent (non représenté à la figure 1). Elles sont accessibles par l'intermédiaire de paramètres liés à l'environnement de fonctionnement de l'équipement et au langage de programmation. Les règles d'agrégation sélectionnées sont copiées dans le fichier de règles sélectionnées RULES~FILE (figure 1).All the predefined control rooms which are specific to the functionality are stored in a permanent file (not shown in FIG. 1). They are accessible via parameters linked to the equipment operating environment and the programming language. The selected aggregation rules are copied to the selected rules file RULES ~ FILE (Figure 1).

L'étape b) est éventuellement répétée par l'utilisateur, en sorte de sélectionner plusieurs fonctionnalités consécutivement pour chaque fonctionnalité. Toutes les règles d'agrégation sélectionnées sont copiées dans le fichier RULES-FILE, qui est unique, à la suite les unes des autres. Dit autrement, l'étape c) est également répétée. Step b) is optionally repeated by the user, so as to select several functionalities consecutively for each functionality. All the selected aggregation rules are copied to the RULES-FILE, which is unique, one after the other. In other words, step c) is also repeated.

Dans un mode de réalisation avantageux, après l'étape c) (i. e. la dernière itération de l'étape c)), mais avant l'étape d'agrégation (étape d)), les régies d'agrégation stockées dans le fichier de règles sélectionnées RULES-FILE sont filtrées pour éliminer les doublons. En effet, il peut arriver qu'un mme bloc de code source soit nécessaire à l'implémentation de deux fonctionnalités différentes. Dans le cas où ces deux fonctionnalités sont sélectionnées, la mme règle d'agrégation sera copiée deux fois dans le fichier RULES-FILE (deux régies sont considérées comme identiques si elles ont les mmes paramètres). Ceci est notamment le cas pour des blocs de code source correspondant par exemple à des parties de déclaration de variables ou de fonctions du programme. Or, il n'est pas nécessaire de dupliquer ces parties de code source dans le programme à générer. In an advantageous embodiment, after step c) (ie the last iteration of step c)), but before the aggregation step (step d)), the aggregation rules stored in the file selected rules RULES-FILE are filtered to eliminate duplicates. Indeed, it can happen that the same block of source code is necessary for the implementation of two different functionalities. If these two functionalities are selected, the same aggregation rule will be copied twice in the RULES-FILE file (two rules are considered to be identical if they have the same parameters). This is particularly the case for blocks of source code corresponding for example to parts of declaration of variables or of functions of the program. However, it is not necessary to duplicate these parts of source code in the program to be generated.

Avantageusement, ce sont les règles d'agrégation en double qui sont éliminées du fichier RULESFtLE et non les blocs de code source en double qui sont éliminés des fichiers de destination. De cette manière, la copie de blocs inutiles est évitée, en sorte que la génération du code source est plus rapide, et exempte d'erreur de programmation liée à la double déclaration de variables ou de fonctions.Advantageously, it is the duplicate aggregation rules which are eliminated from the RULESFtLE file and not the duplicate source code blocks which are eliminated from the destination files. In this way, the copying of unnecessary blocks is avoided, so that the generation of the source code is faster, and free of programming errors related to the double declaration of variables or functions.

Ensuite, l'agrégation est réalisée par copie des blocs de code source, depuis leur librairie d'origine, par copie et concaténation dans au moins un fichier de destination (étape d)). Comme on I'a dit plus haut, cette agrégation s'effectue par exécution des règles d'agrégation. Chacune de celles-ci réalise la copie d'un bloc de code source déterminé en fonction de paramètres comprenant un ou plusieurs paramètres d'identification du bloc (en l'espèce son nom et le type des marqueurs de bloc), le nom de la librairie dans laquelle il est mémorisé, et le nom du fichier de destination dans lequel il doit tre copié. Et les règles d'agrégation sont exécutées dans l'ordre croissant des niveaux de priorité qui leur sont associés. De cette manière, les blocs de code source sont concaténés dans l'ordre déterminé par les niveaux de priorité associés à chaque bloc. Then, the aggregation is carried out by copying the blocks of source code, from their original library, by copying and concatenating in at least one destination file (step d)). As mentioned above, this aggregation is carried out by executing the aggregation rules. Each of these copies a block of source code determined according to parameters comprising one or more parameters for identifying the block (in this case its name and the type of block markers), the name of the library in which it is stored, and the name of the destination file in which it must be copied. And the aggregation rules are executed in ascending order of the priority levels associated with them. In this way, the source code blocks are concatenated in the order determined by the priority levels associated with each block.

Aux figures 5 et 6, on a représenté de façon schématique le contenu des fichiers de destination Target-One et Target Two après l'exécution de l'étape d'agrégation d), sur la base des librairies Lib-One et Lib-Two des figures 3 et 4, et en fonction des règles d'agrégation contenues dans le fichier RULES-FILE de la figure 2. Sur les figures 5 et 6, les blocs de code source représentés aux figures 3 et 4 sont représentés de la mme manière et désignés par l'une des appellations suivantes : First~Part, Middle~Part~1, Middle-Part-2, Middle-Part 3 et Last-Part. Bien entendu, l'ordre de ces blocs dans les fichiers de destination respecte l'ordre croissant des niveaux de priorité déterminés par les types de marqueurs respectivement MARKER-1, MARKER 2 et MARKER 3 (dans cet ordre). Le contenu des fichiers de destination représentés aux figures 5 et 6 parle de lui-mme et ne sera pas décrit plus en détail. In FIGS. 5 and 6, the content of the Target-One and Target Two destination files has been represented schematically after the execution of the aggregation step d), on the basis of the Lib-One and Lib-Two libraries. in Figures 3 and 4, and according to the aggregation rules contained in the RULES-FILE of Figure 2. In Figures 5 and 6, the source code blocks shown in Figures 3 and 4 are represented in the same way and designated by one of the following names: First ~ Part, Middle ~ Part ~ 1, Middle-Part-2, Middle-Part 3 and Last-Part. Of course, the order of these blocks in the destination files respects the ascending order of the priority levels determined by the types of markers MARKER-1, MARKER 2 and MARKER 3 respectively (in this order). The content of the destination files shown in Figures 5 and 6 speaks for itself and will not be described in more detail.

Dans un mode de réalisation particulier, les blocs de code source sont modifiés avant d'tre concaténés. Notamment, la modification des blocs de code source peut consister en une suppression de parties inutiles du bloc de code source compte tenu de 1'environnement de fonctionnement et du langage de programmation sélectionnés. Cette modification est réalisée au moment de l'agrégation en fonction de paramètres supplémentaires des règles d'agrégation prévus à cet effet.  In a particular embodiment, the source code blocks are modified before being concatenated. In particular, the modification of the source code blocks can consist of a deletion of unnecessary parts of the source code block taking into account the operating environment and the programming language selected. This modification is made at the time of aggregation according to additional parameters of the aggregation rules provided for this purpose.

Claims (15)

REVENDICATIONS 1. Procédé de génération du code source, exprimé dans un langage de programmation déterminé, d'un programme pour un équipement informatique déterminé devant fonctionner dans un environnement déterminé, caractérisé en ce qu'il comprend les étapes suivantes : 1. A method for generating the source code, expressed in a determined programming language, of a program for a given computer equipment which is to operate in a given environment, characterized in that it comprises the following steps: a) sélection de l'environnement de fonctionnement et/ou du langage de programmation ; a) selection of the operating environment and / or programming language; b) sélection d'au moins une fonctionnalité du programme ; b) selection of at least one functionality of the program; c) production automatique d'un jeu de règles d'agrégation spécifiques de l'environnement de fonctionnement et/ou du langage de programmation, avec une ou plusieurs règles pour chaque fonctionnalité du programme ; c) automatic production of a set of specific aggregation rules for the operating environment and / or the programming language, with one or more rules for each functionality of the program; d) agrégation automatique, en fonction des règles d'agrégation, de blocs de code source rédigés dans ledit langage de programmation et implémentant lesdites fonctionnalités du programme dans ledit environnement d'utilisation. d) automatic aggregation, according to the aggregation rules, of blocks of source code written in said programming language and implementing said functionalities of the program in said environment of use. 2. Procédé selon la revendication 1, caractérisé en ce que, à l'étape a) et/ou à l'étape b), la sélection est réalisée par l'utilisateur à I'aide d'une interface homme/machine.  2. Method according to claim 1, characterized in that, in step a) and / or in step b), the selection is carried out by the user using a man / machine interface. 3. Procédé selon la revendication 1, caractérisé en ce que, à l'étape c), pour chaque fonctionnalité, les règles d'agrégation sont produites par sélection parmi des règles spécifiques de la fonctionnalité, de celles et seulement celles qui concernent ledit environnement d'utilisation et ledit langage de programmation. 3. Method according to claim 1, characterized in that, in step c), for each functionality, the aggregation rules are produced by selection from among the specific functionality rules, those and only those which relate to said environment of use and said programming language. 4. Procédé selon la revendication 3, caractérisé en ce que les règles d'agrégation générées pour différentes fonctionnalités sélectionnées sont stockées dans un unique fichier de règles sélectionnées (RULES-FILE).  4. Method according to claim 3, characterized in that the aggregation rules generated for different selected functionalities are stored in a single file of selected rules (RULES-FILE). 5. Procédé selon la revendication 4, caractérisé en ce que, entre !'étape c) et l'étape d), les règles d'agrégation stockées dans le fichier de règles sélectionnées sont filtrées pour éliminer les doublons. 5. Method according to claim 4, characterized in that, between step c) and step d), the aggregation rules stored in the selected rule file are filtered to eliminate duplicates. 6. Procédé selon la revendication 1, caractérisé en ce que, à l'étape d), !'agrégation est réalisée par copie des blocs de code source qui sont mémorisés dans au moins une librairie et par concaténation dans au moins un fichier de destination. 6. Method according to claim 1, characterized in that, in step d), the aggregation is carried out by copying the blocks of source code which are stored in at least one library and by concatenation in at least one destination file . 7. Procédé selon la revendication 6, caractérisé en ce que une règle d'agrégation réalise une copie d'un bloc de code source en fonction de paramètres comprenant un ou plusieurs paramètres d'identification du bloc, le nom de la librairie (Lib~One, Lib~Two) dans laquelle il est mémorisé, et le nom du fichier (Target~One, TargetTwo) dans lequel il doit tre copié. 7. Method according to claim 6, characterized in that an aggregation rule makes a copy of a block of source code as a function of parameters comprising one or more parameters for identifying the block, the name of the library (Lib ~ One, Lib ~ Two) in which it is stored, and the name of the file (Target ~ One, TargetTwo) in which it must be copied. 8. Procédé selon la revendication 6 ou selon la revendication 7, caractérisé en ce que les blocs de code source sont concaténés dans un ordre déterminé, en fonction d'un niveau de priorité associé à chaque bloc. 8. Method according to claim 6 or according to claim 7, characterized in that the source code blocks are concatenated in a determined order, as a function of a priority level associated with each block. 9. Procédé selon la revendication 8 caractérisé en ce que le niveau de priorité est déterminé par un, respectivement un autre paramètre, des paramètres d'identification du bloc de code source. 9. Method according to claim 8 characterized in that the priority level is determined by one, respectively another parameter, parameters for identifying the source code block. 10. Procédé selon l'une des revendications 6 à 9, caractérisé en ce que les blocs de code source sont modifiés avant d'tre concaténés.  10. Method according to one of claims 6 to 9, characterized in that the source code blocks are modified before being concatenated. 11. Procédé selon la revendication 10, caractérisé en ce que la modification des blocs de code source consiste en une suppression de parties inutiles du bloc de code source compte tenu de l'environnement de fonctionnement et du langage de programmation sélectionnés. 11. Method according to claim 10, characterized in that the modification of the source code blocks consists in a deletion of unnecessary parts of the source code block taking into account the operating environment and the programming language selected. 12. Dispositif pour la mise en oeuvre d'un procédé selon l'une des revendications précédentes, caractérisé en ce qu'il comprend une interface homme/machine intuitive pour la sélection de l'environnement de fonctionnement et/ou du langage de programmation, et la sélection d'au moins une fonctionnalité du programme. 12. Device for implementing a method according to one of the preceding claims, characterized in that it comprises an intuitive man / machine interface for the selection of the operating environment and / or the programming language, and selecting at least one feature of the program. 13. Dispositif selon la revendication 12, caractérisé en ce qu'il comporte au moins une librairie contenant des blocs de code source rédigés dans un mme langage de programmation différent. 13. Device according to claim 12, characterized in that it comprises at least one library containing blocks of source code written in the same different programming language. 14. Dispositif selon la revendication 12 ou selon la revendication 13, caractérisé en ce qu'il comporte au moins une librairie déterminée contenant uniquement des blocs de code source relatifs 6 un et un seul environnement d'utilisation de l'équipement. 14. Device according to claim 12 or according to claim 13, characterized in that it comprises at least one determined library containing only blocks of relative source code 6 one and only one environment for using the equipment. 15. Dispositif selon l'une des revendications 12 à 14, caractérisé en ce qu'il comporte au moins une librairie déterminée contenant uniquement des blocs de code source relatifs à une et une seule fonctionnalité du programme.  15. Device according to one of claims 12 to 14, characterized in that it comprises at least one determined library containing only blocks of source code relating to one and only one functionality of the program.
FR9814333A 1998-11-16 1998-11-16 Generation of source code for computer program controlling of example switching of PABX telephone system; uses intuitive interface to select language and environment as well as functions required Pending FR2786003A1 (en)

Priority Applications (1)

Application Number Priority Date Filing Date Title
FR9814333A FR2786003A1 (en) 1998-11-16 1998-11-16 Generation of source code for computer program controlling of example switching of PABX telephone system; uses intuitive interface to select language and environment as well as functions required

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR9814333A FR2786003A1 (en) 1998-11-16 1998-11-16 Generation of source code for computer program controlling of example switching of PABX telephone system; uses intuitive interface to select language and environment as well as functions required

Publications (1)

Publication Number Publication Date
FR2786003A1 true FR2786003A1 (en) 2000-05-19

Family

ID=9532744

Family Applications (1)

Application Number Title Priority Date Filing Date
FR9814333A Pending FR2786003A1 (en) 1998-11-16 1998-11-16 Generation of source code for computer program controlling of example switching of PABX telephone system; uses intuitive interface to select language and environment as well as functions required

Country Status (1)

Country Link
FR (1) FR2786003A1 (en)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0216480A2 (en) * 1985-08-21 1987-04-01 Teknowledge, Inc. Intelligent assistant for using and operating computer systems capabilities to solve problems
EP0709773A1 (en) * 1994-09-30 1996-05-01 International Business Machines Corporation System and method for generating target language code utilizing an object oriented code generator
WO1997015882A1 (en) * 1995-10-27 1997-05-01 Authorgenics, Inc. Application program and documentation generator system and method

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP0216480A2 (en) * 1985-08-21 1987-04-01 Teknowledge, Inc. Intelligent assistant for using and operating computer systems capabilities to solve problems
EP0709773A1 (en) * 1994-09-30 1996-05-01 International Business Machines Corporation System and method for generating target language code utilizing an object oriented code generator
WO1997015882A1 (en) * 1995-10-27 1997-05-01 Authorgenics, Inc. Application program and documentation generator system and method

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
HAMADA T ET AL: "A GENERATOR FOR SYNTAX-DIRECTED PROGRAMMING SYSTEMS", SYSTEMS & COMPUTERS IN JAPAN, vol. 19, no. 5, 1 May 1988 (1988-05-01), pages 1 - 13, XP000068509, ISSN: 0882-1666 *

Similar Documents

Publication Publication Date Title
US7725839B2 (en) Three-dimensional active file explorer
EP0793171B1 (en) System for configuration of preconfigured software programs on networked open systems in a distributed environment and method to operate this system
US7207034B2 (en) Undo infrastructure
FR2821193A1 (en) USER INTERFACE DESIGN DEVICE
US7526734B2 (en) User interfaces for developing enterprise applications
EP0804771A1 (en) Administrative interface for a database in a distributed computer environment
EP0843259A1 (en) System and method for management and processing of distributed object transactions, and method carried out by said system
FR2824160A1 (en) DYNAMICALLY CONFIGURABLE GENERIC CONTAINER
EP1387261A1 (en) Application software generation and language for software description
US5781902A (en) Method, computer program product, and system for extending the capabilities of an existing process to store and display foreign data
EP0445034A1 (en) System and use of this system in a card replacement process
FR2786003A1 (en) Generation of source code for computer program controlling of example switching of PABX telephone system; uses intuitive interface to select language and environment as well as functions required
EP1341087B1 (en) Method and system for the management of a personal event journal
EP2278466A1 (en) Apparatus and method for the distributed execution of digital data processing
EP2115559B1 (en) Device for analysing variable magnitudes by simultaneous multiple windowing
FR2643734A1 (en) METHOD FOR MANAGING FILES FOR A COMPUTER SYSTEM, AND SYSTEM MODULE FOR IMPLEMENTING SAID METHOD
EP3236347A1 (en) Sound assistance method of a control interface of a terminal, a program and a terminal
FR3013473A1 (en) METHOD AND DEVICE FOR CONTROLLING THE DEPLOYMENT OF SOFTWARE ENTIRE SETS IN A HIGH PERFORMANCE COMPUTER
FR2870951A1 (en) SYSTEM FOR MEMORIZING USER LEVEL DATA
FR2817634A1 (en) METHOD FOR REALIZING INTER-TASK COMMUNICATION IN A MULTI-TASK COMPUTER OPERATING SYSTEM
EP0688124B1 (en) Method and interface for sharing physical resources
WO2000026774A1 (en) Method for controlling a function executable by specific commands to different software tools
EP0790553B1 (en) Tool for generating and executing graphical commands
FR2809511A1 (en) Method for accessing a directory stored in memory using Enterprise Java Beans components by supplying transactional functionality using an EJB server to manage access to the directory
WO2002023387A1 (en) Method for consulting electronic documents and related system