• Refine Query
  • Source
  • Publication year
  • to
  • Language
  • 54
  • 44
  • 11
  • Tagged with
  • 112
  • 112
  • 54
  • 51
  • 51
  • 50
  • 29
  • 28
  • 21
  • 21
  • 20
  • 19
  • 17
  • 16
  • 15
  • 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.
11

Types abstraits et bases de données‎‎ : formalisation de la notion de partage et analyse statique des contraintes d'intégrité

Sales, Ana Maria 24 April 1984 (has links) (PDF)
Une base de données est au service de plusieurs catégories d'utilisateurs ayant chacune sa vision personnelle et évolutive des différentes sortes d'objets d'un univers. L'application systématique du concept d'abstraction a permis de dégager la notion d'objet pouvant être vu selon différentes facettes, appartenir à plusieurs ensembles et/ou relations, tout en demeurant unique. Ces objets sont spécifiés à l'aide de p-types, concept défini dans le cadre des types abstraits algébriques. La définition d'un p-type est modulaire et évolutive; une vue du p-type est caractérisée par des fonctions attributs et des contraintes d'intégrité. Les contraintes étudiées sont les dépendances entre valeurs d'attributs d'une occurrence d'un p-type (DIA) et les dépendances inter-objets (DIO). L'analyse statique de ces contraintes permet de garantir leur cohérence et de minimiser les vérifications dynamiques
12

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.
13

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.
14

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é
15

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.
16

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.
17

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.
18

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.
19

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.
20

Analyse des systèmes mobiles par interprétation abstraite.

Feret, Jérôme 25 February 2005 (has links) (PDF)
Un système mobile est un ensemble de composants qui peuvent interagir entre eux, tout en modifiant dynamiquement le système lui-même. Ces interactions contrôlent ainsi la création et la destruction des liaisons entre les composants, mais aussi la création dynamique de nouveaux composants au sein du système. La taille d'un tel système varie au cours du temps, elle n'est pas bornée en général. Un système mobile peut représenter des réseaux de télécommunication, des systèmes reconfigurables, des applications client-serveur sur la toile, des protocoles cryptographiques, ou des systèmes biologiques. Plusieurs modèles sont disponibles selon le domaine d'application et la granularité du niveau d'observation. Dans cette thèse, nous proposons un cadre de travail unifiant pour découvrir et prouver statiquement (avant leur exécution) et automatiquement les propriétés des systèmes mobiles. Nous proposons un méta-langage dans lequel nous encodons les modèles les plus couramment utilisés dans la littérature (le p-calcul, le calcul des ambients, le join-calcul, le spi-calcul, les BIO-ambients, etc). Pour chaque modèle encodé, le méta-langage calcule une sémantique enrichie dans laquelle à la fois les composants et les objets qu'ils manipulent (adresses mémoires, noms de canaux, clefs secrètes ou partagées, etc) sont identifiés par l'historique de leur création. Ainsi, nous n'utilisons pas de relation de congruence (ni de renommage), ce qui rend l'analyse plus facile. Le cadre général de l'Interprétation Abstraite nous permet ensuite de dériver des sémantiques abstraites, qui sont décidables, correctes, et approchées. Dans cette thèse, nous donnons trois analyses génériques que nous instancions selon le compromis désiré entre le temps de calcul et la précision de l'analyse. La première analyse se concentre sur les propriétés dynamiques du système. Elle infère des relations entre les historiques des objets qui sont manipulés par les composants du système. Cette analyse distingue les instances récursives d'un même objet, et ce, même lorsque le nombre de ces instances n'est pas borné. à titre d'exemple, cette analyse prouve dans le cas d'une application client-serveur à nombre illimité de clients, que les données de chaque client ne sont pas communiquées aux autres clients. La deuxième analyse se concentre sur des propriétés de concurrence. Cette analyse compte le nombre de composants du système. Elle permet de détecter que certains composants ne peuvent pas interagir, car ils ne coexistent jamais. Elle peut aussi garantir à un système qu'il n'épuisera pas les ressources physiques disponibles. Une troisième analyse mêle concurrence et dynamicité.

Page generated in 0.148 seconds