FR 2661266 A1 19911025 FR 9005068 A 19900420 PROCEDE INTERACTIF DE PRODUCTION DE LOGICIEL EN CODE SOURCE, MODELISANT UN ENSEMBLE COMPLEXE DE MODULES FONCTIONNELS DESCRIPTION La présente invention concerne un procédé interactif de production de logiciel en code source, modélisant un ensemble complexe de modules fonctionnels. Elle s'applique à la simulation et à la con- ception d'ensembles fonctionnels complexes, tels que des systèmes de commande de sécurité dans des centrales nucléaires, des systèmes de commande de machines outils robotisées etc. Elle s'applique avantageusement à la simula- tion et à la conception de modules fonctionnels, tels que des automates ou des circuits logiques complexes de commandes électriques ou automatiques de vol d'un avion. Dans cette application, le procédé de l'inven- tion permet de concevoir graphiquement puis, par une opération automatique de traduction, d'obtenir dans un langage ou code source, le logiciel modélisant les modules fonctionnels des commandes de vol de l'avion. Lorsque ce logiciel a été établi, il est ensuite utilisé dans un simulateur de vol pour tester les commandes de vol électriques ou automatiques simulées dans diffé- rentes conditions de vol En fonction des résultats de ces tests, la conception graphique est modifiée de façon interactive comme on le montrera plus loin en détail Lorsque les résultats des tests sont satis- faisants, après ces modifications, le code source peut être compilé pour obtenir alors un logiciel en code exécutable qui peut alors être enregistré dans la mémoire du calculateur de bord de l'avion, pour com- mander les modules fonctionnels constitués d'automates ou de circuits logiques agissant sur le vol de l'avion. On ne connait pas actuellement de procédé de production de logiciel en code source à partir de planches graphiques, capable de modéliser un ensemble complexe de modules fonctionnels, pouvant être modifié très rapidement de manière interactive en fonction des résultats des tests de simulation de cet ensemble fonctionnel, dans différentes conditions de fonction- nement. On sait seulement modéliser en code source, pour un module fonctionnel, des planches graphiques correspondant aux parties fonctionnelles de ce module. Toutefois, lorsque toutes les planches ont été traduites en code source, la modification de l'une de ces planches, à la suite de tests par exemple, rend actuel- lement nécessaire une nouvelle traduction en code source de la planche modifiée, mais aussi une nouvelle traduction en code source de toutes les autres planches du module Il est ensuite nécessaire de vérifier la cohérence fonctionnelle de chaque planche ainsi retraduite. De façon connue, pour modéliser une partie fonctionnelle d'un module on met en oeuvre, dans un ordinateur relié à des moyens de visualisation, un logiciel d'édition graphique enregistré dans une mémoire reliée à l'ordinateur, pour élaborer, pour des parties fonctionnelles de ce module (des asservissements ou des circuits logiques par exemple), des planches graphi- ques correspondant respectivement à ces parties fonctionnelles Ce S planches sont affichées par des moyens de visualisation et elles sont élaborées à partir d'une bibliothèque de symboles graphiques correspondant à des éléments fonctionnels de chaque planche Cette bibliothèque est enregistrée dans la mémoire de l'ordi- nateur et permet de décrire les asservissements et/ou circuits logiques de chaque planche. Ce logiciel d'édition est par exemple un logiciel "SAFIRS" commercialisé par la société ASSIGRAPH International. Cette édition graphique étant effectuée, on sait aussi mettre en oeuvre dans l'ordinateur un logiciel de précodage, enregistré dans la mémoire de l'ordinateur, pour définir chaque symbole d'une planche par un précode comportant au moins les attributs quali- ficatifs du symbole et les variables d'entrée-sortie de ce symbole Chaque symbole représente en effet un élément fonctionnel ayant au moins une entrée et au moins une sortie Toute variable ou paramètre caracté- ristique d'un signal appliqué en entrée correspond à une variable ou paramètre caractéristique d'un signal recueilli en sortie, en réponse à ce signal d'entrée. Ce précodage est réalisé, de manière connue, à partir d'une bibliothèque de précodes enregistrée dans la mémoire de L'ordinateur Pour chaque planche, un fichier de précodage des symboles de la planche est enregistré dans la mémoire de l'ordinateur, après que ce précodage ait été effectué. Un précodage tel que décrit est par exemple réalisé par un logiciel "SCALP" de la Société AEROSPATIALE, commercialisé par la Société ASSIGRAPH International. Dans l'état actuel de la technique, la modéli- sation d'un module fonctionnel consiste donc seulement à modéliser séparément, sous forme de logiciels exprimés en code source, des planches graphiques correspondant respectivement à des parties fonctionnelles de ce module, sans établir de lien ou de vérification de cohérence entre les logiciels de modélisation de ces différentes planches. Cette absence de lien et de vérification de cohérence est un inconvénient important puisqu'il en résulte qu'il est impossible de disposer rapidement d'un logiciel unique et fiable de modélisation de l'ensemble d'un module. L'invention a précisément pour but de remédier à ces inconvénients en établissant des liens et des vérifications de cohérence entre les logiciels de modé- lisation de différentes planches d'éléments fonctionnels d'un module. L'invention concerne un procédé interactif de production de logiciel en code source, modélisant un des ensembles complexes de modules fonctionnels, consistant pour chaque module: à mettre en oeuvre, dans un ordinateur relié à des moyens de visualisation, un logiciel d'édi- tion graphique enregistré dans une mémoire reliée à l'ordinateur, pour élaborer des planches graphiques décrivant des asservissements et /ou des circuits logi- ques complexes intervenant dans le module, ce logiciel élaborant lesdites planches pour leur affichage par les moyens de visualisation, à partir d'une bibliothèque de symboles graphiques enregistrés dans ladite mémoire et permettant de décrire lesdits asservissements et/ou circuits logiques; à mettre en oeuvre dans l'ordinateur un logiciel de précodage, enregistré dans la mémoire de l'ordinateur, pour définir chaque symbole d'une planche par un précode comportant au moins des attributs du symbole et des variables d'entrée-sortie, à partir d'une bibliothèque de précodes enregistrée dans la mémoire de l'ordinateur, un fichier de précodage étant alors enregistré dans la mémoire de l'ordinateur, pour chaque planche; caractérisé en ce qu'il consiste en outre: à mettre en oeuvre, dans l'ordinateur, un logiciel de contrôle de cohérence entre les symboles de chaque planche, enregistré dans la mémoire de l'ordi- nateur, ce logiciel utilisant un catalogue, enregistré dans la mémoire, pour vérifier pour chaque planche à partir du fichier de précodage la cohérence des attri- buts des symboles et la cohérence des variables d'entrée sortie de ces symboles et pour enregistrer, après vérification et correction éventuelle et pour chaque planche, un fichier relatif aux attributs des symbotes de la planche et un fichier relatif aux variables d'entrée-sortie de cette planche; à mettre en oeuvre, dans l'ordinateur, un logiciel pour contrôler la cohérence de l'enchaîne- ment temporel de l'ordre d'exécution et des conditions d'exécution des planches d'un module, à partir du contenu d'un fichier de précodage décrivant cet enchal- nement, et pour enregistrer un fichier unique de précodage relatif aux planches de cet enchaînement; à enregistrer dans la mémoire de l'ordina- teur, pour chaque module, un dictionnaire de contrôle de mise à jour des planches de ce module, à partir du contenu des fichiers de contrôle de cohérence entre les symboles de chaque planche et de contrôle de cohé- rence d'enchainement temporel d'exécution des planches, ce dictionnaire contenant les attributs des symboles de chaque planche et les variables d'entrée-sortie de chaque planche, et étant mis à jour après toute modification d'un symbole d'une planche; à produire le logiciel en code source, modélisant le module, à partir d'un logiciel de traite- ment des contenus des fichiers de précodage des attributs et des variables des symboles de chaque planche, du fichier unique de précodage, et du contenu du dictionnaire. Selon une autre caractéristique, le procédé consiste à modéliser des ensembles complexes de modules de commandes électriques ou automatiques de vol d'un avion. Les caractéristiques et avantages de l'inven- tion ressortiront mieux de la description qui va suivre, donnée en référence aux dessins annexés dans lesquels: la figure 1 représente schématiquement un système permettant de mettre en oeuvre le procédé de l'invention; la figure 2 représente schématiquement les logiciels, fichiers, dictionnaire et bibliothèque enregistrés dans une mémoire d'un ordinateur du système de la figure précédente, et qui sont mis en oeuvre dans le procédé de l'invention. Le système représenté schématiquement sur la figure 1, et qui permet de mettre en oeuvre le pro- cédé de l'invention, comporte un ordinateur 1, une mémoire 2 reliée à cet ordinateur et des moyens de visualisation 3, tels qu'un terminal à écran L'ordina- teur I est relié à un réseau de communications 4, pour des raisons qui seront expliquées ultérieurement. Le système peut aussi comporter une imprimante 5 permet- tant par exemple d'imprimer des résultats résultant de la mise en oeuvre du procédé. La figure 2 permet de mieux comprendre le procédé de l'invention et représente de manière schéma- tique le contenu de la mémoire 2, lors de la mise en oeuvre du procédé. Le procédé consiste tout d'abord à mettre en oeuvre, dans l'ordinateur 1, un logiciel 6 d'édition graphique, enregistré dans la mémoire 2 Ce logiciel permet d'élaborer des planches graphiques, telles que la planche 7 affichée sur l'écran des moyens de visuali- sation 3 Ces planches, comme indiqué plus haut, décrivent des asservissements et/ou des circuits logi- ques d'un module fonctionnel complexe tel qu'un module de commandes électriques ou automatiques de vol dans un avion. Le logiciel d'édition 6 élabore ces planches, à partir d'une bibliothèque 8 de référence de symboles graphiques enregistrés dans la mémoire 2 Ces symboles permettent de décrire, dans un ensemble de planches, les asservissements et/ou circuits logiques du module. Ce logiciel qui peut être le logiciel "SAFIRS" cité plus haut, ne sera pas décrit ici en détail. Le procédé consiste ensuite à mettre en oeuvre, dans l'ordinateur 1, un logiciel 9 de précodage, enregistré dans la mémoire 2 et permettant de définir chaque symbole d'une planche par un précode A cet effet, la mémoire 2 contient une bibliothèque 10 de précodes Le précode d'un symbole comporte des infor- mations concernant les attributs du symbole (c'est-à-dire la nature de ce symbole) et des infor- mations concernant des variables d'entréesortie, c'est- à-dire des paramètres caractéristiques de signaux d'entrée et de sortie de l'élément fonctionnel qui, dans le module, correspond à ce symbole Un fichier 11 de précodage est alors enregistré pour chaque planche, dans la mémoire 2, pour l'ensemble des symboles de la planche. Le logiciel de précodage, qui peut être par exemple le logiciel "SCALP" cité plus haut, ne sera pas décrit ici en détail. Le procédé de l'invention consiste alors à mettre en oeuvre, dans l'ordinateur 1, un logiciel 12 de contrôle de cohérence, enregistré dans la mémoire 2 Ce logiciel permet de contrôler la cohérence entre les symboles de chaque planche, à partir du contenu du fichier 11 de précodage de la planche correspondante. Le logiciel de contrôle 12 utilise un catalo- gue de références 13, enregistré dans la mémoire 2, pour vérifier à partir du contenu du fichier de préco- dage 11 de chaque planche, la cohérence des attributs des symboles de cette planche et la cohérence des variables d'entrée-sortie des éléments fonctionnels correspondant respectivement à ces symboles Si une incohérence est détectée dans une planche, et qu'elle est créée par un mauvais choix de symbole, celui-ci peut être changé Si c'est une variable d'entrée-sortie de la planche qui crée l'incohérence, celle-ci est alors modifiée Il y a donc interactivité entre la détection d'une incohérence dans une planche et la correction rendue nécessaire par la détection de cette incohérence Il en résulte que chaque planche visualisée peut être corrigée dès qu'une incohérence est détectée, et que le fichier de précodage peut être corrigé lors d'une traduction ultérieure. Le logiciel de contrôle de cohérence interne à chaque planche ne sera pas décrit ici en détail. En effet, différents logiciels capables de réaliser ce type de contrôle peuvent être mis en oeuvre pour parvenir au même résultat. Ce contrôle étant effectué, deux fichiers 14 A, 14 B sont enregistrés pour chaque planche, dans la mémoire 2 Un fichier 14 A est relatif aux attributs des symboles de la planche, pour lesquels la cohérence vient d'être vérifiée, ces symboles ayant été éventuel- lement modifiés de manière interactive à la suite de la détection d'une incohérence Un autre fichier 14 B est relatif aux variables d'entréesortie de la planche elle-même. Le procédé de l'invention consiste ensuite à mettre en oeuvre dans l'ordinateur 1 un logiciel , enregistré dans la mémoire 2, pour contrôler la cohérence de l'enchainement temporel de l'ordre d'exécu- tion et des conditions d'exécution des planches d'un module, à partir du contenu des fichiers 11 de précodage des planches de ce module décrivant cet enchaînement. Ce logiciel permet de vérifier que l'ordre temporel dans lequel se déroule l'exécution des planches est respecté et que les conditions d'exécution sont elles aussi respectées En effet, il peut exister pour certaines planches des choix conditionnels d'exécution, qui doivent être respectés. Si une incohérence est détectée dans l'ordre ou les conditions d'exécution des planches, une correc- tion interactive doit être effectuée Si cette incohérence provient d'un symbole ou d'une variable d'entrée-sortie d'un symbole ou d'une planche, ce sym- bole ou cette variable est immédiatement corrigé de manière interactive, de sorte que le fichier de préco- dage 11 de chaque planche et/ou les fichiers 14 A, 14 B relatifs aux attributs et variables des symboles de chaque planche, sont automatiquement corrigés et ainsi tenus à jour. Le logiciel 15 de contrôle de cohérence d'en- chaînement temporel de l'ordre et des conditions d'exécution des planches n'est pas décrit ici en détail. En effet, différents logiciels capables de réaliser ce type de contrôle peuvent être mis en oeuvre pour parvenir au même résultat. Lorsque la cohérence d'enchaînement temporel des planches a été contrôlée, et que les corrections éventuelles ont été effectuées, un fichier unique 16 de précodage des planches de l'enchaînement est enregistré dans la mémoire 2 Ce fichier est mis à jour dès qu'une correction intervient dans une planche. Ce fichier unique contient les attributs et les variables d'entrée-sortie de tous les symboles des planches de l'enchaînement après correction. Le procédé consiste alors après ces contrôles, à enregistrer pour chaque module, dans la mémoire 2, un dictionnaire 17 de mise à jour des planches de ce module Ce dictionnaire est mis à jour à partir des contenus des fichiers 14 A, 14 B relatifs aux attributs et variables des symboles de chaque planche, et du contenu du fichier unique 16 de précodage des planches de L'enchaînement Ce dictionnaire mis à jour périodi- quement après chaque session de corrections résultant des contrôles de cohérence, contient les attributs des symboles de chaque planche et les variables d'entrée-sortie de chaque planche. Enfin, le procédé consiste à fournir le logi- ciel en code source, modélisant le module, à partir des fichiers 14 et 16 résultant des contrôles de cohé- rence de chaque planche et de l'ensemble des planches, et à partir du contenu du dictionnaire 17 et du catalogue de références 13 Ce logiciel en code source est fourni par traitement des contenus des fichiers 14 A, 14 B, 16, et du contenu du dictionnaire 17, par un logiciel de traitement 18 enregistré dans la mémoire 2 Il permet de constituer dans la mémoire 2 des fichiers 19 modélisant les planches du module, en code source Ce code est disponible sur une sortie 20 des fichiers 19. L'ordinateur 1 est relié au réseau de communi- cations 4, par exemple pour transmettre le Logiciel ainsi obtenu à un système de simulation, ou pour recevoir d'une autre station, reliée au réseau, des planches mises en mémoire dans un autre ordinateur. 1 1 REVENDICATIONS 1 Procédé interactif de production de Logi- ciels en code source, modélisant des ensembles complexes de modules fonctionnels, consistant pour chaque module: à mettre en oeuvre dans un ordinateur ( 1) relié à des moyens de visualisation ( 3), un logiciel ( 6) d'édition graphique enregistré dans une mémoire ( 2) reliée à l'ordinateur, pour élaborer des planches graphiques ( 7) décrivant des asservissements-et/ou des circuits logiques complexes intervenant dans le module, ce logiciel élaborant lesdites planches pour leur affi- chage par les moyens de visualisation ( 3), à partir d'une bibliothèque ( 8) de symboles graphiques enregis- trée dans ladite mémoire ( 2) et permettant de décrire lesdits asservissements et/ou circuits logiques; à mettre en oeuvre dans l'ordinateur ( 1), un logiciel ( 9) de précodage, enregistré dans la mémoire ( 2) de l'ordinateur pour définir chaque symbole d'une planche ( 7) par un précode comportant au moins des attributs du symbole et des variables d'entrée-sortie de ce symbole, à partir d'une bibliothèque ( 10) de précodes enregistrée dans la mémoire ( 2) de l'ordina- teur, un fichier ( 11) de précodage étant alors enregistré dans la mémoire de l'ordinateur, pour chaque planche; caractérisé en ce qu'il consiste en outre: à mettre en oeuvre dans l'ordinateur ( 1), un logiciel ( 12) de contrôle de cohérence entre les symboles de chaque planche, enregistré dans la mémoire ( 13), ce logiciel utilisant un catalogue de références enregistrées dans la mémoire, pour vérifier pour chaque planche, à partir du fichier de précodage ( 11), la cohérence des attributs des symboles et la cohérence des variables d'entrée-sortie de ces symboles, et pour enregistrer après vérification et corrections éven- tuelles, pour chaque planche, un fichier ( 14 A) relatif aux attributs des symboles de la planche et un fichier ( 14 B) relatif aux variables d'entrée-sortie de cette planche; à mettre en oeuvre dans l'ordinateur ( 1), un logiciel ( 15) pour contrôler la cohérence de l'en- chaînement temporel de l'ordre d'exécution et des conditions d'exécution des planches d'un module, à partir du contenu du fichier ( 11) de précodage des planches spécifiques de ce module et appartenant à cet enchaînement, et pour enregistrer un fichier unique ( 16) de précodage des planches de cet enchaînement; à enregistrer dans la mémoire de l'ordina- teur, pour chaque module, un dictionnaire ( 17) de contrôle de mise à jour des planches de ce module, à partir du contenu des fichiers ( 14 A, 14 B, 16) relatif aux attributs et aux variables des symboles de chaque planche et du contenu du fichier unique de précodage des planches de l'enchaînement, ce dictionnaire ( 17) contenant les attributs des symboles de chaque planche et les variables d'entrée-sortie de chaque planche, et étant mis à jour après toute modification d'un sym- bole d'une planche; à produire le logiciel en code source, modélisant le module à partir d'un logiciel ( 18) de traitement des contenus des fichiers ( 14 A, 14 B, 16) de précodage des attributs et des variables des symboles de chaque planche, du contenu du fichier unique de précodage, et du contenu du dictionnaire ( 17). 2 Procédé selon la revendication 1, caracté- risé en ce qu'il consiste à modéliser des ensembles complexes de modules de commandes électriques ou auto- matiques de vol d'un avion.