Download Free Amelioration Des Processus De Verification De Programmes Par Combinaison Des Methodes Formelles Avec Lingenierie Dirigee Par Les Modeles Book in PDF and EPUB Free Download. You can read online Amelioration Des Processus De Verification De Programmes Par Combinaison Des Methodes Formelles Avec Lingenierie Dirigee Par Les Modeles and write the review.

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.
Il y a une tendance croissante à considérer les processus d'une organisation comme l'une de ses grandes forces. Les processus sont des ressources réutilisables d'une organisation qui définissent les procédures de travail pour la réalisation de ses objectifs. Avec l'importance croissante du secteur des logiciels et des services, la standardisation des processus devient indispensable pour maintenir sa crédibilité. Le développement de processus suit un cycle de vie très similaire à celui du développement logiciel. Par exemple, il se compose de plusieurs phases et suit une approche incrémentale qui mène à son amélioration continue. Cette approche incrémentale peut être complétée par une stratégie basée sur le raffinement pour développer, exécuter et maintenir les processus de développement de logiciels.Cette thèse propose une base conceptuelle pour le développement de processus logiciels par raffinement, sans perdre de vue les exigences spécifiques de chaque phase du cycle de vie d'un tel processus. Elle utilise l'ingénierie dirigée par les modèles pour présenter un ensemble de méta-modèles pour le développement de processus logiciels où chaque méta-modèle correspond à une phase différente d'un processus (spécification, implémentation et instanciation). Le modèle d'un processus traverse une série de raffinement jusqu'à ce qu'elle soit enrichie par des capacités d'exécution. Le développement d'un interpréteur permet d'exécuter ce modèle. Il donne la possibilité de relier les modèles des differentes phases par des liens de traçabilité. Les intervenants peuvent interagir avec le processus en exécution à l'aide d'une interface de supervision. Un niveau de variabilité incluse dans les modèles de processus permet leur adaptation pendant l'exécution. Tout en prenant en compte la nécessité de se conformer aux standards adoptés par l'organisation, l'architecture de l'approche de modélisation proposée exploite le concept d'abstraction en s'inspirant de la notion de composant logiciel pour aider à la réutilisation de modèles de processus. Notre méthode est également prévue pour les entreprises qui veulent suivre plusieurs standards pour le même projet.Sur la base des connaissances acquises grâce à l'étude des langages de modélisation actuels du domaine, le cadre proposé pour la modélisation de processus présente une architecture qui se développe autour des concepts de «conception par contrat» et «conception pour et par la réutilisation». Ceci permet de construire un modèle de processus qui a une structure modulaire et garantit la correction des interactions entre des activités constituantes. Afin de favoriser la séparation des préoccupations, les flux de données au sein d'un processus sont gérés à un niveau d'abstraction différent de celui des flux de contrôle. La conformité entre ces deux niveaux permet d'offrir une architecture bicouche. Le flux de données lors de l'exécution est assuré par un système de gestion d'événements. Une évaluation des capacités de l'approche proposée est fournie par une analyse basée sur l'ensemble des «workflow patterns». Cela permet une comparaison directe de ses capacités avec d'autres approches de modélisation de processus
This book constitutes the refereed proceedings of the 13th International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI 2012, held in Philadelphia, PA, USA, in January 2012, co-located with the Symposium on Principles of Programming Languages, POPL 2012. The 26 revised full papers presented were carefully reviewed and selected from 70 submissions. The papers cover a wide range of topics including program verification, model checking, abstract interpretation, static analysis, deductive methods, program certification, debugging techniques, abstract domains, type systems, and optimization.
This book constitutes the refereed proceedings of the 14th International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI 2013, held in Rome, Italy, in January 2013, co-located with the Symposium on Principles of Programming Languages, POPL 2013. The 27 revised full papers presented were carefully reviewed and selected from 72 submissions. The papers cover a wide range of topics including program verification, model checking, abstract interpretation and abstract domains, program synthesis, static analysis, type system, deductive methods, program certification, debugging techniques, program transformation, optimization, hybrid and cyber-physical systems.
Model checking is a powerful approach for the formal verification of software. It automatically provides complete proofs of correctness, or explains, via counter-examples, why a system is not correct. Here, the author provides a well written and basic introduction to the new technique. The first part describes in simple terms the theoretical basis of model checking: transition systems as a formal model of systems, temporal logic as a formal language for behavioral properties, and model-checking algorithms. The second part explains how to write rich and structured temporal logic specifications in practice, while the third part surveys some of the major model checkers available.
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.
Avec l'évolution des technologies, la complexité des systèmes informatiques ne cesse de s'accroître. Parmi ces systèmes, on retrouve les logiciels critiques qui doivent offrir une garantie de sûreté de fonctionnement qui s'avère crucial et pour lesquels un dysfonctionnement peut avoir des conséquences graves. Les méthodes formelles fournissent des outils permettant de garantir mathématiquement l'absence de certaines erreurs. Ces méthodes sont indispensables pour assurer les plus hauts niveaux de sûreté. Mais l'application de ces méthodes sur un code système bas niveau se heurte à des difficultés d'ordre pratique et théorique. Les principales difficultés concernent la prise en compte des aspects bas niveau, comme les pointeurs et les interactions avec le matériel spécifique. De plus, le fait que ces systèmes soient concurrents conduit à une augmentation exponentielle du nombre de comportements possibles, ce qui rend plus difficile leur vérification. Dans cette thèse, nous proposons une méthodologie pour la spécification et la vérification par model-checking de ce type de systèmes, en particulier, ceux implémentés en C. Cette méthodologie est basée sur la traduction de la sémantique de C en TLA+, un langage de spécification formel adapté à la modélisation de systèmes concurrents. Nous avons proposé un modèle de mémoire et d'exécution d'un programme C séquentiel en TLA+. En se basant sur ce modèle, nous avons proposé un ensemble de règles de traduction d'un code C en TLA+ que nous avons implémenté dans un outil, appelé C2TLA+. Nous avons montré comment ce modèle peut s'étendre pour modéliser les programmes C concurrents et gérer la synchronisation entre plusieurs processus ainsi que leur ordonnancement. Pour réduire la complexité du model-checking, nous avons proposé une technique permettant de réduire significativement la complexité de la vérification. Cette réduction consiste pour un code C à agglomérer une suite d'instructions lors de la génération du code TLA+, sous réserve d'un ensemble de conditions.Nous avons appliqué la méthodologie proposée dans cette thèse sur un cas d'étude réel issu de l'implémentation d'un micronoyau industriel,sur lequel nous avons vérifié un ensemble de propriétés fonctionnelles. L'application de la réduction a permis de réduire considérablement le temps de la vérification, ce qui la rend utilisable en pratique.Les résultats ont permis d'étudier le comportement du système, de vérifier certaines propriétés et de trouver des bugs indétectables par des simples tests.
This book constitutes the refereed proceedings of the 19th International Conference on Verification, Model Checking, and Abstract Interpretation, VMCAI 2018, held in Los Angeles, CA, USA, in January 2018.The 24 full papers presented together with the abstracts of 3 invited keynotes and 1 invited tutorial were carefully reviewed and selected from 43 submissions. VMCAI provides topics including: program verification, model checking, abstract interpretation, program synthesis, static analysis, type systems, deductive methods, program certification, decision procedures, theorem proving, program certification, debugging techniques, program transformation, optimization, and hybrid and cyber-physical systems.