[[patent( Description of corresponding document: <strong>WO0026776</strong><br/> <br/> <br/> Titre<br/>
<br/> Domaine technique<br/>
L'invention se rapporte à la commande d'un système informatique par un utilisateur et plus particulièrement par un utilisateur n'ayant pas ou peu de connaissance en informatique ou de son système informatique. L'invention est adaptée à tout système et est particulièrement avantageuse dans le cas où le système est hétérogène. L'invention a pour objet un procédé de génération d'interfaces pour la commande par un utilisateur d'un système informatique, ainsi que le système mettant en oeuvre ce procédé. Plus précisément, la commande du système est faite à partir d'au moins un objet incluant des descriptions de l'objet et/ou d'au moins un membre de l'objet.<br/>
<br/> L'art antérieur.<br/> <br/>
<br/> Cependant, les personnes qui gèrent la politique de 1'entreprise sont très souvent spécialisées dans divers métiers de 1'entreprise autres que l'informatique (commerce, personnel, juridique, etc.). Ces personnes se trouvent donc actuellement obligées à investir beaucoup d'argent et de temps dans l'apprentissage des langages de commandes du système, dont la syntaxe est souvent complexe. En outre, le système et ses langages évoluent très vite et nécessitent une formation régulière de ces personnes et un usage permanent du système et des langages. <br/> <br/>
La suite du texte considère comme exemple d'illustration un directeur d'agence bancaire disposant du système informatique de l'agence et de la banque. On suppose que le système est de type ouvert, par exemple celui connu sous le nom de la marque déposée UNIX, et qu'il supporte un logiciel gestionnaire d'applications du type client-serveur, destiné à gérer des propriétés transactionnelles dans un environnement de systèmes ouverts, tel que le logiciel connu sous le nom de la marque déposée TUXEDO (Transactions for UniX Extended for Distributed Operations). Dans ce contexte, si le directeur souhaite simplement envoyer une commande au système pour ouvrir les applications transactionnelles entre 8 heures et 16 heures du lundi au vendredi, il doit connaître la syntaxe des commandes tmboot et tmshutdown du gestionnaire transactionnel, ainsi que la syntaxe de la commande crontab d'Unix pour ordonnancer les tâches.<br/>
<br/>
Au lieu d'utiliser les commandes pour avoir accès aux systèmes d'information, une autre technique utilisée depuis plusieurs années consiste à construire des interfaces graphiques pour utilisateur. et leurs options. Les interfaces graphiques proposent à l'utilisateur des options, de sorte que l'utilisateur n'a plus à se rappeler des options de chaque commande.<br/>
<br/>
Bien que les interfaces graphiques aient apporté un gain très important en productivité par rapport à 1'emploi de commandes, l'expérience a fait apparaître plusieurs inconvénients importants. D'abord, l'utilisateur d'une interface graphique a toujours besoin d'une période d'apprentissage de l'interface. Ensuite, le développement d'une interface graphique a un coût très élevé. Ce coût tient compte de la spécificité de 1'entreprise, de ses activités, des besoins des utilisateurs, des systèmes d'information et des logiciels mis en oeuvre, et des évolutions rapides. Enfin, il est nécessaire d'associer une documentation d'aide en ligne à toute interface graphique.<br/>
<br/> Cette documentation est aussi spécifique, évolutive et elle est d'un emploi très lourd, surtout si les informations d'aide nécessitent l'ouverture et la lecture de plusieurs fentres successives. Elle se prte donc mal à un emploi trop répété.<br/> <br/> Sommaire de l'invention<br/>
<br/>
<br/>
Un troisième but de l'invention est d'offrir facilement à l'utilisateur la possibilité de modifier, de personnaliser et d'enrichir l'interface. L'évolution de l'interface peut se faire ainsi d'elle-mme, sans nécessiter l'intervention d'un expert.<br/>
<br/>
<br/>
L'invention a pour objet un procédé de génération d'une interface pour la commande d'un système informatique par un utilisateur, la commande étant faite à partir d'au moins un objet incluant des descriptions de l'objet et/ou d'au moins un membre de l'objet, caractérisé en ce qu'il consiste à extraire de l'objet au moins en partie lesdites descriptions et à les organiser pour traduire le sens de ladite commande en un langage compréhensible à l'utilisateur et ainsi faire ladite interface.<br/>
<br/>
L'invention a pour objet corollaire un système informatique comprenant un ensemble informatique et une interface de commande servant à un utilisateur à envoyer au système des commandes spécifiques au système pour une exploitation désirée du système, caractérisé en ce qu'il met en oeuvre le procédé défini précédemment.<br/>
<br/>
<br/>
<br/> Présentation des dessins annexés.<br/> <br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/>
<br/> Description détaillée d'exemples illustrant l'invention.<br/> <br/>
La figure 1 illustre un système d'information 10 exploité par un utilisateur U par l'intermédiaire d'une interface de commande 11. Le système 10 peut tre un système quelconque. Le système 10 illustré inclut un ensemble informatique 1 comprenant au moins une machine, deux machines 2a et 2b dans 1'exemple illustré. Chaque machine illustrée a, de façon bien connue, au moins un processeur A connecté par l'intermédiaire d'un bus B à une mémoire 3. D'une manière générale, la mémoire peut tre locale ou distribuée, ou les machines peuvent former des noeuds d'un réseau dans 1'ensemble 1. Dans chaque mémoire 3 sont stockés des moyens logiciels, notamment un ou plusieurs systèmes d'exploitation 4. Afin de mieux mettre en relief les avantages de l'invention, il sera considéré comme un système hétérogène représentatif d'un cas difficile à gérer. Les deux machines 2 sont supposées fonctionner sous deux systèmes d'exploitation respectifs 4a et 4b de types ou de versions différents l'un de l'autre, par exemple un système d'exploitation du type propriétaire et un système d'exploitation de type ouvert, par exemple celui connu sous l'un des noms de marque déposée UNIX ou Windows NT. L'ensemble informatique 1 dispose aussi de moyens de base de données, appelés base de données 5 et pouvant tre constitués d'une ou plusieurs bases de données locales ou distantes. Les machines 2 ont aussi chacune une interface d'entrée-sortie C connectée au bus B. Les interfaces d'entrée-sortie C des deux machines sont interconnectées entre elles ainsi qu'à la base de données C.<br/>
<br/>
L'interface de commande 11 comprend un module de commande 12, un module de conception 13, un générateur 14 d'interfaces et une base d'interface 15. Le module 12 est connecté de façon bidirectionnelle à l'ensemble informatique 1. Le module 13 peut aussi tre connecté de la mme façon à l'ensemble informatique 1. La base d'interface 15 est connectée de façon bidirectionnelle aux modules 12 et 13 et au générateur 14. Le générateur 14 est aussi connecté pour tre commandé par le module 13. Le module de commande 12 sert à l'utilisateur U pour commander et exploiter les données du système 10. Le module de conception 13 sert à un concepteur<br/>
C, qui est un autre utilisateur de l'interface 11 mais qui est un spécialiste en informatique. Les deux utilisateurs U et C ont des consoles respectives 16 et 17 attachées aux modules respectifs 12 et 13.<br/> <br/>
En bref, l'utilisateur U définit des besoins pour connaître et améliorer le fonctionnement de 1'entreprise et soumet ses besoins au concepteur C. Le concepteur C crée au moyen de son module 13 des objets logiciels répondant aux besoins de l'utilisateur U et les envoie au générateur 14 pour tre converties en interfaces 18 (figures 11 et 12) correspondant à ses besoins et exprimant les commandes du système en un langage qui lui est compréhensible. Ces interfaces servent à l'utilisateur pour former des documents et seront appelées interfaces documentaires. <br/>
<br/>
L'utilisateur U sera par exemple un directeur d'agence bancaire non spécialisé en informatique. On suppose par exemple que l'utilisateur U désire consulter 1'ensemble informatique 1 de la banque pour faire des requtes en vue d'obtenir une liste d'étudiants, clients de l'agence, et imprimer pour eux des lettres personnalisées d'information, d'invitation et de rappel. L'utilisateur U transmet ses besoins au concepteur C, par exemple lors d'une réunion entre eux. Le concepteur transcrit ces besoins en utilisant, dans une première étape, le module 13 pour créer, modifier et/ou supprimer des objets et des classes d'objets concernés par ces besoins. Par exemple, afin de satisfaire au besoin précité de l'utilisateur U, le concepteur C créera une classe impression avec : un premier attribut"liste de diffusion"selon un ensemble de critères, ici les étudiants de l'agence ; un second attribut "nombre d'exemplaires" (entier) ; une première méthode"imprimer"ayant comme paramètre l'imprimante destinataire ; et une seconde méthode "visualiser les opérations d'impression"pour connaître le déroulement de l'impression. Les objets et classes créés par le concepteur sont stockés dans la base d'interface 15. La transcription finale par le concepteur C des besoins de l'utilisateur U n'est contenue que dans des objets qui ont été directement créés précédemment ou qui sont des instances de classes définies précédemment. Ces objets sont contenus dans la base 15, qui est contenue dans l'interface de commande 11 dans 1'exemple illustré mais qui pourrait tre extérieure à l'interface 11 et incluse dans 1'ensemble informatique 1. Les objets sont convertis en interfaces documentaires présentées à l'utilisateur U pour lui servir à former des documents de commande satisfaisant à ses besoins.<br/>
<br/>
<br/>
La figure 2 illustre un exemple d'écran 21 qu'affiche la console 17 pour servir d'interface entre le concepteur C et le module 13. L'écran 21 a une barre 22 de menus incluant notamment les menus"Classes","Objets", "Rechercher"et"Exporter à U". Le menu"Classes"permet de créer dynamiquement des classes d'objets, par héritage ou non. Il permet aussi d'ouvrir une classe pour éventuellement la modifier, l'enregistrer ou la fermer. Le menu"Objets"permet d'instancier les classes définies précédemment, afin de créer des objets qu'on peut ensuite cloner. Comme pour les classes, on peut ouvrir un objet, le modifier, l'enregistrer sur le disque et le fermer. Avec l'outil 20, le concepteur C peut définir les commandes qui se trouvent dans les deux menus tels qu'illustrés par exemple dans ceux de l'écran 21. Le menu"Classes"illustré contient les commandes "Nouvelle classe","Nouvelle classe héritée","Ouvrir une classe","Supprimer une classe","Enregistrer la classe","Enregistrer la classe sous..." (Save the class as...) et"Fermer la classe". Le menu"Objets"contient les commandes "Nouvel objet de classe","Cloner un objet","Ouvrir un objet","Supprimer un objet","Enregistrer l'objet","Enregistrer l'objet sous..."et"Fermer l'objet".<br/>
<br/>
L'outil 20 met en oeuvre un procédé de génération dynamique d'une classe d'objets. Le procédé est déclenché automatiquement par le module de conception 13 lorsque le concepteur C active la commande "Nouvelle classe"du menu"Classes"de la fentre 22 de la figure 2. Le procédé de génération automatique d'une classe consiste à créer une classe générique globale"GenericClass"ayant deux membres possibles, l'un étant relatif à au moins un attribut et l'autre étant relatif à au moins une méthode, au moins l'un des deux membres étant une instance d'une classe générique, et à instancier la classe générique globale pour avoir ladite classe d'objets. Dans l'outil 20 illustré, deux classes génériques"GenericAttribute"et "GenericMethod"sont attribuées aux deux membres respectifs de la classe générique globale"GenericClass". En outre, si une méthode inclut au moins un paramètre non fixe, ce paramètre est lui mme une instance d'une classe générique correspondante"GenericParameter".<br/>
<br/>
D'une manière générale, les quatre classes génériques ainsi créées ne sont pas visibles par le concepteur C. Dans 1'exemple illustré, elles sont mises à la disposition du concepteur C lorsqu'il exécute une commande dans les menus"Classes"et"Objets". Ainsi, une classe générique se définit comme une classe permettant au concepteur C de créer une nouvelle classe en créant une instance d'une classe générique globale. Puisque la création d'instances est dynamique dans tous les langages, la création d'une classe devient aussi dynamique pour le concepteur C. De mme, sachant qu'un objet est une nouvelle instance d'une classe, la création d'un objet correspond alors aussi à la création d'une copie de cette classe, c'est-à-dire à une nouvelle instance d'une classe générique globale. Par conséquent, le procédé déclenché par l'outil 20 est aussi déclenché lorsque le concepteur C active la commande "Nouvel objet de classe"dans le menu"Objets"de la fentre 22 de la figure 2.<br/>
<br/> Le procédé va maintenant tre illustré de la façon qu'il se présente au concepteur C par l'intermédiaire de l'outil 20.<br/> <br/>
<br/>
La boîte 23 illustrée contient, pour la saisie des données,<br/> -un champ de texte"Nom de la classe"<br/> -un champ de texte"Identification de la classe (Class Id)"<br/> -une zone de texte"Description de la classe"<br/> -une liste"Méthodes de la classe"et<br/> -une liste"Attributs de la classe" <br/> La boîte 23 contient aussi les six boutons de commande encadrés en trait épais :<br/> -"Modifier la méthode"<br/> -"Supprimer la méthode"<br/> -"Ajouter une méthode"<br/> -"Modifier l'attribut"<br/> -"Supprimer l'attribut"et<br/> -"Ajouter un attribut".<br/>
<br/>
<br/> La classe générique globale de 1'exemple illustré dans la figure 3 a plusieurs attributs.<br/> <br/>
<br/>
Le second attribut est une identification de la classe, formée par une chaîne de caractères permettant d'identifier de façon unique la classe ou l'objet dans le système. Cet attribut s'écrit en remplissant le champ "Identification de la classe"dans la boîte 23, par exemple in indiquant la date, 1'heure de création, un nombre aléatoire formant un ticket, etc.<br/>
<br/>
<br/>
Le quatrième attribut est un tableau nommé"Attributs", qui référence les attributs de la classe. Les attributs de la classe sont eux-mmes des instances d'une classe générique d'attributs, dite"GenericAttribute", qui a comme attributs :<br/> -le nom de l'attribut,<br/> -la description de l'attribut,<br/> -soit le type de l'attribut, soit les valeurs possibles de l'attribut,<br/> -la valeur par défaut de l'attribut, donnée à la création de la<br/> classe"GenericAttribute", et<br/> -la valeur réelle de l'attribut, qui est invisible au concepteur C et<br/> qui n'est donc pas définie à la création de la classe. Elle est<br/> définie par l'utilisateur U de la façon décrite ultérieurement.<br/>
<br/>
Par exemple, la classe"Attributs i" est une instance de "GenericAttribute"et référence le ième attribut de la classe définie par le concepteur C.<br/> La figure 4 illustre une boîte de dialogue 24 de l'outil 20 constitutif du quatrième attribut de"GenericClass". Cette boîte s'ouvre à partir de la boîte 23, par exemple en nommant"Classel"la classe issue par instanciation de la classe générique globale"GenericClass"et en activant le bouton"Ajouter un attribut". La boîte 24 contient :<br/> -un champ de texte"Nom de l'attribut",<br/> -une zone de texte"Description de l'attribut",<br/> -un champ de texte"Type de l'attribut",<br/> -une zone de texte pour"Valeurs possibles de l'attribut",<br/> -un champ de texte"Valeur par défaut de l'attribut", et<br/> -un champ de texte"Valeur réelle de l'attribut"représenté en grisé sur la figure 4 pour indiquer qu'il n'est pas visible par le concepteur C.<br/>
<br/>
De mme, pour modifier un attribut, il suffit de sélectionner l'attribut dans la liste des attributs de la figure 3 et d'activer le bouton "Modifier l'attribut", de façon à avoir la boîte de dialogue 24 de la figure 4 et à modifier les données qui apparaissent dans la boîte 24. <br/>
<br/>
En tant que premier attribut, on donne à l'attribut le nom "Attributl"et on remplit les autres champs. La validation de la boite de dialogue 24 se traduit par la création d'une instance de la classe générique "GenericAttribute". Le nom"Attributl"va figurer dans la liste des attributs de la figure 3, comme indiqué.<br/>
<br/>
Le cinquième attribut de la classe générique"GenericClass"est un tableau nommé"Méthodes", qui référence les méthodes de la classe. Ces méthodes sont aussi, dans 1'exemple illustré, des instances d'une classe générique de méthodes dite"GenericMethod". Une méthode est définie par les attributs suivants :<br/> -son nom,<br/> -sa description,<br/> -son type de retour,<br/> -ses paramètres, et<br/> -son script d'exécution.<br/>
<br/>
La figure 5 illustre une boîte de dialogue 25 de l'outil 20 constitutif du cinquième attribut de"GenericClass". Cette boite s'ouvre à partir de la boîte 23, par exemple en activant le bouton"Ajouter une méthode". La boîte 25 contient :<br/> -un champ de texte"Nom de la méthode",<br/> -une zone de texte"Description de la méthode",<br/> -un champ de texte"Type de retour de la méthode",<br/> -une liste de"Paramètres de la méthode",<br/> -un bouton de commande"Ajouter",<br/> -un bouton de commande"Modifier", et<br/> -un bouton de commande"Supprimer".<br/>
<br/>
En tant que première méthode, on donne un nom à la méthode, par exemple"Méthodel", et on remplit les autres champs. La validation de la boîte de dialogue 25 se traduit par la création d'une instance de la classe générique"GenericMethod". Le nom"Méthodel"va figurer dans la liste des méthodes de la figure 3, comme indiqué.<br/>
<br/>
La classe générique"GenericMethod"contient, en plus des attributs de la méthode, un tableau"Paramètres", qui référence les paramètres de la méthode. Le tableau peut tre vide si la classe générique ne contient pas de paramètre à déterminer, ou peut ne pas exister si cette classe générique n'est destinée à n'avoir aucun paramètre déterminable ou si elle n'a que des paramètres fixes ou prédéterminés. Dans le tableau, les paramètres sont eux aussi des instances d'une classe générique"GenericParameter". Un paramètre d'une méthode est défini par ses attributs suivants :<br/> -son nom,<br/> -sa description,<br/> -soit son type, soit ses valeurs possibles,<br/> -sa valeur par défaut, et<br/> -sa valeur réelle, non visible du concepteur C.<br/>
<br/>
Par exemple, si le paramètre se rapporte au nombre de pages à imprimer, la valeur par défaut sera 1 mais l'utilisateur U pourra indiquer une valeur réelle autre, par exemple 3 pour avoir trois exemplaires des pages à imprimer.<br/>
<br/>
La figure 6 illustre une boite de dialogue 26 de l'outil 20 pour remplir la table de paramètres de"GenericMethod"dans la figure 5. La boîte 26 s'ouvre à partir de la boîte 25, en activant le bouton"Ajouter". La boîte 26 contient :<br/> -un champ de texte"Nom du paramètre",<br/> -une zone de texte"Description du paramètre",<br/> -un champ de texte"Type du paramètre",<br/> -une zone de texte"Valeurs possibles du paramètre",<br/> -un champ de texte"Valeur par défaut du paramètre", et <br/> -un champ de texte"Valeur réelle du paramètre"représenté en<br/> grisé sur la figure 5 pour indiquer que ce champ n'est pas visible<br/> du concepteur C.<br/>
<br/>
En tant que premier paramètre, on lui donne par exemple le nom "Paraml"et on remplit les autres champs. La validation de la boîte de dialogue 26 se traduit par la création d'une instance de la classe générique "GenericParameter". Le nom"Paraml"va figurer dans la liste des paramètres de la figure 5.<br/>
<br/>
<br/>
La figure 7 illustre la structure en arbre 27a de la classe "Classe 1"résultant de la validation de la boîte 23. Dans la figure 7, la classe "Classe 1"est une instance de la classe générique globale"GenericClass"et a un attribut"Attributl"et une méthode"Méthodel"ayant elle-mme un paramètre"Paraml", qui sont tous les trois des instances de trois classes génériques respectives. Bien sûr, une autre classe, instance de la classe générique globale"GenericClass", pourrait avoir plusieurs instances de chacune des trois classes génériques"GenericAttribute","GenericMethod"et "GenericParameter". Cette structure en arbre permet de dynamiquement modifier, ajouter et supprimer à tout moment des membres de la classe (attributs ou méthodes).<br/>
<br/>
On sait qu'un objet est une instance d'une classe. L'activation de la commande"Nouvel objet de classe"dans le menu"Objets"de la fentre 21 de la figure 2 affiche sur la console 17 du concepteur C une boîte de dialogue (non illustrée) qui contient la liste de toutes les classes déjà définies. Le concepteur C peut en sélectionner une, qui sera la classe du nouvel objet. <br/>
<br/> Dans un objet on donne éventuellement des valeurs aux attributs. Ces valeurs représenteront son identité et son état.<br/> <br/>
En outre, dans la classe générique globale"GenericClass"telle qu'elle apparaît de la figure 3 a de préférence un attribut supplémentaire consistant en un booléen"0"ou"1"indiquant si l'instance de la classe générique en cours représente une classe ou un objet. Dans 1'exemple illustré, le booléen est"1"pour indiquer que le concepteur crée une classe. Le booléen se met automatiquement à la valeur correspondante en réponse à la commande"Nouvelle classe"ou"Nouvel objet de classe"qui a été actionnée par le concepteur C dans la fentre 22 de la figure 2. Dans 1'exemple choisi, cet attribut n'est pas visible du concepteur C et est donc représenté en grisé.<br/>
<br/>
D'autre part, dans la fentre 21 de la figure 2, le menu "Rechercher"est très utile au concepteur C pour faire une recherche puissante dans la base 15 pour y trouver des classes et des objets créés selon une liste de critères qu'il définit. Le concepteur C peut, par exemple, créer une nouvelle classe par héritage à partir de la classe qu'il a trouvée, au lieu de partir de zéro et refaire un travail déjà accompli.<br/>
<br/>
Plus généralement, les boîtes de dialogue 23-26 servent donc au concepteur pour générer respectivement la classe générique globale et les classes génériques qui peuvent la composer. Bien que les boîtes de dialogue illustrées définissent complètement ces classes, tous les attributs, les types, les champs et zones de texte illustrés ne sont pas nécessaires. En particulier, les descriptions sont illustrées à une fin autre que le procédé de génération automatique de classes qui vient d'tre décrit.<br/>
<br/>
<br/>
L'héritage avec la commande"Nouvelle classe héritée", l'instanciation avec la commande"Nouvel objet de classe"et le clonage avec la commande"Cloner un objet"nécessitent en commun la création dynamique d'une copie de la classe (pour l'héritage ou l'instanciation) ou d'une copie de l'objet (pour le clonage).<br/>
<br/>
La figure 7 illustre aussi un arbre 27b d'une classe"ClasseDl" obtenue par duplication de"Classel". Cette figure illustre, d'une manière générale, que la duplication de l'instance de"GenericClass"ne suffit pas, car la classe dupliquée"ClasseDl"va pointer aux mmes instances "GenericMethod"et"GenericAttribute"de l'instance"Classel"de "GenericClass". Par exemple, il ressort de la figure 7 que"Attributl"est commun aux deux classes, alors que les deux classes devraient tre distinctes et indépendantes. Par conséquent, pour dériver une classe ou un objet, c'est-àdire pour créer par héritage une nouvelle classe, pour instancier une classe ou pour cloner un objet, il faut non seulement dupliquer l'instance de "GenericClass", mais aussi dupliquer chaque instance référencée directement ou indirectement par l'instance de"GenericClass".<br/>
<br/>
Java ou C++. La sérialisation permet de stocker tout objet sur un support d'enregistrement de données, un disque par exemple. Si par exemple un premier objet référence des objets, qui eux-mmes référencent d'autres objets et ainsi de suite, il suffit d'écrire le premier objet sur le disque avec la méthode de sérialisation pour stocker automatiquement en mémoire l'arborescence de tous les objets référencés directement ou indirectement par le premier objet.<br/> <br/>
La figure 8 illustre schématiquement le principe du procédé de dérivation d'une classe"Classel"ou d'un objet. L'outil 30 met en oeuvre ce procédé. L'exemple illustré porte sur la création d'une classe"ClasseD2"par héritage de la classe"Classel"telle qu'illustrée dans la figure 7, étant bien entendu que le procédé peut s'appliquer de la mme façon à l'instanciation d'une classe ou le clonage d'un objet. Comme indiqué à la figure 8, le procédé de dérivation consiste en une première étape à sérialiser la classe"Classel" en la copiant sur un disque D, par exemple le disque dur d'une machine 2a ou 2b de 1'ensemble informatique 1 de la figure 1. Ainsi, toute l'arborescence 27a de cette classe, telle qu'illustrée dans la figure 7, va tre dupliquée et stockée dans le disque. La seconde étape consiste à lire la classe dupliquée, stockée dans le disque D, en la chargeant dans l'outil 30, c'est-à-dire dans la mémoire vive sur laquelle est chargé le programme de l'outil. Il en résulte la classe dupliquée"ClasseD2"ayant une arborescence 27c identique à celle de l'arborescence 27a de la classe mère"Classel"mais indépendante de la classe mère. En langage Java par exemple, les deux étapes du procédé peuvent s'exécuter par exemple par les deux instructions suivantes :<br/> FileStream. writeObject (Classel) ;<br/> //pour sérialiser l'arborescence d'origine Classel<br/> Nouvel objet ou Nouvelle classe = FileStream. readObject ()<br/> //pour avoir une copie de Classel<br/> La figure 9 illustre une boîte de dialogue 31 pour l'utilisation de l'outil 30. Cet exemple se rapporte à celui de la figure 9, qui p <br/>
<br/>
La figure 10 illustre un exemple de boite de dialogue 32 résultant de la validation de la boite 31. La boite 32 est semblable à la boite 23 de la figure 3. Par conséquent, seules les différences vont tre indiquées ciaprès. Les données contenues dans la boite 32 sont remplies automatiquement par le logiciel de l'outil 30. Le nom de la classe est celui qui a été indiqué par le concepteur C dans la boîte 31 de la figure 9. La boite 32 contient en plus un tableau indiquant le ou les parents de la classe, ici "Classel"que le concepteur C a sélectionnée dans la liste de la boite 31. Les autres données sont semblables à celles de la boite 23, puisque l'arborescence 27c de la classe fille"ClasseD2"est la mme que l'arborescence 27a de la classe mère"Classel". Grâce aux boutons de commande de la boite 32, il est possible de faire évoluer simplement la nouvelle classe"ClasseD2" indépendamment de la classe mère"Classel".<br/>
<br/>
La classe générique globale"GenericClass"a donc un attribut supplémentaire nommé"parent", qui est un tableau contenant des instances de la classe générique globale, telles que Classel. Le tableau permet de reconnaître la provenance de l'instance en cours de la façon suivante :<br/> (a) Si l'instance en cours est un objet, alors :<br/> -si d'une manière générale"parent 0" (indiqué par<br/> exemple dans le tableau auquel se réfère l'instance en<br/> cours) est un objet, l'objet en cours a été clone à partir<br/> de parent 0,<br/> -si"parent 0" est une classe, l'objet en cours est une<br/> instance de parent 0,<br/> (b) Si l'instance en cours est une classe, alors"parent 0"<br/> est<br/> -soit vide, ce qui veut dire que la classe a été créée<br/> sans héritage avec la commande"Nouvelle classe",<br/> -soit une classe (et non un objet), ce qui veut dire que<br/> la classe en cours a hérité de"parent 0"grâce à la<br/> commande"Nouvelle classe héritée" <br/> (c) Il en résulte, par itération, que le tableau"parent"<br/> indique tous les ascendants de l'instance en cours.<br/>
<br/>
Le procédé ressort clairement des figures 8,9 et 10. En réponse à la première instruction indiquée dans la figure 8,"Classel"est sérialisée en la copiant sur le disque D. En réponse à la seconde instruction, la classe ainsi sérialisée est sauvegardée de nouveau en mémoire, mais avec modifications d'attributs, notamment le nom de classe"ClasseD2"et le tableau"Parent".<br/>
Les deux arborescences 27a et 27c sont donc les mmes, mais elles sont séparées l'une de l'autre. Par exemple, bien qu'elles aient les deux mmes instances"Attributl", en réalité ces deux instances sont complètement distinctes l'une de l'autre en mémoire et peuvent vivre indépendamment l'une de l'autre. Notamment, elles peuvent à tout moment tre modifiées différemment l'une de l'autre. Cet exemple fait aussi ressortir qu'il en est de mme pour les deux autres commandes"Nouvel objet de classe"et"Cloner un objet".<br/> <br/>
Plus généralement, il ressort de la description qui précède que le procédé de dérivation d'une classe d'objets et/ou d'un objet ayant un nom donné consiste à faire une copie de tout l'arbre de la classe ou de l'objet, à mémoriser la copie de l'arbre et à changer ledit nom pour attribuer un nom à la copie mémorisée. On a vu que de préférence la copie est faite par une sérialisation de l'arbre représentatif de ladite classe ou dudit objet en copiant l'arbre dans une mémoire D et la mémorisation de la copie de l'arbre consiste à la copier à nouveau en mémoire 30. En outre, on a vu aussi que la sérialisation, qui peut se faire dans divers langages, est particulièrement simple à mettre en oeuvre en langageJava@. <br/>
<br/>
U. Les classes et objets ainsi créés sont stockés dans la base d'interface 15.<br/> Cependant, ces classes et objets demeurent incompréhensibles et inexploitables pour l'utilisateur U. De préférence, il est d'ailleurs interdit à l'utilisateur U d'y avoir accès, afin d'assurer au concepteur leur intégrité. Le générateur 14 a pour fonction de transformer les classes et objets ainsi créés en des interfaces sous forme de documents dans lesquels les commandes répondant aux besoins exprimés par l'utilisateur U sont compréhensibles par lui. Afin de distinguer ces interfaces des autres interfaces impliquées dans cette description, elles seront appelées interfaces documentaires. Le langage employé dans ces interfaces documentaires peut tre le langage courant et/ou un langage spécialisé de la compétence de l'utilisateur.<br/> <br/>
Le fonctionnement du générateur 14 va ressortir de 1'exemple qui suit, qui reprend et explicite 1'exemple précédent selon lequel 1'entreprise est une agence bancaire, l'utilisateur U est le directeur de l'agence et le concepteur C est un informaticien de la banque. On suppose que le directeur<br/>
U veut : (1) consulter le système d'information de la banque pour faire des requtes dans les bases de données en vue d'obtenir une liste de ses clients d'un type donné, des étudiants dans 1'exemple considéré, et (2) imprimer des lettres personnalisées de plusieurs types, telles que des lettes d'information, des lettres d'invitation et des lettres de rappel. L'informaticien C traduit 1'exploitation désirée par le directeur en deux questions. En l'occurrence, l'informaticien crée en réponse deux classes d'objets :"consultation système" et"impression"au moyen des deux outils 20 et 30. Il peut créer chacune de ces deux classes directement en activant la commande"Nouvelle classe"de la fentre 22 de la figure 2, soit indirectement par dérivation d'une classe semblable. Dans ce dernier cas, le concepteur C pourra actionner la commande"Rechercher"de la fentre 22 pour trouver une classe semblable.<br/> <br/> Si une classe semblable existe, il la sélectionne dans la liste des classes et peut la dériver, par exemple en activant la commande"Nouvelle classe héritée"de la figure 2 et en modifiant, ajoutant ou supprimant des attributs et/ou des méthodes. <br/> <br/>
Le générateur 14 met en oeuvre un procédé de génération d'une interface documentaire pour la commande d'un système informatique par un utilisateur, la commande étant faite à partir d'au moins un objet incluant des descriptions. Le procédé consiste à extraire de l'objet au moins en partie lesdites descriptions et à les organiser pour traduire le sens de ladite commande en un langage compréhensible à l'utilisateur et ainsi faire de ladite interface une interface documentaire. Le générateur 14 comprend donc un bloc d'extraction 14a et un bloc de génération 14b. Le bloc d'extraction 14a prélève de la base d'interface 15 l'objet sélectionné par le concepteur et y extrait les descriptions. Le bloc de génération 14b organise les descriptions pour former l'interface documentaire et la stocker dans la base d'interface 15.<br/>
<br/>
Le procédé va tre mieux compris à partir de 1'exemple précédent. Parmi les attributs de la classe"consultationsystème"de 1'exemple considéré se trouvent des méthodes qui font appel à des commandes spécifiques pour 1'exploitation des données du système, en l'occurrence aux bases de données du système 10. Parmi ces méthodes, le concepteur C crée une méthode"listerétudiants"de façon à avoir comme description"Liste de tous étudiants ayant". L'ingénieur attribue à la méthode"listerétudiants"un code de retour de type"liste"ayant comme description"la liste des noms et adresses". Il attribue aussi à cette méthode, au moyen des boîtes de dialogue 25 et 26 illustrées dans les figures 5 et 6, les trois paramètres tels que définis dans le tableau A ci-dessous.<br/>
EMI21.1 <br/> <br/> <br/>
<tb> <SEP> défaut<br/> <tb> "âge <SEP> < ""un <SEP> âge <SEP> inférieur <SEP> à"entier <SEP> 26 <SEP> ans<br/> <tb> "lieu <SEP> d'étude"", <SEP> étudiant <SEP> à"Paris, <SEP> Versailles <SEP> Paris<br/> <tb> "emprunt <SEP> > ""et <SEP> ayant <SEP> fait <SEP> un <SEP> emprunt <SEP> supérieur <SEP> à"entier <SEP> 6000 <SEP> francs<br/> <tb> <br/>
TABLEAU A<br/> En ce qui concerne la classe"impression", l'ingénieur C crée une méthode"imprime invitation"de façon a avoir une description telle que "Impression de lettres à : ", et attribue à cette méthode un code de retour du type"void"signifiant que la méthode ne retourne pas de valeur, et deux paramètres tels que définis dans le tableau B ci-dessous.<br/>
EMI22.1 <br/> <br/> <br/>
<tb> "destinataire""Impression <SEP> de <SEP> liste <SEP> lister~étudiants <SEP> de<br/> <tb> <SEP> lettresà"consultation~système<br/> <tb> "type <SEP> de <SEP> lettre""type <SEP> de <SEP> lettre <SEP> invitation <SEP> d'anniversaire <SEP> information<br/> <tb> <SEP> rappel<br/> <tb> <SEP> information <SEP> sur <SEP> 1'emprunt <SEP> Étude<br/> <tb> <br/>
TABLEAU B<br/> Ces tableaux indiquent comment remplir les boites de dialogue 25 et 26 des figures 5 et 6 pour constituer les deux classes "consultation~système"et"impression"à l'aide de la boite de dialogue 23 de la figure 3. Plus généralement, l'interface documentaire d'un objet est créée à partir des descriptions correspondant à cet objet, ses attributs, ses méthodes et les paramètres des méthodes.<br/>
<br/>
Pour former une interface documentaire, le concepteur active dans la fentre 22 de la figure 2 le menu"Exporter à U". Cette commande appelle le générateur 14 pour générer une interface documentaire de l'objet sélectionné. Le générateur 14 extrait les descriptions de l'objet et les organise pour former l'interface documentaire. <br/>
<br/>
La figure 11 illustre l'interface documentaire 18a de la méthode "listerétudiants". On y voit que l'interface documentaire 18a a été obtenue par extraction des descriptions de la méthode et de ses paramètres, telles que définies dans le tableau A. En particulier, les valeurs"26 ans","Paris"et "6000 francs"sont les valeurs par défaut indiquées au tableau A. De manière générale, une interface documentaire 18 comprend du texte et au moins un champ possible 19 dont le contenu initial est fait de valeurs par défaut et peut tre modifié par l'utilisateur U.<br/>
<br/>
La figure 12 illustre un exemple d'interface documentaire 18b de la méthode"imprime~invitation"de la classe"imprimer"définie précédemment. Les exemples des figures 11 et 12 suffisent à l'homme du métier pour savoir comment construire une interface documentaire relative à tout un objet. D'une manière générale, lorsque l'objet contient toutes les descriptions, elles sont de préférence organisées par le générateur 14 dans l'ordre suivant :<br/>
la description de l'objet (non illustrée), par exemple "impression" ;<br/>
la description de chaque attribut (non illustrée), par exemple le numéro de l'imprimante, la qualité d'impression, la couleur de l'encre, le papier d'impression ; cette description est suivie d'un champ qui correspond à sa valeur ; si l'attribut a un nombre limité de valeurs, ce champ est une liste contenant toutes les valeurs possibles et ne faisant apparaître que la valeur sélectionnée ;<br/>
la description de chaque méthode (voir tableaux A et B, figures 11 et 12 et le texte s'y rapportant), cette description étant attachée et de préférence suivie de :<br/>
3.1. la description de sa valeur de retour, attachée ou<br/> suivie d'un champ qui représente cette valeur, et<br/> 3.2. la description de chacun de ses paramètres, attachée<br/> ou suivie d'un champ (19) représentatif de la valeur du<br/> paramètre ; <br/>
un moyen de commande (voir figure 12) indiquant quand la méthode doit tre exécutée, l'exécution pouvant tre immédiate ou différée, soit à un moment déterminé par une date et une heure, soit intervenir à la suite d'une autre méthode définie.<br/>
<br/>
4.1. Dans le premier cas, un bouton de commande est libellé "Exécution immédiate";<br/> 4.2. Dans le second cas, un bouton de commande inclut une étiquette de valeur"à" (par exemple,--imprimer"à"--) suivie d'un champ "heure"et d'un champ"date"lié à un calendrier des jours ouvrables de l'année ;<br/> 4.3. Dans le troisième cas, un bouton de commande inclut une étiquette intitulée"après la fin d'exécution de"suivie d'un champ permettant de choisir une méthode d'un objet quelconque et signifie que la méthode sera exécutée après la fin d'exécution de la méthode sélectionnée.<br/>
<br/>
Le concepteur C a la possibilité de changer la présentation de la page, ajouter ou enlever des champs, sélectionner les descriptions à prendre en compte, et modifier le texte de descriptions et des types pour rendre la compréhension du document plus facile. Il s'ensuit qu'un mme objet peut générer plusieurs interfaces documentaires adaptées à des besoins particuliers offerts dans l'objet. Par exemple, on a vu précédemment que l'objet"impression"peut avoir un grand nombre d'attributs et de méthodes, qui offre un grand choix d'interfaces documentaires en fonction des attributs et méthodes adaptées aux besoins. Il est bien sûr conseillé au concepteur C de faire les interfaces documentaires 18 avec l'aide de l'utilisateur U.<br/>
<br/>
La description va maintenant porter sur le module de commande 12 servant à l'utilisateur U pour obtenir les interfaces documentaires 18 de la base 15. Le module 12 contient un bloc 40 de génération de documents 41 issus des interfaces documentaires stockés dans la base 15. Le bloc 40 et donc connecté à la base 15 pour y prélever les interfaces documentaires 18 et déterminer les documents de commande 41 adaptés aux besoins particuliers de l'utilisateur U. Par exemple, en supposant que l'utilisateur a besoin du document"impression", une interface incluant la méthode illustrée dans la figure 12 va se présenter à l'utilisateur, qui pourra modifier les valeurs des champs 19 et sélectionner les boutons de commande d'exécution pour en faire un document 41. Le document 41 illustré dans la figure 12 correspond à l'interface documentaire 18 dans laquelle les valeurs des champs 19 ont maintenues inchangées par l'utilisateur et le bouton d'exécution différée à une heure prédéterminée a été activé (en grisé dans la figure 12).<br/>
<br/>
La figure 13 illustre un exemple de boîte de dialogue 42 présentée à l'utilisateur U par le module d'utilisateur 12. La barre de menus de la boite 42 contient notamment deux menus principaux"Documents"et "Politiques". Dans le menu"Documents"se trouvent la commande "Rechercher"pour trouver des interfaces documentaires, par exemple à partir des descriptions des objets correspondants, et la commande"Ouvrir"pour lister les interfaces documentaires par le nom de leurs objets correspondants et y sélectionner un nom d'objet. Un objet sélectionné s'affiche avec la description de l'objet. De cette interface, l'utilisateur en fait le document désiré. Dans le menu"Documents"se trouvent aussi bien sûr les commandes de sauvegarde (Enregistrer et Enregistrer sous...) et de fermeture du document.<br/>
<br/>
Le menu"Politiques"contient notamment deux commandes "Afficher"et"Afficher l'historique". La commande"Afficher" (display) affiche 1'ensemble des documents créés par l'utilisateur dans l'ordre d'exécution des commandes qu'il a choisi. Cet ensemble définit la politique de l'utilisateur. Il dispose ainsi d'une vue globale des méthodes qu'il a activées à partir de plusieurs documents. Il peut la valider ou la modifier. Par exemple, le fait de cliquer deux fois sur une méthode choisie entraine l'ouverture du document correspondant pour d'éventuelles modifications. La commande"Afficher 1'historique"présente toutes les méthodes qui ont été exécutées par l'utilisateur, l'état de fin d'exécution, et l'heure. Le menu contient aussi les commandes de sauvegarde et de fermeture.<br/>
<br/>
De manière générale, la description qui précède fait ressortir un procédé de génération d'une interface 18 pour la commande d'un système informatique 10 par un utilisateur U, la commande étant faite à partir d'au moins un objet incluant des descriptions de l'objet et/ou d'au moins un membre de l'objet, le procédé consistant à extraire de l'objet au moins en partie lesdites descriptions et à les organiser pour traduire le sens de ladite commande en un langage compréhensible à l'utilisateur et ainsi faire de ladite interface une interface documentaire.<br/>
<br/>
L'outil permet au concepteur C de facilement adapter le texte des descriptions extraites, de façon que leur organisation rende compréhensible le texte de l'interface. Pour rendre plus souple le procédé, le concepteur pourrait sélectionner les descriptions à extraire.<br/>
<br/>
De préférence, les descriptions incluant au moins une description d'une méthode de l'objet, le procédé consiste à attacher à cette description une description de son code de retour et/ou une description d'au moins un paramètre respectif de la méthode et une valeur 19 du paramètre dont la valeur peut tre modifiable. Dans ce cas également et comme dans 1'exemple illustré, le procédé peut consister avantageusement à ajouter à l'interface 18 un moyen de commande, par l'utilisateur, du moment d'exécution de ladite interface.<br/>
<br/>
Dans 1'exemple décrit, le texte des descriptions servant à faire l'interface est fait par un concepteur utilisant le système, en réponse à des besoins qui lui sont soumis par l'utilisateur. Cette coopération entre le concepteur et l'utilisateur rend le procédé très souple, très évolutif et très performant. Cependant, il est évident que cette condition n'est pas nécessaire, l'outil étant par exemple adapté à un métier donné ou une fonction d'entreprise donnée.<br/>
<br/>
Enfin, on a vu précédemment l'avantage que pouvait tirer l'utilisateur de la possibilité offerte dans 1'exemple décrit de sélectionner des interfaces et de définir leur ordre d'exécution temporel, et de lui présenter dans une fentre les interfaces sélectionnées et disposées dans ledit ordre.<br/>
<br/>
)]]
|