FR 2658334 A1 19910816 FR 9101378 A 19910207 i La présente invention concerne en général l'ingénierie des logiciels et plus particulièrement un outil de programmation pour adapter automatiquement un programme d'ordinateur conçu pour un environnement d'exploitation afin qu'il fonctionne dans un autre environnement d' exploitation. Les ordinateurs sont utilisés pour un nombre croissant de buts par un nombre croissant de personnes. Jusque récemment, un utilisateur ne pouvait interagir avec un ordinateur qu'aux moyens d'ordres tapés au clavier et de codes qui sont relativement difficiles à apprendre et à utiliser Pour faciliter l'utilisation des ordinateurs, divers types de dispositifs de sortie non verbaux, comme des affichages graphiques et des affichages visuels par image, ainsi que des dispositifs d'entrée comme la souris de l'ordinateur ont été développés et sont maintenant d'une utilisation largement répandue. Une autre limitation était l'incapacité de beaucoup des petits ordinateurs les plus appréciés à effectuer plus d'un programme d'application à la fois. Même de nombreux ordinateurs qui pouvaient exécuter plusieurs programmes à la fois n'étaient susceptible de réaliser une interface avec l'utilisateur que pour un programme à la fois On est en train de remédier à ces limitations par des systèmes d'exploitation qui supportent une exécution simultanée de plusieurs programmes et par des moyens de sortie améliorés comme des affichages visuels qui sont divisés en plusieurs zones ou "fenêtres" dont chacune permet à l'utilisateur de communiquer avec un programme différent. Ces divers développements ont été améliorés et combinés l'un avec l'autre pour former des environnements d'exploitation d'ordinateur qui sont caractérisés, par exemple, comme "conviviaux" Un exemple d'un tel environnement est le "Microsoft Windows" commercialisé par Microsoft Corp Aussi bien les ordinateurs qui présentent de tels environnements d'exploitation que les programmes d'application qui sont compatibles avec eux sont beaucoup plus faciles à utiliser que d'autres ordinateurs, en particulier pour des utilisateurs qui ne sont pas formés techniquement. Au fur et à mesure que ces nouveaux environnements d'exploitation sont de plus en plus appréciés, il est apparu une demande pour des programmes d'application compatibles Cette demande peut être satisfaite, par exemple, en adaptant des programmes d'application existants pour qu'ils fonctionnent dans les nouveaux environnements ou en écrivant des nouveaux programmes à partir de rien Même de nouveaux programmes comprennent habituellement divers modules, sous-programmes, segments de code et similaires qui ont été utilisés auparavant et ceux-ci doivent être adaptés pour pouvoir fonctionner dans l'environnement pour lequel le nouveau programme est en cours d'écriture De plus, lorsque l'on écrit un nouveau programme d'application, il est souvent plus facile, en premier lieu, d'écrire le programme sans s'occuper de l'environnement d'exploitation et d'ajouter ensuite une interface et d'autres particularités nécessaires pour adapter le programme à l'environnement dans lequel il sera utilisé Par conséquent, une grande partie de l'effort de réalisation de programmes d'application, soit nouveaux, soit existants, pour qu'ils fonctionnent dans de nouveaux environnements implique une adaptation d'un code existant. Quelle que soit la façon dont ils ont été créés, des programmes d'application à mettre en oeuvre dans les nouveaux environnements tendent à présenter un code très compliqué La complexité du code augmente avec les particularités offertes par l'environnement On trouve, par exemple, un code particulièrement compliqué et volumineux dans des programmes d'ordinateur à mettre en oeuvre dans l'environnement "New Wave" de Hewlett- Packard, un environnement comportant de nombreuses particularités qui rendent particulièrement faciles à utiliser aussi bien le système d'ordinateur que les programmes d'application Ainsi, bien que les programmes qui fonctionnent dans de tels environnements sont beaucoup plus faciles à utiliser que d'autres programmes, ils sont beaucoup plus difficiles à écrire. Un ingénieur de logiciels qui est confronté avec la tâche d'adapter ou de créer un programme d'application pour qu'il fonctionne dans un environnement comme New Wave doit, soit modifier un code qui a déjà été écrit pour un environnement différent, une tâche qui inclut inévitablement la création d'une quantité importante de code nouveau, soit créer entièrement un nouveau code à partir de rien Les deux tâches exigent une connaissance détaillée des fonctionnements internes de l'environnement cible et représentent une énorme quantité de travail Par conséquent, les temps de développement de programmes tendent à être longs et les produits résultants onéreux. Il ressortira de ce qui précède qu'il existe un besoin pour un mode efficace et économique d'adaptation des programmes d'application pour qu'ils fonctionnent dans de nouveaux environnements d'ordinateurs. La présente invention propose un système et un procédé destinés à adapter un programme d'ordinateur qui exécute une tâche définie dans un premier environnement d'exploitation afin qu'il exécute la tâche dans un deuxième environnement d'exploitation. Selon un premier aspect, l'invention propose un tel système qui comprend: des moyens d'entrée pour recevoir un code d'entrée qui peut être mis en oeuvre comme programme d'ordinateur qui exécute une tâche définie dans un premier environnement d'exploitation; plusieurs fragments de code de fonction qui peuvent chacun être mis en oeuvre pour fournir une capacité fonctionnelle souhaitée; et des moyens de sélection sensibles à des ordres externes pour sélectionner des fragments de code souhaités, à partir du code d'entrée et à partir des fragments du code de fonction, et pour relier entre eux les fragments sélectionnés de code pour constituer un code de sortie pouvant être mis en oeuvre comme programme d'ordinateur qui exécute la tâche définie dans un deuxième environnement d'exploitation et qui inclut toutes les capacités fonctionnelles fournies par les fragments sélectionnés de code de fonction. Les moyens de sélection peuventcomprendre: plusieurs fragments de code d'exploration; des moyens pour sélectionner un fragment de code d'exploration; et des moyens d'exploration agissant pour explorer le code d'entrée pour localiser toute partie du code d'entrée qui est semblable au fragment sélectionné de code d'exploration, cesmoyensd'exploration pouvant comprendre un premier tampon pour recevoir le code d'entrée et un deuxième tampon pour recevoir un fragment de code d'exploration Ce deuxième tampon peut contenir plusieurs fragments de code d'exploration et les moyens d'exploitation peuvent être actifs pour localiser toute partie du code d'entrée qui est semblable à un fragment quelconque d'exploration dans le tampon. De façon avantageuse, le système peut comprendre en outre des moyens de suppression-et-insertion sensibles aux moyens de sélection pour copier un fragment du code d'entrée dans un emplacement souhaité du code de sortie. De préférence, le système comprend, en outre, des moyens d'insertion de texte sensibles aux moyens de sélection pour insérer une chaîne de texte dans un emplacement souhaité du code de sortie. Le système peut encore comprendre, de plus, des moyens à fichier temporaire pour recevoir le code de sortie et fournir aux moyens de sélection, en vue d'un traitement, le code reçu au lieu du code d'entrée. Selon un deuxième aspect, un système conforme à. l'invention comprend: des moyens à ordinateur comprenant une interface d'utilisateur et des moyens de mémorisation de données, des moyens d'entrée pour recevoir le code d'entrée qui peut être mis en oeuvre comme programme d'ordinateur qui exécute une tâche définie dans un premier environnement d'opération; plusieurs fragments de code de fonction dans les moyens de mémorisation, chacun de ces fragments pouvant être mis en oeuvre pour fournir une capacité fonctionnelle souhaitée; et des moyens de sélection sensibles à des ordres extérieurs, reçus d'un utilisateur par l'intermédiaire de l'interface d'utilisateur, pour sélectionner des fragments souhaités de code, à partir du code d'entrée et à partir des fragments du code de fonction, et pour relier entre eux les fragments sélectionnés de code pour constituer un code de sortie pouvant être mis en oeuvre comme programme d'ordinateur -25 qui exécute la tâche définie dans un deuxième environnement d'exploitation et qui comprend toutes les capacités fonctionnelles fournies par les fragments sélectionnés de code de fonction. De façon avantageuse, les moyens de sélection comprennent plusieurs fragments de code d'exploration dans le moyens de mémorisation; des moyens pour sélectionner un fragment de code d'exploration; et des moyens d'exploration agissant pour explorer le code d'entrée pour localiser toute partie du code d'entrée qui est semblable au fragment sélectionné de code d' exploration. De préférence, ce système comprend en outre des moyens pour mémoriser le code de sortie dans les moyens de mémorisation et pour fournir aux moyens de sélection, en vue d'un traitement, le code de sortie mémorisé au lieu du code d'entrée. Selon un troisième aspect, le système conforme à l'invention comprend des moyens d'entrée pour recevoir un programme d'ordinateur configuré pour opérer dans un premier environnement d'interface; plusieurs fragments de code de fonction pouvant être mis en oeuvre chacun pour fournir une particularité d'interface; et des moyens de sélection pour sélectionner des fragments de code, à partir du programme d'ordinateur et à partir des fragments de code de fonction, et pour relier entre eux les fragments sélectionnés de code pour constituer un programme d'ordinateur qui est configuré pour opérer dans un deuxième environnement d'interface et qui comprend toutes les particularités d'interface fournies par les fragments sélectionnés de code de fonction. De façon avantageuse, le système comprend en outre des moyens pour fournir à un utilisateur des échantillons de particularités d'interface disponibles dans le deuxième environnement d'interface et pour recevoir des ordres d'un utilisateur indicatifs de toutes particularités que l'utilisateur souhaite inclure dans le programme re-configuré, les moyens de sélection étant sensibles à ces ordres pour sélectionner des fragments de code qui fourniront les particularités souhaitées De préférence, le système comprend alors, en outre, des moyens pour recevoir une chaîne de texte fournie par l'utilisateur, en vue d'une inclusion dans une particularité d'interface, et des moyens d'insertion de texte pour insérer la chaîne de texte dans le programme d'ordinateur re-con- figuré en même temps que tout fragment de code de fonction nécessaire pour amener la chaîne de texte à être incluse dans la particularité d'interface. Selon un quatrième aspect, l'invention inclut un procédé d'adaptation d'un programme d'ordinateur qui exécute une tâche définie dans un premier environnement d' exploitation pour exécuter la tâche dans un deuxième environnement d'exploitation, le procédé comprenant les étapes consistant à: sélectionner, dans un programme d'ordinateur qui effectue une tâche définie dans un premier environnement d'exploitation, des fragments de code d'entrée nécessaires pour effectuer la tâche dans un deuxième environnement d'exploitation; sélectionner, parmi plusieurs fragments de code de fonction pouvant chacun être mis en oeuvre pour fournir une capacité fonctionnelle, des fragments selon lesquels des capacités sont souhaitées; et relier entre eux les fragments sélectionnés de code pour constituer un programme d'ordinateur qui effectue la tâche dans le deuxième environnement d'exploitation et qui comprend les capacités fonctionnelles souhaitées. De façon avantageuse, ce procédé comprend en outre l' insertion, dans le programme d'ordinateur, d'une chaîne de texte fournie par l'utilisateur en même temps que de tout fragment de code de fonction nécessaire pour amener la chaîne de texte à être utilisée en liaison avec une capacité fonctionnelle du programme De préférence, dans ce procédé, les capacités fonctionnelles fournies par les fragments de code de fonction comprennent des particularités d'interface qui ne sont pas disponibles dans le premier environnement D'autres aspects et avantages de la présente invention ressortiront de la description détaillée qui suit, prise en liaison avec les dessins annexés, qui représentent à titre d'exemple le principe de l'invention. La Fig 1 est un schéma fonctionnel d'un système selon la présente invention; la Fig 2 est un diagramme d'état du système représenté à la Fig 1; et la Fig 3 est un schéma logique d'un mode de réalisation du système selon la Fig 2. Comme représenté aux dessins dans un but d'illustration, l'invention est incorporée dans un nouvel outil destiné à adapter, d'un environnement d'exploitation àun autre, un programme d'ordinateur Pour fonctionner dans de nouveaux environnements, les procédés existants d'adaptation de programmes d'application exigent, de la part de l'ingénieur de logiciels, la création de quantité importante de code compliqué, nécessitent un temps considérable et sont onéreux. Selon l'invention, un outil de développement de logiciels adapte automatiquement un programme d'ordinateur pour le faire fonctionner dans un nouvel environnement et incorpore dans le programme adapté toutes capacités fonctionnelles souhaitées du nouvel environnement Au moyen de l'invention, un ingénieur de logiciels ou même un utilisateur sans expérience sophistiquée peut adapter rapidement et facilement un programme d'application pour qu'il fonctionne dans un nouvel environnement sans avoir à écrire de codes nouveaux. Comme représenté dans le schéma fonctionnel à la Fig 1, un mode de réalisation préféré de l'invention comprend un système désigné dans son ensemble par 11 destiné à adapter un programme d'ordinateur qui effectue une tâche définie dans un premier environnement d'exploitationpour qu'il effectue la tâche dans un deuxième environnementd'exploitation Un moyen. d'entrée reçoit le programme d'ordinateur à adapter comme indiqué par une flèche 13 Le programme est fourni sous la forme d'un fichier d'entrée 15 qui peut être mémorisé, par exemple, sur un disque souple ou dans une mémoire interne Plusieurs fragments de code de fonction sont disposés dans un fichier de données de base 17 qui peut également être mémorisé sur un disque souple ou dans une mémoire interne Chaque fragment de code de fonction peut être mis en oeuvre pour fournir une capacité fonctionnelle souhaitée dans le deuxième environnement d'exploitation Le système comprend un moyen de sélection pour sélectionner des fragments souhaités de code à partir du fichier d'entrée et à partir des fragments de code de fonction et pour relier entre eux les fragments sélectionnés de code pour fournir un code de sortie, par exemple dans un fichier de sortie 19 Le code de sortie peut être mis en oeuvre comme programme d'ordinateur qui effectue la tâche définie dans le deuxième environnement d'exploitation et qui comprend toutes capacités fonctionnelles fournies par les fragments sélectionnés de code de fonction. "Relier" entre eux les fragments de code implique typiquement l'agencement d'un certain nombre de parties différentes du code d'entrée et d'un certain nombre de fragments de code de fonction dans une séquence appropriée en vue d'une opération dans le deuxième environnement; ceci peut être considéré comme une "fusion" des divers fragments entre eux ou comme une "épissure" de ces fragments l'un après l'autre pour former le code final de sortie. L'invention est particulièrement bien appropriée pour adapter des programmes d'ordinateur pour qu'ils fonctionnent dans de nouveaux environnements d'interface comme l'environnement de fenêtre New Wave de la Hewlett-Packard Company Dans une telle application, un système complet incorporant l'invention inclut de préférence des moyens à ordinateur 21 comportant une interface d'utilisateur 23 comme un écran d'affichage du type tube à rayons cathodiques (ou CRT) 25, un clavier 27, et une souris 29 et des moyens de mémorisation comme une mémoire interne (non représentée) Le moyen de sélection comprend des moyens pour fournir à l'utilisateur des échantillons de particularités d'interface disponibles dans le deuxième environnement d'interface, par exemple en affichant les particularités sur l'écran 25 L'utilisateur choisit celles de ces particularités qui doivent être incorporées dans le programme d'application particulier en cours d'adaptation pour fonctionner dans le deuxième environnement Ces choix sont communiqués, par l'intermédiaire du moyen d'interface, au moyen de sélection, et le moyen de sélection sélectionne les fragments appropriés de code de fonction pour inclure dans le programme adapté les particularités choisies. L'interface d'utilisateur sert aussi de moyen de réception d'une chaîne de texte qui peut être fournie par l'utilisateur en vue d'une inclusion dans une particularité d'interface Par exemple, l'utilisateur peut souhaiter qu'une certaine phrase soit affichée sur l'écran à un point désigné du fonctionnement du programme. Le moyen de sélection comprend des moyens pour insérer dans le programme d'ordinateur, selon la nouvelle configuration, la chaîne de texte telle qu'elle est fournie par l'utilisateur en même temps que tout fragment de code de fonction nécessaire à l'inclusion de la chaîne de texte dans la particularité d'interface. Dans certains cas, le code de sortie peut exiger un traitement complémentaire avant d'être prêt à fonctionner dans le deuxième environnement Par conséquent, un moyen 31 de fichier temporaire reçoit le code de sortie et le renvoie au moyen de sélection en vue d'un deuxième traitement. il Un diagramme d'état représentant le travail interne d'un outil incorporant la présente invention est représenté à la Fig 2 En termes généraux, l'outil utilise un jeu de fragments de code d'exploration indicatifs chacun d'une fonction d'interface dans le premier environnement d'exploitation L'outil explore le code d'entrée pour identifier tout fragment de code d'entrée qui correspond à l'un de ces fragments de code d'exploration Des fragments de code d'entrée qui ne sont pas liés à des fonctions d'interface ne sont pas identifiés pendant l'exploration; ces fragments concernent habituellement d'autres aspects de la tâche à effectuer par le programme d'application et sont transférés à la sortie sans aucune modification Des fragments de code d'entrée qui sont reliés aux fonctions d'interface peuvent être transférés, remplacés, annulés, ou copiés en vue d'une insertion à un ou plusieurs autres emplacements dans la sortie, le tout selon les spécifications du deuxième environnement. Il est clair qu'une partie du code d'entrée peut être utilisée dans le code de sortie "tel quel", en fragments relativement importants ou même en blocs entiers D'autres parties du code d'entrée peuvent être modifiées, une opération qui implique une ou plusieurs des opérations consistant à enlever, insérer, re- agencer, et similaires D'autres parties encore du code d'entrée peuvent simplement être annulées ou être remplacées; par exemple, une partie du code d'entrée qui fournit une certaine capacité fonctionnelle dans le premier environnement d'opération peut être entièrement enlevée et remplacée par un ou plusieurs segments de code de fonction qui fournissent une capacité fonctionnelle semblable ou équivalente dans le deuxième environnement. De façon plus particulière, des spécifications du premier environnement d'exploitation sont utilisées pour sélectionner des fragments de code d'exploration, comme indiqué par un noeud 33 "sélectionner fragments" Les D fragments de code d'exploration sont contenus dans une partie 17 A de la base de données 17 Un ordre d'exploration est engendré comme indiqué par une flèche d'ordre 35 à partir du noeud 33 "sélectionner fragments" vers un noeud 37 "explorer tampons". En réponse à l'ordre d'exploration, un ordre de prélèvement du code d'entrée est engendré comme indiqué par une flèche de commande 39 à partir du noeud 37 "explorer tampons" vers un noeud 41 "obtenir code d'entrée" En réponse à ce dernier ordre, le code d'entrée est prélevé comme indiqué par une flèche de fragment de code 43 s'étendant depuis le fichier d'entrée 15 à travers le noeud 41 "obtenir code d'entrée" vers un premier tampon 45. En réponse également à l'ordre d'exploration, un 2 O ordre de prélèvement d'un fragment de code d'exploration est engendré comme indiqué par une flèche d'ordre 47 à partir du noeud 37 "explorer tampons" vers un noeud 49 "obtenir fragment d'exploration" En réponse à cet ordre, un fragment de code d'exploration est prélevé comme indiqué par une flèche de fragment de code 51 s'étendant depuis la base de données 17 A à travers le noeud 49 "obtenir fragment d'exploration" vers un deuxième tampon 53. L'exploration est effectuée en comparant les contenus des deux tampons 45 et 53 Ces tampons sont de préférence suffisamment importants pour contenir, à la fois, une partie importante du code d'entrée et plusieurs fragments de code d'exploration, ce qui permet une exploration simultanée de plusieurs fragments d'exploration. Des fragments du code d'entrée et des résultats de l'exploration sont renvoyés comme indiqué par des flèches de fragment 55 et 57, s'étendant respectivement depuis le premier et le deuxième tampons 45 et 53 vers le noeud 37 "explorer tampons", et par une flèche de statut d'exploration 59, s'étendant en retour depuis le noeud 37 "explorer tampons" vers le noeud 33 "sélectionner fragments". Des ordres d'exploration peuvent être automatiquement engendrés par le système ou peuvent être fournis par l'utilisateur, comme indiqué par une flèche d'ordre 61 depuis l'interface d'utilisateur 23 vers le noeud 33 "sélectionner fragments". Comme indiqué ci-dessus, certaines parties du code d'entrée sont transférés à la sortie sans être modifiées Ceci est indiqué par une flèche de fragment 63 s'étendant du noeud 37 "explorer tampons" vers un noeud 65 "sortie" En outre, un moyen de suppression- et-insertion est parfois utilisé pour sauvegarder un fragment du code d'entrée en vue d'une insertion ultérieure dans un emplacement souhaité du code de sortie Ceci est indiqué par un noeud 67 "insertion" qui reçoit, du noeud 33 "sélectionner fragments", des ordres d'insertion comme indiqué par une flèche d'ordre 69 En réponse à un ordre d'insertion, un fragment de code d'entrée est sauvegardé dans un tampon d'insertion 71 comme indiqué par une flèche de fragment 73, s'étendant depuis le noeud 37 "explorer tampons" vers le tampon d'insertion 71, et est récupéré depuis le tampon d'insertion 71 à l'instant souhaité comme indiqué par une flèche de fragment 75 s'étendant depuis le tampon 71 à travers le noeud 67 "insertion" vers le noeud 65 "sortie". Typiquement, l'exploration identifie des emplacements du code d'entrée en vue d'une insertion de fragments de code de fonction, soit selon les spécifications du deuxième environnement d'opération, soit selon les choix, décidés par l'utilisateur, de capacités fonctionnelles à inclure dans le programme adapté Ces ordres sont représentés par une flèche d'ordre 77 s'étendant depuis le noeud 33 "sélectionner fragments" vers un noeud 79 "insérer fragment de fonction" En réponse à un tel ordre, un fragment de code de fonction est inclus dans la sortie comme indiqué par une flèche de fragment 81 qui s'étend depuis la base de données 17 B à travers le noeud 79 "insérer fragment de fonction" vers le noeud 65 "sortie". L'utilisateur peut spécifier une chaîne de texte à insérer dans le code de sortie, par exemple une légende à afficher par l'ordinateur en liaison avec une particularité d'interface donnée La chaîne de texte est fournie par l'interface d'utilisateur et le noeud 33 "sélectionner fragments", comme indiqué par une flèche 83 de chaîne de texte s'étendant depuis le noeud 33 "sélectionner fragments" vers un noeud 85 "ajouter chaîne" Ceci provoque la génération d'un fragment de code afin d'inclure la chaîne dans la sortie comme indiqué par une flèche de fragment 87 s'étendant depuis le noeud 85 "ajouter chaîne" vers le noeud 65 "sortie". Un utilisateur n'est pas limité à spécifier une courte chaîne de texte, comme une légende destinée à un affichage visuel La chaîne de texte peut être d'une longueur souhaitée quelconque et le texte peut être un type quelconque d'information que l'ordinateur lui-même peut accepter La chaîne de texte peut comprendre, par exemple, un indicateur vers un fichier contenant un code que l'utilisateur souhaite insérer dans le programme adapté, ou la chaîne de texte elle-même peut être un code, fourni par l'utilisateur, à insérer dans le programme. Si le code d'entrée exige une poursuite du traitement, il est placé dans le fichier temporaire 31 comme indiqué par une flèche de code 89 s'étendant depuis le noeud 65 "sortie" vers le fichier temporaire. Ce code "intermédiaire" du fichier temporaire est ensuite prélevé en vue d'un traitement ultérieur comme indiqué par une flèche de fragment 91 s'étendant depuis le fichier temporaire 31 vers le noeud 41 "obtenir code d'entrée" Des fragments, tant du code original du fichier d'entrée 15 que du code intermédiaire du fichier temporaire 31, peuvent être prélevés selon les besoins. Si le code de sortie est prêt à être utilisé comme programme d'application dans le deuxième environnement d'exploitation, il est placé dans le fichier de sortie 19 comme indiqué par une flèche de code 93 s'étendant depuis le noeud 65 "sortie" vers le fichier de sortie. Il est clair que divers agencements de déroulement de programme peuvent être utilisés pour implanter le système comme décrit ci-dessus Un tel agencement est représenté dans le schéma logique de la Fig 3 A l'origine (début au bloc 101), le code du programme d'ordinateur à adapter est placé dans le fichier d'entrée (bloc de traitement 103) Si une autre action doit être effectuée (bloc de décision 105), un fragment de code est obtenu à partir du fichier d'entrée ou du fichier temporaire selon ce qui est approprié (bloc de traitement 107). Un fragment de code d'entrée (ou temporaire) est "obtenu", par exemple, en explorant selon un ou plusieurs des fragments de code d'exploration comme décrit ci-dessus; le fragment qui est obtenu de cette manière peut être un code qui correspond à un des fragments de code d'exploration ou un code qui ne correspond pas à l'un des fragments de code d'exploration Si le code n'a correspondu à aucun des fragments, il peut avoir été identifié pour destruction, pour insertion dans la sortie, pour remplacement, ou comme fragment à sauvegarder pour une insertion ultérieure ailleurs Si le code ne correspondait pas à l'un quelconque des fragments explorés, le code peut être une partie fonctionnelle du programme d'application qui est nécessaire pour effectuer la tâche du programme dans le deuxième environnement et qui doit donc être transférée à la sortie sans modification. Si le fragment obtenu doit être inclus dans la sortie (bloc de décision 109), il est passé à la sortie (bloc de traitement 111) Si le fragment doit être sauvegardé en vue d'une utilisation ultérieure (bloc de décision 113), il est placé dans le tampon d'insertion (bloc de traitement 115) Si un fragment de fonction doit être inséré (bloc de décision 117), il est "obtenu" à partir de la base de données selon la capacité fonctionnelle souhaitée à inclure dans le programme adapté, comme décrit ci-dessus, et transféré à la sortie (bloc de traitement 119) Si un fragment sauvegardé précédemment doit être inséré (bloc de décision 121), il est obtenu à partir du tampon d'insertion et transféré à la sortie (bloc de traitement 123) Si une chaîne de texte doit être insérée (bloc de décision 125), elle est transférée à la sortie en même temps que tout fragment de code de fonction nécessaire (bloc de traitement 127). Si une autre action doit être effectuée (bloc de décision 105), les étapes ci-dessus sont répétées Dans le cas contraire, si le code de sortie n'est pas en forme finale (bloc de décision 129), il est placé dans le fichier temporaire (bloc de traitement 131) et toute la procédure est répétée Si le code de sortie est en forme finale (bloc de décision 129), il est placé dans le fichier de sortie (bloc de traitement 133) et la procédure se termine (bloc de fin 135). Le traitement ci-dessus peut être brièvement résumé en tant que procédé qui inclut les étapes consistant à sélectionner, à partir d'un programme d'ordinateur qui effectue une tâche définie dans un premier environnement d'exploitation, des fragments de code nécessaires pour effectuer la tâche dans un deuxième environnement d'exploitation; sélectionner, à lu partir de plusieurs fragments de code de fonction pouvant être mis en oeuvre chacun pour réaliser une capacité fonctionnelle, des fragments selon lesquels les capacités sont souhaitées; et relier entre eux les fragments de code sélectionnés pour constituer un programme d'ordinateur qui effectue la tâche dans le deuxième environnement d'exploitation et qui comprend les capacités fonctionnelles souhaitées De plus, le procédé comprend de préférence une insertion, dans le programme d'ordinateur, d'une chaîne de texte fournie par l'utilisateur en même temps que tout fragment de code de fonction nécessaire pour amener la chaîne de texte à être utilisée en liaison avec une capacité fonctionnelle du programme Typiquement, les capacités fonctionnelles fournies par le fragment de code de fonction comprennent des particularités d'interface qui ne sont pas disponibles dans le premier environnement. Dans une application spécifique, l'invention est configurée pour adapter un programme d'ordinateur conçu pour fonctionner dans l'environnement "Windows" de Microsoft en vue d'un fonctionnement dans l'environnement "New Wave" de Hewlett-Packard Un tel programme peut avoir été produit à l'origine, par exemple, au moyen d'un outil d'ingénierie comme l'outil connu comme "Case:W" distribué par Caseworks, un éditeur de logiciels Un programme qui fonctionne dans l'environnement "Windows" inclut typiquement les jeux de fichiers suivants: C H Make DEF RC Ces fichiers sont traités comme fichiers d'entrée selon les enseignements de la présente invention pour fournir les fichiers de sortie qui peuvent être mis en oeuvre dans l'environnement "New Wave": C (modifié) H (modifié) Make (entièrement remplacé par un nouveau fichier) DEF (non modifié) RC (modifié) icon (fichier additionnel optionnel) INS (fichier additionnel optionnel) Divers fichiers sont placés dans le fichier temporaire pendant le traitement et utilisés pour engendrer les versions finales Les fichiers optionnels peuvent être engendrés ou non selon les ordres données par l'utilisateur. On trouvera ci-après un exemple d'un code qui a été "modifié" pendant le processus d'adaptation par élimination et insertion de fragments de code sélectionnés: h Wnd=Create Window(sz App Name, gh Wnd = h Wnd = "demo", NW_Create Window ( sz App Name, WS_OVERLAPPEDWINDOW, "demo", CW_USEDEFAULT, WS_OVERLAPPEDWINDOW, 0, CW_USEDEFAULT, CW_USEDEFAULT, NWCW_STAGGERPOS, O, CW_USEDEFAULT, NULL, 0, NULL, NULL, h Instance, NULL, NULL); h Instance, NULL); BEFORE AFTER On voit, à partir de ce qui précède, que l'invention fournit un outil d'ingénierie de logiciels qui adapte automatiquement un programme d'ordinateur pour fonctionner dans un nouvel environnement sans aucun besoin d'engendrer ou de modifier manuellement un code d'ordinateur L'utilisateur sélectionne toutes particularités souhaitées du nouvel environnement et l'outil insère automatique tout code nécessaire dans le programme pour fournir les particularités souhaitées. Avec cet outil, un ingénieur de logiciels ou même un utilisateur non technicien peut adapter immédiatement des programmes d'un environnement à l'autre selon les besoins. Bien qu'un mode de réalisation spécifique de l'invention ait été décrit et illustré, l'invention ne doit pas être limitée aux formes et agencements spécifiques d'éléments décrits et illustrés de cette manière, et diverses modifications et altérations peuvent être apportées sans s'écarter du cadre et de l'esprit de l'invention Par conséquent, à l'intérieur du cadre des revendications annexées, l'invention peut être mise en oeuvre d'une façon autre que celle qui est décrite et illustrée spécifiquement. REVENDICATIONS 1 Système ( 11) destiné à adapter un programme d'ordinateur qui exécute une tâche définie dans un premier environnement d'exploitation pour exécuter la tâche dans un deuxième environnement d'exploitation, caractérisé en ce qu'il comprend: des moyens d'entrée ( 13) pour recevoir un code d'entrée ( 15) qui peut être mis en oeuvre comme programme d'ordinateur qui exécute une tâche définie dans un premier environnement d'exploitation; plusieurs fragments de code de fonction ( 17) qui peuvent chacun être mis en oeuvre pour fournir une capacité fonctionnelle souhaitée; et des moyens de sélection sensibles à des ordres externes ( 27, 29) pour sélectionner des fragments de code souhaités, à partir du code d'entrée ( 15) et à partir des fragments du code de fonction ( 17), et pour relier entre eux les fragments sélectionnés de code pour constituer un code de sortie ( 19) pouvant être mis en oeuvre comme programme d'ordinateur qui exécute la tâche définie dans un deuxième environnement d'exploitation et qui inclut toutes les capacités fonctionnelles fournies par les fragments sélectionnés de code de fonction ( 17). 2 Système selon la revendication 1 caractérisé en ce queles moyens de sélection ( 21) comprennent: plusieurs fragments de code d'exploration; des moyens pour sélectionner un fragment de code d'exploration; et des moyens d'exploration agissant pour explorer le code d'entrée ( 15) pour localiser toute partie du code d'entrée qui est semblable au fragment sélectionné de code d'exploration. 3 Système selon la revendication 2 caractérisé en ce queles moyens d'exploration comprennent un premier tampon pour recevoir le code d'entrée ( 15) et un deuxième tampon pour recevoir un fragment de code d'exploration. 4 Système selon la revendication 3 caractérisé en ce que le deuxième tampon contient plusieurs fragments de code d'exploration et en ce que les moyens d'exploration sont actifs pour localiser toute partie du code d'entrée ( 15) qui est semblable à un fragment quelconque d'exploration dans le tampon. Système selon la revendication 1 caractérisé en ce qu'il comprend en outre des moyens de suppression-et-insertion sensibles aux moyens de sélection ( 21) pour copier un fragment du code d'entrée ( 15) dans un emplacement souhaité du code de sortie ( 19). 6 Système selon la revendication 1 caractérisé en ce qu'il comprend en outre des moyens d'insertion de texte sensibles aux moyens de sélection ( 21) pour insérer une chaîne de texte dans un emplacement souhaité du code de sortie ( 19). 7 Système selon la revendication 1 caractérisé en ce qu'il comprend de plus des moyens à fichier temporaire ( 31) pour recevoir le code de sortie ( 19) et fournir aux moyens de sélection ( 21), en vue d'un traitement, le code reçu au lieu du code d'entrée ( 15). 8 Système destiné à adapter un programme d'ordinateur qui exécute une tâche définie dans un premier environnement d' exploitation pour exécuter la tâche dans un deuxième environnement d'exploitation, caractérisé en ce qu'il comprend: des moyens àordinateur ( 21) comprenant une interface d'utilisateur ( 23) et des moyens de mémorisation de données, des moyens d'entrée ( 13) pour recevoir le code d'entrée ( 15) qui peut être mis en oeuvre comme programme d'ordinateur qui exécute une tâche définie dans un premier environnement d'opération; plusieurs fragments de code de fonction ( 17) dans les moyens de mémorisation, chacun de ces fragments pouvant être mis en oeuvre pour fournir une capacité fonctionnelle souhaitée; et des moyens de sélection ( 21) sensibles à des ordres extérieurs, reçus d'un utilisateur par l'intermédiaire de l'interface d'utilisateur, pour sélectionner des fragments souhaités de code, à partir du code d'entrée ( 15) et à partir des fragments du code de fonction ( 17), et pour relier entre eux les fragments sélectionnés de code pour constituer un code de sortie ( 19) pouvant être mis en oeuvre comme programme d'ordinateur qui exécute la tâche définie dans un deuxième environnement d'exploitation et qui comprend toutes les capacités fonctionnelles fournies par les fragments sélectionnés de code de fonction ( 17). 9 Système selon la revendication 8 caractérisé en ce que les moyens de sélection ( 21) comprerrent: plusieurs fragments de code d'exploration dans le moyens de mémorisation; des moyens pour sélectionner un fragment de code d'exploration; et des moyens d'exploration agissant pour explorer le code d'entrée ( 15) pour localiser toute partie du code d'entrée ( 15) qui est semblable au fragment sélectionné de code d'exploration. Système selon la revendication 8 caractérisé en ce qu'il comprend en outre des moyens pour mémoriser le code de sortie ( 19) dans les moyens de mémorisation et pour fournir aux moyens de sélection ( 21), en vue d'un traitement, le code de sortie ( 19) mémorisé au lieu du code d'entrée ( 15). 11 Système destiné à re-configurer un programme d'ordinateur depuis un premier environnement d'interface vers un deuxième environnement d'interface, caractérisé en ce qu'il comprend: des moyens d'entrée ( 13) pour recevoir un programme d'ordinateur configuré pour opérer dans un premier environnement d'interface; plusieurs fragments de code de fonction ( 17) pouvant être mis en oeuvre chacun pour fournir une particularité d'interface; et des moyens de sélection ( 21) pour sélectionner des fragments de code, à partir du programme d'ordinateur et à partir des fragments de code de fonction ( 17), et pour relier entre eux les fragments sélectionnés de code pour constituer un programme d'ordinateur qui est configuré pour opérer dans un deuxième environnement d'interface et qui comprend toutes les particularités d'interface fournies par les fragments sélectionnés de code de fonction ( 17). 12 Système selon la revendication 11,caractérisé en ce qu'il comprend en outre des moyens ( 25, 27, 29) pour fournir à un utilisateur des échantillons de particularités d'interface disponibles dans le deuxième environnement d'interface et pour recevoir des ordres d'un utilisateur indicatifs de toutes particularités que l'utilisateur souhaite inclure dans le programme re-configurer, les moyens de sélection ( 21) étant sensibles à ces ordres pour sélectionner des fragments de code qui fourniront les particularités souhaitées. 13 Système selon la revendication 12 caractérisé en ce qu'il comprend en outre des moyens ( 27, 29) pour recevoir une chaîne de texte fournie par l'utilisateur, en vue d'une inclusion dans une particularité d'interface, et des moyens d'insertion de texte pour insérer la chaîne de texte dans le programme d'ordinateur re-configuré en même temps que tout fragment de code de fonction ( 17) nécessaire pour amener la chaîne de texte à être incluse dans la particularité d'interface. 14 Procédé d'adaptation d'un programme d'ordinateur qui exécute une tâche définie dans un premier environnement d' exploitation pour exécuter la tâche dans un deuxième environnement d'exploitation, caractérisé en ce qu'il comprend les étapes consistant à: sélectionner, dans un programme d'ordinateur qui effectue une tâche définie dans un premier environnement d'exploitation, des fragments de code d'entrée ( 15) nécessaires pour effectuer la tâche dans un deuxième environnement d' exploitation; sélectionner, parmi plusieurs fragments de code de fonction ( 17) pouvant chacun être mis en oeuvre pour fournir une capacité fonctionnelle, des fragments selon lesquels des capacités sont souhaitées; et relier entre eux les fragments sélectionnés de code pour constituer un programme d'ordinateur qui effectue la tâche dans le deuxième environnement d'exploitation et qui comprend les capacités fonctionnelles souhaitées. Procédé selon la revendication 14 caractérisé en ce qu'il comprend en outre 1 ' insertion, dans le programme d'ordinateur, d'une chaîne de texte fournie par l'utilisateur en même temps que de tout fragment de code de fonction ( 17) nécessaire pour amener la chaîne de texte à être utilisée en liaison avec une capacité fonctionnelle du programme. 16 Procédé selon la revendication 14 caractérisé en ce que les capacités fonctionnelles fournies par les fragments de code de fonction ( 17) comprennent des particularités d'interface qui ne sont pas disponibles dans le premier environnement.