• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 239
  • 77
  • 22
  • 2
  • 1
  • Tagged with
  • 344
  • 139
  • 132
  • 97
  • 91
  • 87
  • 67
  • 63
  • 62
  • 49
  • 39
  • 38
  • 35
  • 29
  • 28
  • About
  • The Global ETD Search service is a free service for researchers to find electronic theses and dissertations. This service is provided by the Networked Digital Library of Theses and Dissertations.
    Our metadata is collected from universities around the world. If you manage a university/consortium/country archive and want to be added, details can be found on the NDLTD website.
31

Analyse de programmes probabilistes par interprétation abstraite

Monniaux, David 21 November 2001 (has links) (PDF)
L'étude de programmes probabilistes intéresse plusieurs domaines de l'informatique : les réseaux, l'embarqué, ou encore la compilation optimisée. C'est tâche malaisée, en raison de l'indécidabilité des propriétés sur les programmes déterministes à états infinis, en plus des difficultés provenant des aspects probabilistes.<br /><br />Dans cette thèse, nous proposons un langage de formules permettant de spécifier des propriétés de traces de systèmes de transition probabilistes et non-déterministes, englobant celles spécifiables par des automates de Büchi déterministes. Ces propriétés sont en général indécidables sur des processus infinis.<br /><br />Ce langage a à la fois une sémantique concrète en termes d'ensembles de traces et une sémantique abstraite en termes de fonctions mesurables. Nous appliquons ensuite des techniques d'interprétation abstraite pour calculer un majorant de la probabilité dans le pire cas de la propriété étudiée et donnons une amélioration de cette technique lorsque l'espace d'états est partitionné, par exemple selon les points de programme. Nous proposons deux domaines abstraits convenant pour cette analyse, l'un paramétré par un domaine abstrait non probabiliste, l'autre modélisant les gaussiennes étendues.<br /><br />Il est également possible d'obtenir de tels majorants par des calculs propageant les mesures de probabilité en avant. Nous donnons une méthode d'interprétation abstraite pour analyser une classe de formules de cette façon et proposons deux domaines abstraits adaptés à ce type d'analyse, l'un paramétré par un domaine abstrait non probabiliste, l'autre modélisant les queues sous-exponentielles. Ce dernier permet de prouver la terminaison probabiliste de programmes.<br /><br />Les méthodes décrites ci-dessus sont symboliques et ne tirent pas parti des propriétés statistiques des probabilités. Nous proposons d'autre part une méthode de Monte-Carlo abstrait, utilisant des interpréteurs abstraits randomisés.
32

Vérification symbolique pour les protocoles de communication

Bozga, Dorel Marius 17 December 1999 (has links) (PDF)
L'utilisation des méthodes formelles pour la conception de protocoles de télécommunication est désormais reconnue comme la seule approche en mesure de garantir leur bon fonctionnement avant la mise en service. Cependant, la complexité toujours croissante ainsi que les contraintes de fiabilité et de sûreté de plus en plus sévères nécessitent l'extension des formalismes de description et l'amélioration continue des méthodes et des techniques de validation. Cette thèse définit une représentation intermédiaire nommé IF pour la description de protocoles. IF est construit à base d'automates temporisés communicants à échéances. Les échéances permettent la modélisation explicite de l'urgence des actions et sont un moyen très fin pour décrire l'évolution temporelle d'un système. Les automates communiquent soit de manière asynchrone, par files d'attente, soit de manière synchrone par rendez-vous. La sémantique opérationnelle de IF est formellement définie et des techniques de simulation efficaces sont proposées. De plus, ayant une structure statique, IF permet l'application intensive des techniques d'analyse statique, comme par exemple celles issues du domaine de l'optimisation de code. Certains informations calculées de cette manière peuvent améliorer considérablement les performances de la validation automatique. Une plate-forme ouverte de validation a été mise en place autour de IF. Elle intègre un grand nombre d'outils autant académiques que industriels et couvre la plupart des techniques actuellement employées pour la vérification et le test des protocoles. Cette plate-forme a été utilisée avec beaucoup de succès sur des protocoles de communication réels, comme par exemple SSCOP ou STARI.
33

