FR3024566A1 - Procede de verification de tracabilite de premieres instructions en un langage de programmation procedurale generees a partir de secondes instructions en un langage de modelisation - Google Patents

Procede de verification de tracabilite de premieres instructions en un langage de programmation procedurale generees a partir de secondes instructions en un langage de modelisation Download PDF

Info

Publication number
FR3024566A1
FR3024566A1 FR1457513A FR1457513A FR3024566A1 FR 3024566 A1 FR3024566 A1 FR 3024566A1 FR 1457513 A FR1457513 A FR 1457513A FR 1457513 A FR1457513 A FR 1457513A FR 3024566 A1 FR3024566 A1 FR 3024566A1
Authority
FR
France
Prior art keywords
instructions
code
modeling
traceability
block
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
FR1457513A
Other languages
English (en)
Other versions
FR3024566B1 (fr
Inventor
Severine Morin
Bertrand Corruble
Bertrand Tavernier
Frederic Titeux
Guy Renault
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Safran Electronics and Defense SAS
Original Assignee
Sagem Defense Securite SA
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sagem Defense Securite SA filed Critical Sagem Defense Securite SA
Priority to FR1457513A priority Critical patent/FR3024566B1/fr
Priority to FR1557401A priority patent/FR3024788B1/fr
Priority to US15/500,908 priority patent/US10417110B2/en
Priority to EP15747460.2A priority patent/EP3195113B1/fr
Priority to PCT/EP2015/067858 priority patent/WO2016016473A1/fr
Publication of FR3024566A1 publication Critical patent/FR3024566A1/fr
Application granted granted Critical
Publication of FR3024566B1 publication Critical patent/FR3024566B1/fr
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/35Creation or generation of source code model driven
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3604Software analysis for verifying properties of programs

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

La présente invention concerne un procédé de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale générées à partir de secondes instructions de code en un langage de modélisation, caractérisé en ce qu'il comprend la mise en œuvre par un équipement (1) d'étapes de : (a) Analyse syntaxique : ○ des premières instructions de sorte à générer un AST, et ○ des secondes instructions de sorte à générer un MDT ; (b) Analyse sémantique : ○ De l'AST de sorte à identifier des motifs représentatifs de blocs fonctionnels élémentaires des premières instructions ; ○ Du MDT de sorte à identifier des propriétés caractéristiques de blocs fonctionnels élémentaires des secondes instructions ; (c) Mise en correspondance deux à deux des blocs fonctionnels élémentaires identifiés, et confirmation de la traçabilité de premières instructions de code seulement si : ○ pour chaque bloc des premières instructions il existe un bloc fonctionnellement équivalent des secondes instructions, et ○ pour chaque bloc des secondes instructions il existe un bloc fonctionnellement équivalent des premières instructions.

Description

DOMAINE TECHNIQUE GENERAL La présente invention concerne la génération automatisée de code à partir de modèles, et en particulier un procédé de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale produites à partir de secondes instructions de code en un langage de modélisation. ETAT DE L'ART Les aéronefs de dernière génération recourent massivement à l'informatique et utilisent pour cela des logiciels embarqués. Des environnements de modélisation et génération permettent à des utilisateurs de produire automatiquement du code source à partir de modèles. Toutefois, il n'est aujourd'hui pas possible de garantir à ces utilisateurs que le code source généré est bien entièrement traçable vers ces modèles, c'est-à-dire qu'il peut exister des séquences d'instructions du code (i.e. des fragments) qui n'ont pas de lien direct avec les modèles amont, et qui sont susceptibles de déclencher des comportements fonctionnels non désirés. Le code source généré à partir des modèles n'est en effet pas « par construction » traçable vers les modèles. Cependant, une fiabilité irréprochable est requise au vu des conséquences désastreuses que pourrait avoir une erreur informatique pendant le vol d'un avion, et la présence d'instructions non traçables n'est pas acceptable. L'état de la technique actuelle consiste à soit vérifier manuellement l'absence d'instructions de code source non traçables vers les modèles, et en cas de présence de telles instructions, à justifier manuellement qu'elles ne peuvent pas introduire de comportement fonctionnel non attendu, soit à faire des campagnes de tests de bas niveau sur le code objet exécutable pour s'assurer que toute la structure du code a bien été exercée par les tests et qu'il n'existe donc pas (ou plus) d'instructions non atteignables (ce qui révélerait la présence d'instructions de code non traçables vers les modèles). Des techniques de vérification automatique ont été proposées par exemple dans les documents US 8627276 et US 8583414. L'idée est d'utiliser des données de test d'un code objet généré comme éléments d'analyse et contrôle de la traçabilité modèle versus code généré. Ces méthodes apportent satisfaction, mais ne permettent toujours pas de garantir à 100% que le code traçable est transitif vers les modèles, et ne permettent ainsi pas de s'affranchir d'une mesure de couverture structurelle à réaliser manuellement au niveau du code. Il serait ainsi souhaitable de disposer d'une méthode fiable et reproductible permettant de produire du code source entièrement traçable vers les modèles, de confirmer que le code source produit est effectivement entièrement traçable vers les modèles, et de démontrer de façon fiable et systématique que la mesure de couverture structurelle obtenue au niveau des modèles peut être extrapolée au niveau du code source automatiquement généré. De plus il serait souhaitable que cette méthode soit éligible à une certification. PRESENTATION DE L'INVENTION Selon un premier aspect, la présente invention se rapporte donc à un procédé de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale générées à partir de secondes instructions de code en un langage de modélisation, caractérisé en ce qu'il comprend la mise en oeuvre par des moyens de traitement de données d'un équipement d'étapes de : (a) Analyse syntaxique : o des premières instructions de code selon une bibliothèque du dit langage de programmation procédurale de sorte à générer un arbre syntaxique abstrait (AST) des premières instructions, et o des secondes instructions de code selon une bibliothèque dudit langage de modélisation de sorte à générer un arbre de modélisation (MDT) des secondes instructions (b) Analyse sémantique : o De l'arbre syntaxique abstrait (AST) des premières instructions de sorte à identifier des motifs représentatifs de blocs fonctionnels élémentaires des premières instructions ; o De l'arbre de modélisation (MDT) des secondes instructions de sorte à identifier des propriétés caractéristiques de blocs fonctionnels élémentaires des secondes instructions ; (c) Mise en correspondance deux à deux des blocs fonctionnels élémentaires identifiés, et confirmation de la traçabilité de premières instructions de code seulement si : o pour chaque bloc des premières instructions il existe un bloc fonctionnellement équivalent des secondes instructions, et o pour chaque bloc des secondes instructions il existe un bloc fonctionnellement équivalent des premières instructions. 20 Selon d'autres caractéristiques avantageuses et non limitatives : - ledit langage de modélisation est un langage de programmation graphique ; - ledit langage de programmation graphique est Simulink® ou Scilab ; 25 - le langage de programmation procédurale est un langage basé sur C ; - chaque bloc identifié comprend une interaction avec au moins un autre bloc, l'étape (c) comprenant la mise en correspondance deux à deux desdites interactions, et la confirmation de la traçabilité de premières instructions de code seulement si : 30 o pour chaque interaction entre deux blocs des premières instructions il existe la même interaction entre les deux blocs correspondant des secondes instructions, et o pour chaque interaction entre deux blocs des secondes instructions il existe la même interaction entre les deux blocs correspondant des premières instructions. - l'étape (b) comprend également l'analyse sémantique de l'arbre syntaxique abstrait (AST) des premières instructions de sorte à identifier les variables des premières instructions, et l'analyse sémantique de l'arbre de modélisation (MDT) des secondes instructions de sorte à identifier les signaux et les constantes des secondes instructions ; - le procédé comprend une étape (d) de mise en correspondance des variables identifiées avec les signaux et constantes identifiées identifiés en fonction de règles de génération dudit langage de programmation procédurale à partir du langage de modélisation, et confirmation de la traçabilité de premières instructions de code seulement si pour chaque variable identifiée il existe un signal et/ou une constante correspondant identifiés ; - le procédé comprend une étape subséquente (e) d'instanciation des premières instructions de code dans un système si leur traçabilité est confirmée ; - le procédé comprend une étape préalable (a0) de génération des 20 secondes instructions de code à partir des secondes instructions de code par les moyens de traitement de données. Selon un deuxième aspect, l'invention concerne un équipement de vérification de traçabilité de premières instructions de code en un langage 25 de programmation procédurale produites à partir de secondes instructions de code en un langage de modélisation, caractérisé en ce qu'il comprend des moyens de traitement de données configurés pour la mise en oeuvre de : - Un module d'analyse syntaxique : 30 o des premières instructions de code selon une bibliothèque dudit langage de programmation procédurale de sorte à générer un arbre syntaxique abstrait (AST) des premières instructions, et o des secondes instructions de code selon une bibliothèque dudit langage de modélisation de sorte à générer un arbre de modélisation (MDT) des secondes instructions - un module d'analyse sémantique : o De l'arbre syntaxique abstrait (AST) des premières instructions de sorte à identifier des motifs représentatifs de blocs fonctionnels élémentaires des premières instructions ; o De l'arbre de modélisation (MDT) des secondes instructions de sorte à identifier des propriétés caractéristiques de blocs fonctionnels élémentaires des secondes instructions ; - Un module de mise en correspondance deux à deux des blocs fonctionnels élémentaires identifiés, et de confirmation de la traçabilité de premières instructions de code seulement si : o pour chaque bloc des premières instructions il existe un bloc fonctionnellement équivalent des secondes instructions, et o pour chaque bloc des secondes instructions il existe un bloc fonctionnellement équivalent des premières instructions. 20 Selon un cinquième et un sixième aspect, l'invention concerne un produit programme d'ordinateur comprenant des instructions de code pour l'exécution d'un procédé selon le premier aspect de l'invention de vérification de traçabilité de premières instructions de code en un langage 25 de programmation procédurale générées à partir de secondes instructions de code en un langage de modélisation ; et des moyens de stockage lisibles par un équipement informatique sur lesquels un produit programme d'ordinateur comprend des instructions de code pour l'exécution d'un procédé le premier aspect de l'invention de vérification de traçabilité de 30 premières instructions de code en un langage de programmation procédurale générées à partir de secondes instructions de code en un langage de modélisation.
PRESENTATION DES FIGURES D'autres caractéristiques et avantages de la présente invention apparaîtront à la lecture de la description qui va suivre d'un mode de réalisation préférentiel. Cette description sera donnée en référence aux dessins annexés dans lesquels : - la figure 1 représente un système pour la mise en oeuvre du procédé selon l'invention ; - la figure 2 est une représentation générale de l'architecture d'un mode de réalisation du procédé selon l'invention - la figure 3 est un schéma illustrant les capacités de vérification du procédé selon l'invention.
DESCRIPTION DETAILLEE Architecture En référence à la figure 1, le présent procédé est un procédé de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale produites à partir de secondes instructions de code en un langage de modélisation. Le procédé est mis en oeuvre via un équipement 1 qui peut être n'importe quel poste informatique comprenant des moyens de traitement de données 11 (par exemple un processeur), des moyens de stockage de données 12 (par exemple un disque dur) et des moyens d'affichage d'une interface graphique 13 (par exemple un écran). Des moyens de saisie 14 (tels qu'un clavier et une souris) permettent à un utilisateur souhaitant utiliser le procédé (et/ou programmer graphiquement) d'interagir avec l'interface graphique 13. Il est à noter que le présent procédé n'est pas limité à l'utilisation d'un poste de travail, et que d'autres types d'équipements tels qu'un serveur peuvent tout à fait être utilisés. Par programmation procédurale (ou algorithmique) on entend un paradigme de programmation dans lequel une « procédure » contient simplement une série d'étapes à réaliser, à chacune desquelles d'autres procédures peuvent être appelée, voire la procédure elle-même (récursivité). Les premières instructions de code constituent un code source, en un langage procédural typiquement de type C (ou par exemple un langage orienté objet de type Java), destiné à être compilé en un code exécutable puis à être embarqué sur un système 2, par exemple un équipement informatique 21 d'un aéronef. Les premières instructions sont par exemple un fichier source C (.c) accompagné d'un fichier de header (.h).
Le langage de modélisation (celui des secondes instructions), ou MDL (« Model Description Language »), est quant à lui typiquement un langage de programmation graphique, en particulier Simulink®, Scilab, ou tout autre équivalent. De façon classique, la programmation graphique (qui peut être faite via l'équipement 1 ou un autre équipement similaire, on prendra ici l'exemple où c'est le même équipement mais l'homme du métier saura transposer) comprend la sélection puis la disposition via l'interface graphique 13 d'une pluralité d'éléments graphiques chacun représentatif d'un objet fonctionnel informatique (appelés typiquement blocs), puis leur câblage par des liens, ce qui constitue les secondes instructions de code.
Les secondes instructions sont par exemple un fichier .mdl accompagné d'un fichier d'initialisation (.m). A partir de ces secondes instructions, un module (mis en oeuvre par les moyens de traitement de données) génère et stocke sur les moyens de stockage de données 12 les premières instructions de code en utilisant une bibliothèque de règles de génération dudit langage de programmation procédurale à partir du langage de modélisation. Dans l'exemple du Simulink, le module de génération est par exemple RTW (Real-Time Workshop). Ce module de génération doit interpréter le modèle en fonction de ses entrées pour générer un code adapté aux entrées et éventuellement optimiser ce code. Cela constitue le cas échéant une étape (a0) préalable du procédé.
Procédé Le présent procédé vise à garantir que le code généré (les premières instructions) correspond réellement aux modèles d'origine (les secondes instructions). Le code doit être traçable et transitif, c'est-à-dire que chaque bloc fonctionnel des premières instructions doit pouvoir être liée de façon bijective aux blocs fonctionnels des secondes instructions : il doit y avoir « tout le code nécessaire, mais rien que le code nécessaire ». En d'autres termes, il ne doit y avoir ni code faux/manquant ni code « inattendu » qui pourrait troubler la mise en oeuvre des fonctions attendues. On notera qu'un bloc fonctionnel de premières instructions peut être composé de fragments de code non contigus. En référence à la figure 2, qui représente un exemple dans le cas où on génère du C à partir de Simulink via RTW, le présent procédé (mis en oeuvre via un programme nommé SK2CVerif) commence pour cela par la mise en oeuvre par les moyens de traitement de données 11 de l'équipement 1 d'une étape (a) d'analyse syntaxique de chacun des premières et secondes instructions. On connait des outils adaptés (« parsers ») souvent issus des technologies de la compilation, par exemple Lex-Yacc (Lex est un analyseur lexical, utilisé en combinaison avec Yacc qui est un analyseur syntaxique). Par analyse syntaxique, on entend la mise en évidence de la structure, au sens grammatical, des instructions.
L'analyse syntaxique des premières instructions de code est réalisée selon une bibliothèque dudit langage de programmation procédurale, de sorte à produire ce que l'on appelle un arbre syntaxique abstrait (AST, « Abstract Syntax Tree ») des premières instructions. Il s'agit d'un arbre dont les noeuds internes sont marqués par des opérateurs et dont les feuilles (ou noeuds externes) représentent les opérandes de ces opérateurs. Autrement dit, une feuille est généralement une variable ou une constante. Il s'agit d'une représentation intermédiaire des premières instructions de code. L'analyse syntaxique des secondes instructions de code est à quant à elle mise en oeuvre selon une bibliothèque dudit langage de modélisation, et permet de générer un arbre de modélisation (MDT, « Modelling Tree ») des secondes instructions. Par arbre de modélisation, on entend un arbre représentant l'architecture des blocs (structure d'imbrication et liaisons fonctionnelles) du modèle constitué par les secondes instructions.
Dans une deuxième partie (b), une analyse sémantique suit l'analyse syntaxique. Là où l'analyse syntaxique étudie uniquement la structure du texte, l'analyse sémantique étudie le sens. L'analyse sémantique nécessite une interprétation du modèle en fonction des entrées au même titre que le module de génération ainsi qu'une identification des optimisations possibles des premières instructions. L'idée est d'identifier grâce aux arbres des propriétés dans les premières et secondes instructions. Plus précisément, l'analyse sémantique de l'arbre syntaxique abstrait (AST) des premières instructions permet d'identifier des motifs représentatifs de blocs fonctionnels élémentaires des premières instructions, et l'analyse de l'arbre de modélisation (MDT) des secondes instructions permet d'identifier des propriétés caractéristiques et spécifiques de blocs fonctionnels élémentaires des secondes instructions. De façon avantageuse l'analyse sémantique permet de déterminer des « dictionnaires » des premières et secondes instructions dont les blocs sont un des éléments. Plus précisément peuvent être identifiés les variables des premières instructions, et les signaux et les constantes des secondes instructions.
A ce stade, les blocs fonctionnels identifiés pour chacun des premières et secondes instructions sont mis en correspondance deux à deux. En effet, si le code est traçable alors chaque bloc des premières instructions correspond à un bloc équivalent des secondes instructions et vice-versa. La correspondance doit être bijective pour que la traçabilité soit garantie. Si un bloc des premières instructions n'a pas d'équivalent dans les secondes instructions, c'est que ce bloc correspond à du code en trop qui doit être supprimé des premières instructions. Si un bloc des secondes instructions n'a pas d'équivalent dans les premières instructions, c'est que la fonction associée est manquante dans le code généré et que celui-ci est probablement déficient. Si plusieurs blocs des premières instructions correspondent à un seul 15 bloc des secondes instructions, c'est qu'une partie des premières instructions est inutilement redondante et doit être supprimée. En d'autres termes, la traçabilité des premières instructions de code est confirmée seulement si : o pour chaque bloc des premières instructions il existe un bloc 20 fonctionnellement équivalent des secondes instructions, et o pour chaque bloc des secondes instructions il existe un bloc fonctionnellement équivalent des premières instructions. En outre, les dispositions temporelles des blocs doivent correspondre (telle fonction doit suivre telle fonction, etc.). Plus précisément, chaque bloc 25 identifié comprend une interaction avec au moins un autre bloc, l'étape (c) comprenant la mise en correspondance deux à deux desdites interactions, et la confirmation de la traçabilité de premières instructions de code seulement si - o pour chaque interaction entre deux blocs des premières 30 instructions il existe la même interaction entre les deux blocs correspondant des secondes instructions, et o pour chaque interaction entre deux blocs des secondes instructions il existe la même interaction entre les deux blocs correspondant des premières instructions. Cela permet d'éviter des inversions de motifs ou de mauvaises liaisons quand bien mêmes toutes les fonctions serait reprises. Le procédé comprend alors avantageusement la modification du code généré. Dans le cas où des variables, signaux et constantes ont été identifiées, le procédé peut comprendre une étape (d) de mise en correspondance des variables identifiées avec les signaux et constantes identifiés en fonction de règles de génération du dit langage de programmation procédurale à partir du langage de modélisation. La traçabilité des premières instructions de code n'est alors confirmée que seulement si pour chaque variable identifiée il existe un signal et/ou une constante correspondant identifiés. Si chacun de ces tests est concluant, on peut être sûr que le code généré est intégralement traçable et transitif vers les modèles d'origine, puisque chaque unité fonctionnelle et chaque variable est vérifiée. Si sa traçabilité est confirmée les premières instructions de code (ou une version compilée) sont instanciées dans un système 2 tel qu'un aéronef.
Résultats En référence à la figure 3 (qui représente fonctionnellement trois motifs du code en interaction), le précédent procédé est capable de détecter les erreurs suivantes : A : « code pattern corruption », c'est-à-dire une erreur à l'intérieur du motif (le bloc n'a pas la fonction qu'il devrait avoir, et aucun n'équivalent n'est trouvé) ; B : « output variable computation », le résultat de sortie du bloc est faux (et ce dernier ne remplit toujours pas sa fonction) ; C : « Incorrect input variable connexion », suite à une erreur de câblage le bloc reçoit des variables permutées (mauvaise interaction entre blocs). D : « Type issue », une variable d'entrée n'a pas le bon type (mauvaise interaction entre blocs) ; E : « freshness issue ». Deux blocs (chacun valides) ont été permutés (à nouveau des mauvaises interactions entre blocs).
Système Selon un deuxième aspect, l'invention concerne un équipement 1 pour la mise en oeuvre du précédent procédé. L'équipement 1 est en particulier un poste de génération de code informatique. Cet équipement comprend des moyens de traitement de données (par exemple un processeur) configurés pour la mise en oeuvre de : (a) Un module d'analyse syntaxique : o des premières instructions de code selon une bibliothèque du dit langage de programmation procédurale de sorte à générer un arbre syntaxique abstrait (AST) des premières instructions, et o des secondes instructions de code selon une bibliothèque du dit langage de modélisation de sorte à générer un arbre de modélisation (MDT) des secondes instructions (b) un module d'analyse sémantique : o De l'arbre syntaxique abstrait (AST) des premières instructions de sorte à identifier des motifs représentatifs de blocs fonctionnels élémentaires des premières instructions ; o De l'arbre de modélisation (MDT) des secondes instructions de sorte à identifier des propriétés caractéristiques de blocs fonctionnels élémentaires des secondes instructions ; (c) Un module de mise en correspondance deux à deux des blocs fonctionnels élémentaires identifiés, et de confirmation de la traçabilité de premières instructions de code seulement si : o pour chaque bloc des premières instructions il existe un bloc fonctionnellement équivalent des secondes instructions, et o pour chaque bloc des secondes instructions il existe un bloc fonctionnellement équivalent des premières instructions. Produit programme d'ordinateur Selon un troisième et un quatrième aspects, l'invention concerne un produit programme d'ordinateur comprenant des instructions de code pour l'exécution (en particulier sur les moyens de traitement 11 de l'équipement 1) de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale générées à partir de secondes instructions de code en un langage de modélisation, ainsi que des moyens de stockage lisibles par un équipement informatique (notamment une mémoire 12 de l'équipement 1) sur lequel on trouve ce produit programme d'ordinateur.20

Claims (12)

  1. REVENDICATIONS1. Procédé de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale générées à partir de secondes instructions de code en un langage de modélisation, caractérisé en ce qu'il comprend la mise en oeuvre par des moyens de traitement de données (11) d'un équipement (1) d'étapes de : (a) Analyse syntaxique : o des premières instructions de code selon une bibliothèque du dit langage de programmation procédurale de sorte à générer un arbre syntaxique abstrait (AST) des premières instructions, et o des secondes instructions de code selon une bibliothèque dudit langage de modélisation de sorte à générer un arbre de modélisation (MDT) des secondes instructions ; (b) Analyse sémantique : o De l'arbre syntaxique abstrait (AST) des premières instructions de sorte à identifier des motifs représentatifs de blocs fonctionnels élémentaires des premières instructions ; o De l'arbre de modélisation (MDT) des secondes instructions de sorte à identifier des propriétés caractéristiques de blocs fonctionnels élémentaires des secondes instructions ; (c) Mise en correspondance deux à deux des blocs fonctionnels élémentaires identifiés, et confirmation de la traçabilité de premières instructions de code seulement si : o pour chaque bloc des premières instructions il existe un bloc fonctionnellement équivalent des secondes instructions, et o pour chaque bloc des secondes instructions il existe un bloc fonctionnellement équivalent des premières instructions.
  2. 2. Procédé selon la revendication 1, dans lequel ledit langage de modélisation est un langage de programmation graphique.
  3. 3. Procédé selon la revendication 2, dans lequel ledit langage de programmation graphique est Simulink® ou Scilab.
  4. 4. Procédé selon l'une des revendications précédentes, dans lequel le langage de programmation procédurale est un langage basé sur C.
  5. 5. Procédé selon l'une des revendications précédentes, dans lequel chaque bloc identifié comprend une interaction avec au moins un autre bloc, l'étape (c) comprenant la mise en correspondance deux à deux desdites interactions, et la confirmation de la traçabilité de premières instructions de code seulement si : o pour chaque interaction entre deux blocs des premières instructions il existe la même interaction entre les deux blocs correspondant des secondes instructions, et o pour chaque interaction entre deux blocs des secondes instructions il existe la même interaction entre les deux blocs correspondant des premières instructions.
  6. 6. Procédé selon l'une des revendications précédentes, dans lequel l'étape (b) comprend également l'analyse sémantique de l'arbre syntaxique abstrait (AST) des premières instructions de sorte à identifier les variables des premières instructions, et l'analyse sémantique de l'arbre de modélisation (MDT) des secondes instructions de sorte à identifier les signaux et les constantes des secondes instructions.
  7. 7. Procédé selon la revendication 6, comprenant une étape (d) de mise en correspondance des variables identifiées avec les signaux et constantes identifiées identifiés en fonction de règles degénération dudit langage de programmation procédurale à partir du langage de modélisation, et confirmation de la traçabilité de premières instructions de code seulement si pour chaque variable identifiée il existe un signal et/ou une constante correspondant identifiés.
  8. 8. Procédé selon l'une des revendications précédentes, comprenant une étape subséquente (e) d'instanciation des premières instructions de code dans un système (2) si leur traçabilité est confirmée.
  9. 9. Procédé selon l'une des revendications précédentes, comprenant une étape préalable (a0) de génération des secondes instructions de code à partir des secondes instructions de code par les moyens de traitement de données (11).
  10. 10. Equipement (1) de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale produites à partir de secondes instructions de code en un langage de modélisation, caractérisé en ce qu'il comprend des moyens de traitement de données (11) configurés pour la mise en oeuvre de : Un module d'analyse syntaxique : o des premières instructions de code selon une bibliothèque dudit langage de programmation procédurale de sorte à générer un arbre syntaxique abstrait (AST) des premières instructions, et o des secondes instructions de code selon une bibliothèque dudit langage de modélisation de sorte à générer un arbre de modélisation (MDT) des secondes instructions un module d'analyse sémantique : o De l'arbre syntaxique abstrait (AST) des premières instructions de sorte à identifier des motifs représentatifs de blocs fonctionnels élémentaires des premières instructions ;o De l'arbre de modélisation (MDT) des secondes instructions de sorte à identifier des propriétés caractéristiques de blocs fonctionnels élémentaires des secondes instructions ; Un module de mise en correspondance deux à deux des blocs fonctionnels élémentaires identifiés, et de confirmation de la traçabilité de premières instructions de code seulement si : o pour chaque bloc des premières instructions il existe un bloc fonctionnellement équivalent des secondes instructions, et o pour chaque bloc des secondes instructions il existe un bloc fonctionnellement équivalent des premières instructions.
  11. 11. Produit programme d'ordinateur comprenant des instructions de code pour, lorsque ledit programme est exécuté sur un ordinateur, l'exécution d'un procédé selon l'une des revendications 1 à 9 de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale générées à partir de secondes instructions de code en un langage de modélisation.
  12. 12. Moyens de stockage lisibles par un équipement informatique sur lesquels un produit programme d'ordinateur comprend des instructions de code pour l'exécution d'un procédé selon l'une des revendications 1 à 9 de vérification de traçabilité de premières instructions de code en un langage de programmation procédurale générées à partir de secondes instructions de code en un langage de modélisation.
FR1457513A 2014-08-01 2014-08-01 Procede de verification de tracabilite de premieres instructions en un langage de programmation procedurale generees a partir de secondes instructions en un langage de modelisation Active FR3024566B1 (fr)

Priority Applications (5)

Application Number Priority Date Filing Date Title
FR1457513A FR3024566B1 (fr) 2014-08-01 2014-08-01 Procede de verification de tracabilite de premieres instructions en un langage de programmation procedurale generees a partir de secondes instructions en un langage de modelisation
FR1557401A FR3024788B1 (fr) 2014-08-01 2015-07-31 Procede de verification de tracabilite de premieres instructions en un langage de programmation procedurale generees a partir de secondes instructions en un langage de modelisation
US15/500,908 US10417110B2 (en) 2014-08-01 2015-08-03 Method for verifying traceability of first instructions in a procedural programming language generated from second instructions in a modelling language
EP15747460.2A EP3195113B1 (fr) 2014-08-01 2015-08-03 Procédé de vérification de traçabilité de premières instructions en un langage de programmation procédurale générées à partir de secondes instructions en un langage de modélisation
PCT/EP2015/067858 WO2016016473A1 (fr) 2014-08-01 2015-08-03 Procédé de vérification de traçabilité de premières instructions en un langage de programmation procédurale générées à partir de secondes instructions en un langage de modélisation

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
FR1457513A FR3024566B1 (fr) 2014-08-01 2014-08-01 Procede de verification de tracabilite de premieres instructions en un langage de programmation procedurale generees a partir de secondes instructions en un langage de modelisation

Publications (2)

Publication Number Publication Date
FR3024566A1 true FR3024566A1 (fr) 2016-02-05
FR3024566B1 FR3024566B1 (fr) 2016-08-19

Family

ID=52473980

Family Applications (1)

Application Number Title Priority Date Filing Date
FR1457513A Active FR3024566B1 (fr) 2014-08-01 2014-08-01 Procede de verification de tracabilite de premieres instructions en un langage de programmation procedurale generees a partir de secondes instructions en un langage de modelisation

Country Status (1)

Country Link
FR (1) FR3024566B1 (fr)

Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20120254827A1 (en) * 2009-09-14 2012-10-04 The Mathworks, Inc. Verification of computer-executable code generated from a model
US8464204B1 (en) * 2008-10-06 2013-06-11 The Mathworks, Inc. Verification of computer-executable code generated from a model
US8522196B1 (en) * 2001-10-25 2013-08-27 The Mathworks, Inc. Traceability in a modeling environment

Patent Citations (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8522196B1 (en) * 2001-10-25 2013-08-27 The Mathworks, Inc. Traceability in a modeling environment
US8464204B1 (en) * 2008-10-06 2013-06-11 The Mathworks, Inc. Verification of computer-executable code generated from a model
US20120254827A1 (en) * 2009-09-14 2012-10-04 The Mathworks, Inc. Verification of computer-executable code generated from a model

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
O'HALLORAN C ET AL: "Verification of picture generated code", AUTOMATED SOFTWARE ENGINEERING, 1999. 14TH IEEE INTERNATIONAL CONFEREN CE ON. COCOA BEACH, FL, USA 12-15 OCT. 1999, LOS ALAMITOS, CA, USA,IEEE COMPUT. SOC, US, 12 October 1999 (1999-10-12), pages 127 - 136, XP010358479, ISBN: 978-0-7695-0415-5, DOI: 10.1109/ASE.1999.802160 *

Also Published As

Publication number Publication date
FR3024566B1 (fr) 2016-08-19

Similar Documents

Publication Publication Date Title
CA2505943C (fr) Controle de la robustesse d'une modelisation d'un systeme physique
EP1387261A1 (fr) Logiciel de generation de code d'application informatique et langage de description de logiciel
WO2010009996A1 (fr) Procede de compilation de programme informatique
FR2920893A1 (fr) Procede d'analyse de la fiabilite d'installations techniques a l'aide de modeles physiques, utilisation d'un tel procede et support d'informations pour sa mise en oeuvre
Ordiales Coscia et al. Anti-pattern free code-first web services for state-of-the-art Java WSDL generation tools
FR2713368A1 (fr) Procédure et procédé de communication entre machines et procédé généralisé de préparation de programmes afférents.
US11249880B1 (en) Debugging and simulating application runtime execution
EP3195113B1 (fr) Procédé de vérification de traçabilité de premières instructions en un langage de programmation procédurale générées à partir de secondes instructions en un langage de modélisation
US10146529B2 (en) Monitoring rules declaration and automatic configuration of the monitoring rules
FR3024566A1 (fr) Procede de verification de tracabilite de premieres instructions en un langage de programmation procedurale generees a partir de secondes instructions en un langage de modelisation
FR2923925A1 (fr) Procede d'evaluation de la surete de fonctionnement d'un systeme
EP2419823A1 (fr) Procede d'assistance au developpement ou a l'utilisation d'un systeme complexe
EP1588351A1 (fr) Production automatique d'interfaces de reconnaissance vocale pour un domaine d'application
EP3754506A1 (fr) Procédé de validation automatique de cots et dispositif pour la mise en oeuvre du procédé
FR3001553A1 (fr) Dispositif de commande pour un systeme d'automatisme
FR3091106A1 (fr) Système de supervision formelle de communications
WO2017108924A1 (fr) Procédé de détection de problèmes de testabilité d'un module informatique
Richa Qualification of source code generators in the avionics domain: Automated testing of model transformation chains
WO2024121266A1 (fr) Systeme de deploiement et de test d' un composant d' un logiciel sur un ensemble de ressources materielles
Jajal et al. Interoperability in Deep Learning: A User Survey and Failure Analysis of ONNX Model Converters
FR3077663A1 (fr) Procede d'elaboration d'un programme informatique et dispositif d'elaboration correspondant
EP4394642A1 (fr) Système informatique de validation formelle d'un système physique en ingénierie des systèmes, procédé et programme d'ordinateur correspondants
Martin Analyse détaillée de trace en dépit d'événements manquants
FR3026511A1 (fr) Procede de test d'un composant logiciel
FR3031820A1 (fr) Procede de determination de la validite d'un modele

Legal Events

Date Code Title Description
PLFP Fee payment

Year of fee payment: 2

PLSC Publication of the preliminary search report

Effective date: 20160205

PLFP Fee payment

Year of fee payment: 3

CD Change of name or company name

Owner name: SAGEM DEFENSE SECURITE, FR

Effective date: 20161214

CJ Change in legal form

Effective date: 20161214

PLFP Fee payment

Year of fee payment: 4

PLFP Fee payment

Year of fee payment: 5

PLFP Fee payment

Year of fee payment: 6

PLFP Fee payment

Year of fee payment: 7

PLFP Fee payment

Year of fee payment: 8

PLFP Fee payment

Year of fee payment: 9

PLFP Fee payment

Year of fee payment: 10

PLFP Fee payment

Year of fee payment: 11