Download Free Vers Une Demarche De Verification Formelle D Book in PDF and EPUB Free Download. You can read online Vers Une Demarche De Verification Formelle D and write the review.

Le cadre général dans lequel se situe cette thèse concerne l’amélioration de la vérification et la validation des modèles de simulation par l'intégration des méthodes formelles. Notre approche consiste à doter les modèles DEVS d’une approche de vérification formelle basée sur le langage Z. DEVS est un formalisme qui permet la description et l'analyse du comportement des systèmes à évènements discrets, c'est à dire, les systèmes dont le changement d'état dépend de l'occurrence d'un évènement. Un modèle DEVS est essentiellement validé par la simulation qui permet de vérifier si celui ci décrit bien le comportement du système. Cependant, la simulation ne permet pas de détecter la présence d’une éventuelle inconsistance dans le modèle (un conflit, une ambiguïté ou une incomplétude). Pour cela, nous avons intégré un langage de spécification formelle dans le formalisme DEVS connu sous le nom de Z. Cette intégration consiste à: (1) transformer un un modèle DEVS vers une spécification Z équivalente et (2) vérifier la consistance de la spécification résultante utilisant les outils développés par la communauté Z. Ainsi un modèle DEVS est soumis à une vérification formelle automatique avant son passage à la phase de simulation.
Lors d'un développement logiciel, et plus particulièrement d'un développement d'applications embarquées avioniques, les activités de vérification représentent un coût élevé. Une des pistes prometteuses pour la réduction de ces coûts est l'utilisation de méthodes formelles. Ces méthodes s'appuient sur des fondements mathématiques et permettent d'effectuer des tâches de vérification à forte valeur ajoutée au cours du développement. Les méthodes formelles sont déjà utilisées dans l'industrie. Cependant, leur difficulté d'appréhension et la nécessité d'expertise pour leur mise en pratique sont un frein à leur utilisation massive. Parallèlement au problème des coûts liés à la vérification logicielle, vient se greffer la complexification des logiciels et du contexte de développement. L'Ingénierie Dirigée par les Modèles (IDM) permet de faire face à ces difficultés en proposant des modèles, ainsi que des activités pour en tirer profit.Le but des travaux présentés dans cette thèse est d'établir un lien entre les méthodes formelles et l'IDM afin de proposer à des utilisateurs non experts une approche de vérification formelle et automatique de programmes susceptible d'améliorer les processus de vérification actuels. Nous proposons de générer automatiquement sur le code source des annotations correspondant aux propriétés comportementales attendues du logiciel, et ce, à partir de son modèle de conception. Ces annotations peuvent ensuite être vérifiées par des outils de preuve déductive, afin de s'assurer que le comportement du code est conforme au modèle. Cette thèse CIFRE s'inscrit dans le cadre industriel d'Atos. Il est donc nécessaire de prendre en compte le contexte technique qui s'y rattache. Ainsi, nous utilisons le standard UML pour la modélisation,le langage C pour l'implémentation et l'outil Frama-C pour la preuve du code. Nous tenons également compte des contraintes du domaine du logiciel avionique dans lequel Atos est impliqué et notamment les contraintes liées à la certification.Les contributions de cette thèse sont la définition d'un sous-ensemble des machines à états UML dédié à la conception comportementale de logiciel avionique et conforme aux pratiques industrielles existantes, la définition d'un patron d'implémentation C, la définition de patrons de génération des propriétés comportementales sur le code à partir du modèle et enfin l'implémentation de l'approche dans un prototype compatible avec l'environnement de travail des utilisateurs potentiels en lien avec Atos. L'approche proposée est finalement évaluée par rapport à l'objectif de départ, par rapport aux attentes de la communauté du génie logiciel et par rapport aux travaux connexes.
Le cadre de cette thèse est l'utilisation des méthodes formelles pour la spécification et la validation de systèmes matériels et logiciels. Nos travaux se sont concentrés sur la validation formelle de systèmes à architecture régulière et paramétrable, circuits combinatoires itératifs d'une part, et applications distribuées s'exécutant sur des réseaux d'interconnexion symétriques d'autre part. La première partie de cette thèse est consacrée à la vérification formelle automatique de circuits à structure répétitive régulière. Un modèle de fonctions récursives est utilisé, le processus de preuve mettant en jeu des techniques inductives permet un raisonnement générique sur la taille du circuit. Le résultat présenté ici est une heuristique de généralisation de théorèmes inductifs spécialisée pour les modèles fonctionnels considérés. Cette méthode permet de produire les théorèmes généralisés ainsi que certains lemmes intermédiaires et d'automatiser ainsi le processus de vérification. La seconde partie propose une méthode de modélisation et de validation de programmes distribués sur les réseaux d'interconnexion symétriques. Les preuves sont ici paramétrées sur l'ordre du réseau (nombre de processeurs). Le modèle formel choisi pour la représentation des réseaux dans l'environnement de démonstration automatique est basé sur le concept de graphe de Cayley. Notre méthode prend en compte les opérations de communications collectives (diffusion, distribution, réduction) utilisées par les applications distribuées. La modélisation et la méthode de preuve développées permettent entre autres de s'abstraire du problème des communications point à point, et de raisonner au niveau du processeur. De plus, elle permet d'obtenir automatiquement les invariants nécessaires au preuves.
Les systèmes embarqués rendent un nombre de services grandissant et font partie de notre vie quotidienne : ascenseurs, transports, téléphonie, médecine, énergie, industrie, etc. Ainsi, si l’on parle de plus en plus de systèmes embarqués, il s’agit avant tout d’un ensemble complet et intégré (matériel + logiciel). Le point central de leur développement est leur interaction avec leur environnement et les conséquences associées en termes de sécurité et de fiabilité. Cet ouvrage dresse un état de l’art du développement des systèmes embarqués. Il se concentre particulièrement sur leur modélisation et leur analyse. Il s’agit d’opérations cruciales qui détermineront la fiabilité du futur système. L’apparition récente des techniques basées sur l’ingénierie des modèles pourrait révolutionner le développement de ces systèmes en assurant une continuité entre le niveau conceptuel et l’implémentation de la partie logicielle. L’ouvrage expose trois approches parmi les plus utilisées : SysML (aspects ingénierie système), UML/MARTE et AADL (conception/analyse).
Aujourd’hui, de nombreux systèmes à base de composants sont critiques ; leur fonctionnement requiert un niveau de confiance maximal. Les méthodes formelles comme le Model-Checking sont utilisées pour garantir les propriétés cruciales, avec un haut degré d'automatisation. Cependant, le Model-Checking souffre d'explosion combinatoire lorsque les systèmes deviennent trop grands. Cette thèse propose un cadre de description haut niveau, où la vérification accompagne la modélisation du système, et limite le problème de l'explosion par une vérification modulaire des composants du système. L'approche se base sur les observateurs, qui s'exécutent en parallèle d’un système sans en modifier le comportement global et permettent de décrire des propriétés. La modularité de la vérification vient de la possibilité de remplacer avec sûreté tout ou partie d'un système par un autre. Ceci est rendu possible par l'utilisation conjointe du Model-Checking et de l’Interprétation Abstraite, ce qui assure le calcul d'un sur-ensemble des comportements du système. Alors que l'Interprétation Abstraite introduit des approximations, les observateurs permettent de distinguer des états qui auraient été fusionnés pour gagner la précision nécessaire. Ils pilotent les analyses en introduisant des instants d'observation. Décrits par l'utilisateur, ils permettent une mise au point interactive des états à fusionner. Notre approche s'intègre dans le cycle de développement d'un système où raffinements et abstractions sont légions. Nous définissons le langage SystemD, proche de SystemC, intégrant la description, la spécification et la vérification de systèmes, tout en restant accessible au monde de l'ingénierie.
A cause de la complexité croissante des systèmes sur puce (SoC), la vérification devient un aspect très important : 70 - 80% du coût de conception est alloué à cette tâche. Plus de 60% des projets de développement d'ASIC doivent être repris à cause des erreurs fonctionnelles, environ 50% des erreurs de conception étant situées au niveau du module. Dans le monde industriel, la vérification est souvent synonyme de simulation - une méthode de vérification naturelle pour les concepteurs, mais qui ne garantit pas l'absence d'erreurs. Une alternative est fournie par la vérification formelle qui prouve mathématiquement qu'un circuit satisfait une spécification. Dans cette thèse, on s'intéresse aux méthodes déductives basées sur la démonstration de théorèmes. La démonstration de théorèmes permet de vérifier formellement des descriptions matérielles de haut niveau et des systèmes réguliers ou très complexes, car la taille de données n'a plus d'importance. Par contre la modélisation de la description matérielle se fait directement en logique, ce qui rend l'accès difficile pour les concepteurs. Notre travail a pour but de faciliter l'introduction des outils de démonstration de théorèmes dans le flot de conception. Nous proposons une méthode automatique de traduction d'un circuit VHDL vers un modèle sémantique basé sur des équations récurrentes par rapport au temps qui peut être l'entrée de tout outil de démonstration de théorèmes et nous définissons une approche de vérification adaptée au modèle. Afin de valider notre proposition, nous avons choisi le démonstrateur ACL2 pour vérifier une bibliothèque de circuits de cryptographie.
A cause de la complexité croissante des systèmes sur puce (SoC), la vérification devient un aspect très important : 70 - 80% du coût de conception est alloué à cette tâche. Plus de 60% des projets de développement d'ASIC doivent être repris à cause des erreurs fonctionnelles, environ 50% des erreurs de conception étant situées au niveau du module. Dans le monde industriel, la vérification est souvent synonyme de simulation - une méthode de vérification naturelle pour les concepteurs, mais qui ne garantit pas l'absence d'erreurs. Une alternative est fournie par la vérification formelle qui prouve mathématiquement qu'un circuit satisfait une spécification. Dans cette thèse, on s'intéresse aux méthodes déductives basées sur la démonstration de théorèmes. La démonstration de théorèmes permet de vérifier formellement des descriptions matérielles de haut niveau et des systèmes réguliers ou très complexes, car la taille de données n'a plus d'importance. Par contre la modélisation de la description matérielle se fait directement en logique, ce qui rend l'accès difficile pour les concepteurs. Notre travail a pour but de faciliter l'introduction des outils de démonstration de théorèmes dans le flot de conception. Nous proposons une méthode automatique de traduction d'un circuit VHDL vers un modèle sémantique basé sur des équations récurrentes par rapport au temps qui peut être l'entrée de tout outil de démonstration de théorèmes et nous définissons une approche de vérification adaptée au modèle. Afin de valider notre proposition, nous avons choisi le démonstrateur ACL2 pour vérifier une bibliothèque de circuits de cryptographie.
En dépit de l'efficacité des méthodes formelles, en particulier les techniques d'analyse de modèles (model checking), à identifier les violations des exigences dans les modèles de conception, leur utilisation au sein des processus de développement industriel demeure limitée. Ceci est dû principalement à la complexité des modèles manipulés au cours de ces processus (explosion combinatoire) et à la difficulté de produire des représentations formelles afin d'exploiter les outils de vérification existants. Fort de ce constat, mes travaux de thèse contribuent au développement d'un volet méthodologique définissant les activités conduisant à l'obtention des artefacts formels. Ceux-ci sont générés directement à partir des exigences et des modèles de conception manipulés par les ingénieurs dans leurs activités de modélisation. Nos propositions s'appuient sur les travaux d'exploitation des contextes pour réduire la complexité de la vérification formelle, en particulier le langage CDL. Pour cela, nous avons proposé une extension des cas d'utilisation, afin de permettre la description des scénarios d'interaction entre le système et son environnement directement dans le corps des cas d'utilisation. Aussi, nous avons proposé un langage de spécification des exigences basé sur le langage naturel contrôlé pour la formalisation des exigences. Cette formalisation est opérée par transformations de modèle générant des propriétés CDL formalisées directement des exigences textuelles des cahiers des charges ainsi que les contextes CDL à partir des cas d'utilisations étendus. L'approche proposée a été instanciée sur un cas d'étude industriel de taille et de complexité réelles développées par notre partenaire industriel.
Ce travail s'inscrit dans le cadre des recherches touchant au domaine de la sécurite informatique. Plus spécifiquement, il poursuit les travaux menés sur la vérification formelle de protocoles cryptographiques au moyen de logiques modales ou bien de méthodes formelles à usage général. le but d'une vérification formelle est d'analyser un protocole cryptographique dans le but de : @ vérifier que le protocole remplit bien sa mission de distribution de secrets et garantit la confidentialité et l'integrité de ces secrets, @ déceler toute omission dans la conception du protocole qui rendrait ce dernier vulnérable aux attaques d'un intrus. Nous montrons qu'il est possible de vérifier des protocoles de taille importante tels que le protocole sesame et qu'il est possible de faire ce type de vérifications de manière semi-automatique en transposant l'approche (ou bien la logique) dans l'environnement de preuves coq. Pour ce faire, nous poursuivons trois objectifs : 1. identifier de manière précise les principales exigences à satisfaire pour concevoir une méthode formelle prenant en compte les préoccupations des concepteurs de protocoles cryptographiques et les propriétés de sécurité essentielles. 2. Vérifier certaines propriétés de sécurité sur le système d'authentification sesame telles que la distribution de clés, la confidentialité des secrets et la fiabilité de la délégation. Ces vérifications sont effectuées dans l'environnement de preuves coq où le protocole est décrit et les propriétés à satisfaire sont décrites puis prouvées. 3. Définir une ébauche de logique des connaissances et du temps et l'utiliser pour exprimer puis prouver les principales propriétés de sécurité en se basant sur les résultats obtenus en 1). La description des protocoles peut être obtenue au moyen d'un utilitaire prenant en entrée une description du protocole sous la forme de messages et renvoyant en sortie des spécifications coq.