Génération automatique de tests de conformité pour les protocoles de télécommunication

Ghirvu, Constantin Lucian 12 July 2002 (has links) (PDF)
Ce travail se situe dans le cadre de la vérification et de la validation des systèmes répartis, particulièrement les protocoles de télécommunication. Nous nous sommes intéressés au problème de la génération automatique de tests de conformité pour les protocoles de télécommunication et plus précisément à l'utilisation, en amont de TGV (un outil de génération de séquences de test), de techniques d'analyse statique. La génération de test de conformité fondée sur des techniques de vérification par modèles (l'approche employée par TGV) est limitée par le problème d'explosion d'état. Même si ce problème, dans la pratique, peut être contourné (en choisissant le fonctionnement à la volée de TGV), quelque aspects de cette méthode (par exemple la conception des objectifs de test pour un modèle, sans le construire explicitement) posent encore des problèmes. Dans notre thèse on propose une méthodologie de test basée sur des techniques issues des domaines de la vérification et de l'analyse statique. Cette méthodologie consiste en un ensemble de procédures qui ont pour but de simplifier la spécification en tenant compte de sa structure ou de la structure des objectifs de test et cela avant de la génération des cas de test. On réduit ainsi la taille des modèles observables des spécifications. Nous avons étendu aussi le concept de l'objectif de test. Les objectifs de test abstraits ont des contraintes symboliques attachées aux paramètres des signaux d'entrée. À partir des contraintes d'entrée les procédures mentionnées ci-dessus calculent des contraintes pour les paramètres des signaux de sortie des objectifs de test abstraits. Ensuite, des objectifs de test concrets pourront être dérivés et en utilisant l'outil de test existant TGV on pourrait générer des tests de conformité
34

De la nécessité d'une vision holistique du code pour l'analyse statique et la correction automatique des Applications Web

Levointurier, Christophe 08 December 2011 (has links) (PDF)
L'omniprésence de l'informatique a comme conséquences, parmi d'autres, la multiplication du volume logiciel existant et en cours de développement pour répondre à une demande toujours croissante. Cette course à la productivité implique une industrialisation de la production de code sous contrôle qualitatif de plus en plus exigeante.Cette thèse tend à repousser des limites constatées dans le domaine de la qualité logicielle. Ces limites perceptibles dans les outils actuels concernent (1) le périmètre d'analyse, (2) l'ergonomie et les contextes d'utilisation, ainsi que (3) les solutions de correction du code proposées.Le point prépondérant de cette étude est la valorisation de l'ensemble des contenus qui entrentdans la composition d'une application pour améliorer les performances de l'analyse statique.Cette approche nous a permis d'obtenir des réponses plus complètes pour les problématiques déjà couvertes par l'existant. Cette diversité des sources nous a également permis de formuler des nouvelles analyses plus spécifiques et mieux adaptées aux caractéristiques de l'application cible. Nous avons aussi montré que la parallélisation de l'exécution et la possible automatisation de corrections aux problèmes trouvés lors de l'analyse permettent d'appliquer rapidement un nombre important de transformations sur un code volumineux.
35

De la sémantique opérationnelle à la spécification formelle de compilateurs: l'exemple des boucles en Esterel

Tardieu, Olivier 24 September 2004 (has links) (PDF)
Esterel est un langage impératif concurrent pour la programmation des systèmes réactifs. A l'exception de l'instruction "pause", les primitives du langage s'exécutent sans consommer de temps logique. L'exécution se décompose donc en une suite d'instants. Dans ce contexte, les boucles peuvent poser deux types de problèmes: d'une part une boucle instantanée peut bloquer l'écoulement du temps; d'autre part un bloc de code peut être traversé plusieurs fois au cours du même instant, conduisant à un comportement du programme dit "schizophrène". Les boucles instantanées sont proscrites par la sémantique. Elles doivent donc être détectées par les compilateurs et les programmes correspondants doivent être rejetés. Par ailleurs, la compilation efficace des programmes schizophrènes est difficile. Ainsi, alors que plusieurs compilateurs pour Esterel sont disponibles, les algorithmes employés pour compiler les boucles ne sont ni portables, ni formellement spécifiés, et encore moins prouvés. Dans ce document, nous étudions les boucles en Esterel, établissant une correspondance formelle entre la sémantique opérationnelle du langage et l'implémentation concrète d'un compilateur. Après avoir spécifié les problèmes posés par les boucles, nous développons des techniques d'analyse statique efficaces pour les détecter dans un code Esterel quelconque. Puis, de façon à guérir la schizophrénie, c'est à dire transformer efficacement les programmes schizophrènes en programmes non schizophrènes, nous introduisons dans le langage une nouvelle primitive appelée "gotopause". Elle permet de transférer le contrôle d'un point du programme à un autre de façon non instantanée, mais sans contrainte de localité. Elle préserve le modèle de concurrence synchrone d'Esterel. Nous décrivons un premier algorithme qui, en dépliant les boucles à l'aide de cette nouvelle instruction, produit pour tout programme Esterel correct un programme non schizophrène équivalent. Enfin, en combinant analyse statique et réécriture, nous obtenons un préprocesseur qui rejette les boucles instantanées et guérit la schizophrénie, à la fois portable et très efficace. Nous l'avons implémenté. De plus, grâce à une approche formelle de bout en bout, nous avons pu prouver la correction de ce préprocesseur.
36

Analyses Statiques pour Manipulations de Données Structurées Hiérarchiquement

Schmitt, Alan 23 May 2011 (has links) (PDF)
Selon le Larousse, un programme informatique est un "ensemble d'instructions et de données représentant un algorithme et susceptible d'être exécuté par un ordinateur." Une forte adéquation entre instructions et données est donc nécessaire afin d'éviter tout dysfonctionnement d'un programme. Nous nous sommes ainsi intéressés ces dernières années aux analyses statiques, réalisées avant l'exécution du programme, permettant de garantir que la manipulation des données se passera correctement. Nous illustrerons nos recherches sur ce thème en considérant trois grandes familles de données: les arbres non ordonnés, les arbres ordonnés (dont XML), et les programmes eux-mêmes en tant que données. Dans chacun de ces domaines, nous avons conçu des analyses statiques, sous forme de système de types ou de bisimulations, adaptés à plusieurs problématiques telles que la manipulation de messages dans un système à composants, les langages bidirectionnels, la manipulation de XML ou les calculs de processus d'ordre supérieur avec passivation.
37

Typer la désérialisation sans sérialiser les types

Henry, Grégoire 17 June 2011 (has links) (PDF)
Le typage statique des langages de programmation garantit des propriétés de sûreté d'exécution des programmes et permet l'usage de représentations de données dénuées d'informations de types. En présence de primitives de (dé)sérialisation, ces données brutes peuvent invalider les propriétés apportées par le typage statique. Il est alors utile de pouvoir tester dynamiquement la compatibilité des données lues avec le type statique attendu. Cette thèse définit, dans le cadre des langages de programmation basés sur un système de types avec polymorphisme paramétrique et utilisant une représentation uniforme des données, une notion de compatibilité d'un graphe mémoire (désérialisé) avec un type ; cette notion s'exprime sous la forme de contraintes de types sur les nœuds du graphe mémoire. Cette formalisation permet de construire un mécanisme de résolution de contraintes par réécriture, puis un algorithme de vérification de compatibilité d'un graphe mémoire avec un type. Les propriétés de correction et de complétude de l'algorithme obtenu sont étudiées en présence de types algébriques, de données modifiables, de cycles et de valeurs fonctionnelles. Cette thèse propose également un prototype pour le compilateur OCaml.
38

Contributions à l'analyse statique de programmes manipulant des tableaux

Péron, Mathias 22 September 2010 (has links) (PDF)
Si l'analyse automatique des accès aux tableaux a été largement étudiée, on trouve très peu de résultats convaincants sur l'analyse du contenu des tableaux. Pour une telle analyse, les analyses numériques sont centrales. Notamment, si l'on découvre l'invariant i ≠ j, on évite d'affaiblir la connaissance sur a[j] lors d'une affectation à a[i]. Nous proposons une nouvelle analyse numérique faiblement relationnelle, combinant des contraintes de zones (x - y ≤ c ou ±x ≤ c) à des contraintes de non-égalités (x ≠ y ou x ≠ 0). Cette analyse a une complexité en O(n4), si les variables prennent leur valeurs dans un ensemble dense. Dans le cas arithmétique, décider de la satisfaisabilité d'une conjonction de telles contraintes est un problème NP-complet. Nous proposons une analyse en O(n4) également pour ce cas. Au cœur des analyses du contenu des tableaux on trouve aussi des analyses de partitionnement symbolique. Pour une boucle " for i = 1 to n ", où un tableau est accédé à la cellule i, il est nécessaire de considérer le contenu des tableaux sur les tranches [1, i - 1], [i, i] et [i + 1, n] pour être précis. Nous définissons une analyse de partitionnement sémantique, puis une analyse du contenu des tableaux basée sur ses résultats. Cette dernière associe à chaque tranche φ une propriété ψ dont les variables représentent le contenu des tableaux sur cette tranche. La propriété ψ est interprétée cellule-par-cellule, ainsi pour φ = [1, i - 1] et ψ = (a = b + 1) il est exprimé que ∀ k ∈ [1, i - 1], a[k] = b[k] + 1. Les résultats expérimentaux montrent que notre analyse automatique est efficace et précise, sur une classe de programmes simples : tableaux unidimensionnels, indexés par une variable au plus (x + c ou c), traversés par des boucles, imbriquées ou non, avec des compteurs suivant une progression arithmétique. Elle découvre par exemple que le résultat d'un tri par insertion est un tableau trié, ou que durant le parcours d'un tableau gardé par une "sentinelle", tous les accès à ce tableau sont corrects.
39

Préservation des preuves et transformation de programmes

Kunz, César 03 February 2009 (has links) (PDF)
Le paradigme du code mobile implique la distribution des applications par les producteurs de code à environnements hétérogènes dans lesquels elles sont exécutées. Une pratique étendue de ce paradigme est constituée par le développement d'applications telles que les applets ou les scripts Web, transferés à travers un réseau non sécurisé comme Internet à des systèmes distants, par exemple un ordinateur, un téléphone mobile ou un PDA (Assistant personnel). Naturellement, cet environnement peux ouvrir la porte au déploiement de programmes malveillants dans des plateformes distantes. Dans certains cas, la mauvaise conduite du code mobile ne constitue pas un risque grave, par exemple lorsque l'intégrité des données affectées par l'exécution n'est pas critique ou lorsque l'architecture d'exécution impose de fortes contraintes sur les capacités d'exécution du code non sécurisé. Il y a toujours, toutefois, des situations dans lesquelles il est indispensable de vérifier la correction fonctionnelle du code avant son exécution, par exemple lorsque la confidentialité de données critiques comme l'information des cartes de crédit pourrait être en danger, ou lorsque l'environnement d'exécution ne possède pas un mécanisme spécial pour surveiller la consommation excessive des ressources. George Necula a proposé une technique pour apporter de la confiance aux consommateurs sur la correction du code sans faire confiance aux producteurs. Cette technique, Proof Carrying Code (PCC), consiste à déploier le code avec une preuve formelle de sa correction. La correction est une propriété inhérente du code reçuu qui ne peut pas être directement déduite du producteur du code. Naturellement, cela donne un avantage à PCC quant-aux méthodes basées sur la confiance à l'autorité d'un tiers. En effet, une signature d'une autorité ne suffit pas à fournir une confiance absolue sur l'exécution du code reçu. Depuis les origines du PCC, le type de mécanisme utilisé pour générer des certificats repose sur des analyses statiques qui font partie du compilateur. Par conséquent, en restant automatique, il est intrinsèquement limité à des propriétés très simples. L'augmentation de l'ensemble des propriétés à considerer est difficile et, dans la plupart des cas, cela exige l'interaction humaine. Une possibilité consiste à vérifier directement le code exécutable. Toutefois, l'absence de structure rend la vérification du code de bas niveau moins naturelle, et donc plus laborieuse. Ceci, combiné avec le fait que la plupart des outils de vérification ciblent le code de haut niveau, rend plus appropriée l'idée de transferer la production de certificats au niveau du code source. Le principal inconvénient de produire des certificats pour assurer l'exactitude du code source est que les preuves ne comportent pas la correction du code compilé. Plusieurs techniques peuvent etre proposées pour transférer la preuve de correction d'un programme à sa version exécutable. Cela implique, par exemple, de déployer le programme source et ses certificats originaux (en plus du code exécutable) et de certifier la correction du processus de compilation. Toutefois, cette approche n'est pas satisfaisante, car en plus d'exiger la disponibilité du code source, la longueur du certificat garantissant la correction du compilation peut être prohibitive. Une alternative plus viable consiste à proposer un mécanisme permettant de générer des certificats de code compilé à partir des certificats du programme source. Les compilateurs sont des procédures complexes composées de plusieurs étapes, parmi lesquelles le programme original est progressivement transformé en représentations intermédiaires. Barthe et al. et Pavlova ont montré que les certificats originaux sont conservés, à quelques différences près non significatives, par la première phase de compilation: la compilation non optimale du code source vers une représentation non structurée de niveau intermédiaire. Toutefois, les optimisations des compilateurs sur les représentations intermédiaires représentent un défi, car a priori les certificats ne peuvent pas être réutilisés. Dans cette thèse, nous analysons comment les optimisations affectent la validité des certificats et nous proposons un mécanisme, Certificate Translation, qui rend possible la génération des certificats pour le code mobile exécutable à partir des certificats au niveau du code source. Cela implique transformer les certificats pour surmonter les effets des optimisations de programme.
40

Développement d'éléments finis de coque pour le calcul des ouvrages d'art

Ait-Ali, L'Houcine 27 June 1984 (has links) (PDF)
L'objectif de ce travail est la mise au point et le test d'une série d'éléments finis de coque permettant de prendre en compte l'essentiel des situations rencontrées dans le calcul des ouvrages d'art. Pour ce faire, nous avons ainsi considéré trois catégories d'éléments : - Nous avons tout d'abord étudié les éléments de plaque en flexion à 3 et 4 noeuds (DKT et DKQ) basés sur les hypothèses de Love-Kirchhoff sous forme discrète. Après avoir étendu leur formulation pour permettre le calcul de coques de forme quelconque et d'épaisseur variable, nous avons effectué une série de tests numériques (plaque, coque cylindrique, structure de type caisson, barrage-voûte) qui permettent d'évaluer leurs performances. - Nous avons par la suite étudié le comportement des éléments de coque épaisse à 8 noeuds basés sur les hypothèses cinématiques de Mindlin. Les tests numériques effectués nous ont permis de vérifier que ces éléments sont très adaptés au calcul des structures épaisses et des structures dans lesquelles les effets de membrane sont importants. - Pour permettre l'étude de structures coques comportant des parties massives devant être modélisées par des éléments tridimensionnels, nous avons également étudié des éléments de coque épaisse de type tridimensionnel à 16 ou 12 noeuds permettant grâce à des éléments de transition une connection facile avec les éléments massifs.

Page generated in 0.0494 seconds