636 research outputs found

    Analyse statique de valeurs par interprétation abstraite de programmes fonctionnels manipulant des types algébriques récursifs

    Get PDF
    National audienceAfin de prévenir les erreurs de programmation, des analyseurs statiques ont été développés pour de nombreux langages ; cependant, aucun analyseur mature ne cible l'analyse de valeurs pour un langage fonctionnel à la ML. Des outils de vérification pour ces langages existent, tels les systÚmes de types classiques ou les méthodes déductives, mais le raisonnement automatique sur des programmes numériques a jusqu'alors été peu exploré. Cet article décrit un analyseur statique de valeurs par interprétation abstraite pour un langage fonctionnel typé du premier ordre, approche sûre et automatique pour garantir l'absence d'erreurs à l'exécution. En se basant sur des domaines abstraits relationnels et en réalisant des résumés des champs récursifs des types algébriques, cette approche permet d'analyser des fonctions récursives manipulant des types algébriques récursifs et d'inférer dans un domaine abstrait leur relation entrée-sortie. Une implémentation est en cours sur la plateforme d'analyse multilangage MOPSA et analyse avec succÚs de courts programmes de quelques lignes. Ce travail ouvre ainsi la voie vers une analyse de valeurs précise et relationnelle basée sur l'interprétation abstraite pour les langages fonctionnels d'ordre supérieur à la ML

    Environnement d'assistance au développement de transformations de graphes correctes

    Get PDF
    Les travaux de cette thĂšse ont pour cadre la vĂ©rification formelle, et plus spĂ©cifiquement le projet ANR Blanc CLIMT (Categorical and Logical Methods in Model Transformation) dĂ©diĂ© aux grammaires de graphes. Ce projet, qui a dĂ©marrĂ© en fĂ©vrier 2012 pour une durĂ©e de 48 mois, a donnĂ© lieu Ă  la dĂ©finition du langage Small-tALC, bĂąti sur la logique de description ALCQI. Ce langage prend la forme d’un DSL (Domain Specific Language) impĂ©ratif Ă  base de rĂšgles, chacune dĂ©rivant structurellement un graphe. Le langage s’accompagne d’un composant de preuve basĂ© sur la logique de Hoare chargĂ© d’automatiser le processus de vĂ©rification d’une rĂšgle. Cependant, force est de constater que tous les praticiens ne sont pas nĂ©cessairement familiers avec les mĂ©thodes formelles du gĂ©nie logiciel et que les transformations sont complexes Ă  Ă©crire. En particulier, ne disposant que du seul prouveur, il s’agit pour le dĂ©veloppeur Small-tALC d’écrire un triplet de Hoare {P} S {Q} et d’attendre le verdict de sa correction sous la forme d’un graphe contre-exemple en cas d’échec. Ce contre-exemple est parfois difficile Ă  dĂ©crypter, et ne permet pas de localiser aisĂ©ment l’erreur au sein du triplet. De plus, le prouveur ne valide qu’une seule rĂšgle Ă  la fois, sans considĂ©rer l’ensemble des rĂšgles de transformation et leur ordonnancement d’exĂ©cution. Ce constat nous a conduits Ă  proposer un environnement d’assistance au dĂ©veloppeur Small-tALC. Cette assistance vise Ă  l’aider Ă  rĂ©diger ses triplets et Ă  prouver ses transformations, en lui offrant plus de rĂ©troaction que le prouveur. Pour ce faire, les instructions du langage ont Ă©tĂ© revisitĂ©es selon l’angle ABox et TBox de la logique ALCQI. Ainsi, conformĂ©ment aux logiques de description, la mise Ă  jour du graphe par la rĂšgle s’assimile Ă  la mise Ă  jour ABox des individus (les nƓuds) et de leurs relations (les arcs) d’un domaine terminologique TBox (le type des nƓuds et les Ă©tiquettes des arcs) susceptible d’évoluer. Les contributions de cette thĂšse concernent : (1) un extracteur de prĂ©conditions ABox Ă  partir d’un code de transformation S et de sa postcondition Q pour l’écriture d’une rĂšgle {P} S {Q} correcte par construction, (2) un raisonneur TBox capable d’infĂ©rer des propriĂ©tĂ©s sur des ensembles de nƓuds transformĂ©s par un enchaĂźnement de rĂšgles {Pi} Si {Qi}, et (3) d’autres diagnostics ABox et TBox sous la forme de tests afin d’identifier et de localiser des problĂšmes dans les programmes. L’analyse statique du code de transformation d’une rĂšgle, combinĂ©e Ă  un calcul d’alias des variables dĂ©signant les nƓuds du graphe, permet d’extraire un ensemble de prĂ©conditions ABox validant la rĂšgle. Les infĂ©rences TBox pour un enchaĂźnement de rĂšgles rĂ©sultent d’une analyse statique par interprĂ©tation abstraite des rĂšgles ABox afin de vĂ©rifier formellement des Ă©tats du graphe avant et aprĂšs les appels des rĂšgles. A ces deux outils formels s’ajoutent des analyseurs dynamiques produisant une batterie de tests pour une rĂšgle ABox, ou un diagnostic TBox pour une sĂ©quence de rĂšgle

    Analyse ergonomique semi-quantitative des contraintes biomécaniques du rachis cervical parmi les opérateurs sur écran dans les établissements universitaires tunisiens

    Get PDF
    Introduction: Ă©valuer les contraintes biomĂ©caniques associĂ©es aux cervicalgies parmi les opĂ©rateurs sur Ă©cran. MĂ©thodes: Ă©tude ergonomique rĂ©alisĂ©e au prĂ©s de 325 opĂ©rateurs sur Ă©cran dans 25 Ă©tablissements de l’universitĂ© du centre tunisien, basĂ©e sur une Ă©tude anthropomĂ©trique du poste du travail sur Ă©cran et une analyse semi-quantitative sur des enregistrements vidĂ©o des activitĂ©s des travailleurs conduits sur une pĂ©riode reprĂ©sentative de 30 minutes. RĂ©sultats: la prĂ©valence des cervicalgies Ă©valuĂ©e Ă  72,3%, a concernĂ© une population de travailleurs qui exerçait avec un siĂšge et un plan de travail inadaptĂ©s (84,6%) et un Ă©cran bas situĂ© par rapport au regard horizontal (81,2%). L’analyse semi-quantitative par enregistrement vidĂ©o du poste de travail a conclu que la nuque Ă©tait maintenue en flexion franche de plus de 40 degrĂ©s sur 69% du temps global du travail. La flexion latĂ©rale a Ă©tĂ© visible sur 50,3% du temps de travail et la rotation droite ou gauche sur 57,4% du temps de travail. Ainsi, Les opĂ©rations de prise d’information de l’écran, de regard du clavier et de consultation des documents se sont dĂ©gagĂ©es comme les plus de contraignantes pour la nuque sur le plan gestuel et postural. Conclusion: nos rĂ©sultats mettent en Ă©vidence l’importance des contraintes biomĂ©caniques associĂ©es Ă  la conception du poste de travail sur Ă©cran non conforme aux dimensions anthropomĂ©triques ergonomiquement recommandĂ©es. Ces contraintes sont associĂ©es Ă  une prĂ©valence Ă©levĂ©e des cervicalgies traduisant la nĂ©cessitĂ© d’amĂ©nagement ergonomique de ces postes de travail pour prĂ©venir ce flĂ©au

    Le schéma : un écrit de savoir?

    Get PDF
    International audienceDans cet article, nous nous intéressons au schéma, dans le cadre de la résolution de problÚmes arithmétiques au début de l'école primaire (classe de C.P.). Ainsi, notre propos se situe à la fois dans le cadre d'une réflexion sur le schéma comme écrit de savoir, mais aussi dans le cadre d'une réflexion sur la résolution des problÚmes arithmétiques. Les " écrits de savoir " auxquels nous allons nous intéresser ici présentent une double caractéristique : - Ils ne donnent pas à lire un discours sur le monde, mais ils donnent à voir une activité réflexive sur des objets du monde, et au travers d'eux sur des relations entre des nombres, puisqu'il s'agit de schémas représentant la résolution d'un problÚme mathématique. - Ils ont été produits et sont utilisés par de jeunes élÚves qui ne sont ni des lecteurs ni des scripteurs confirmés, puisqu'ils sont au C.P

    Abstraction et vérification de programmes informatiques

    Get PDF
    Les systĂšmes informatiques offrent une grande flexibilitĂ© aux usagers en leur permettant l'accĂšs, notamment par le biais de rĂ©seaux de tĂ©lĂ©communication ou de l'Internet, Ă  un vaste Ă©ventail de services. Toutefois, certains de ces services sont soumis Ă  de fortes contraintes de sĂ©curitĂ©, comme le tĂ©lĂ©paiement qui est au coeur du commerce Ă©lectronique. Ainsi, les fournisseurs et les utilisateurs expriment des besoins croissants, et antagonistes, en sĂ©curitĂ©. RĂ©pondre Ă  ces deux besoins simultanĂ©ment est un enjeu technologique transversal Ă  de nombreux domaines de l'informatique. L'objectif de ce travail est de dĂ©velopper un mĂ©canisme permettant de garantir la sĂ©curitĂ© des systĂšmes, en s'appuyant sur l'expĂ©rience Ă©tablie dans le domaine de la sĂ©curitĂ© et des mĂ©thodes formelles. Pour se faire, nous dĂ©finissons un nouveau cadre de vĂ©rification des propriĂ©tĂ©s de sĂ©curitĂ© d'un programme informatique par l'analyse des flots de donnĂ©es et de contrĂŽle construits Ă  partir du code de ce dernier. L'idĂ©e principale consiste Ă  dĂ©finir un modĂšle pouvant abstraire la trace d'Ă©vĂ©nements et les dĂ©pendances de ressources engendrĂ©s au moment de l'exĂ©cution du programme, et pouvant ĂȘtre soumis Ă  des algorithmes de vĂ©rification de modĂšle (model-checking) pour l'analyse de la sĂ»retĂ© du programme vis-Ă -vis d'une propriĂ©tĂ©

    Conception d'une grille d'analyse des langages de programmation utilisés en algorithmique dans le programme Techniques de l'informatique

    Get PDF
    L’algorithmique est le fondement logique de la programmation. La sĂ©lection d’un langage de programmation pour l’apprentissage et l’enseignement de l’algorithmique pour ordinateurs est une dĂ©cision d’une importance capitale. En effet, les rĂ©percussions de ce choix sont multiples et affectent profondĂ©ment les Ă©tudiants et Ă©tudiantes. La personne ou l’équipe responsable de ce choix porte une lourde responsabilitĂ© lors de cette prise de dĂ©cision. Malheureusement, peu d’outils encadrent la rĂ©flexion sur ce sujet. Cet essai dĂ©crit le processus de conception d’une grille d’analyse des langages de programmation permettant de guider le, la ou les responsables de ce choix. ConcrĂštement, l’objectif gĂ©nĂ©ral de cette recherche dĂ©veloppement est de concevoir une grille d’analyse des langages de programmation pour l’apprentissage et l’enseignement de l’algorithmique dans le cadre du programme Techniques de l’informatique au collĂ©gial quĂ©bĂ©cois pour permettre Ă  un enseignant, une enseignante ou une Ă©quipe de sĂ©lectionner le langage de programmation le plus appropriĂ© pour leurs Ă©tudiants et Ă©tudiantes, et pour faciliter leur rapport aux savoirs algorithmiques. À l’aide d’un cadre de rĂ©fĂ©rence de questionnement didactique selon Lapierre (2008) et en y intĂ©grant divers cadres de rĂ©fĂ©rences secondaires, cette recherche procĂ©dera Ă  l’atteinte des objectifs spĂ©cifiques suivants : 1. DĂ©gager les attributs d’un langage de programmation pour l’apprentissage et l’enseignement de l’algorithmique adaptĂ© aux besoins des cours de programmation introductifs en Techniques de l’informatique au niveau collĂ©gial quĂ©bĂ©cois. 2. Mettre au point une grille d’analyse des langages de programmation Ă  partir des attributs dĂ©gagĂ©s. 3. Valider la grille d’analyse auprĂšs de pairs quant Ă  son utilitĂ© pour le choix d’un langage de programmation appropriĂ©. La mĂ©thodologie encadrant la dĂ©marche de recherche est basĂ©e sur le modĂšle de recherche dĂ©veloppement proposĂ© par Loiselle et Harvey (2009). Ce modĂšle propose cinq phases macroscopiques : l’origine de la recherche, le rĂ©fĂ©rentiel, la mĂ©thodologie, l’opĂ©rationnalisation et les rĂ©sultats. La phase « origine de la recherche » du modĂšle est dĂ©taillĂ©e dans le chapitre 1 de cet essai, la problĂ©matique, tandis que la phase « rĂ©fĂ©rentiel » est dĂ©crite dans le chapitre 2, le cadre de rĂ©fĂ©rence. Le troisiĂšme chapitre de cet essai dĂ©crit la phase « mĂ©thodologie » de la recherche dĂ©veloppement. Finalement, les phases « opĂ©rationnalisation » et « rĂ©sultats » du modĂšle de Loiselle et Harvey sont prĂ©sentĂ©s ensemble dans le dernier chapitre de l’essai : la prĂ©sentation et l’interprĂ©tation des rĂ©sultats. Une premiĂšre version de la grille d’analyse des langages de programmation est produite pour ĂȘtre ensuite soumise Ă  des pairs pour une collecte de donnĂ©es. L’analyse de ces donnĂ©es permettra la crĂ©ation d’une version amĂ©liorĂ©e de la grille : ce sera le produit final issu du processus de dĂ©veloppement documentĂ© dans cet essai et elle est prĂ©sentĂ©e Ă  la fin du chapitre 4

    ComprĂ©hension d’un programme Ă  travers la segmentation et l’analyse des traces

    Get PDF
    L’analyse des traces permet aux ingĂ©nieurs logiciels de mieux comprendre le comportement des systĂšmes qu’ils gĂšrent et constituent donc un outil essentiel pour la rĂ©alisation de nombreuses tĂąches nĂ©cessitant une comprĂ©hension des systĂšmes complexes, notamment l’analyse de sĂ©curitĂ©, le dĂ©bogage et la maintenance. Cependant, la taille considĂ©rable des traces d’exĂ©cutions peut nuire Ă  l’efficacitĂ© de l’analyse des traces. Pour rĂ©soudre ce problĂšme, nous proposons dans ce mĂ©moire une approche de segmentation de la trace Ă  trois facteurs qui offre aux utilisateurs la possibilitĂ© de diviser une trace d’exĂ©cution volumineuse en un nombre rĂ©duit de segments, chacun correspondant Ă  une phase d’exĂ©cution distincte. Nous dĂ©montrons expĂ©rimentalement que cette mĂ©thode est plus efficace pour diviser une trace de maniĂšre concordante avec le comportement sous-jacent du programme que les algorithmes existants. Nous examinons Ă©galement la question de l’extraction d’élĂ©ments-clĂ©s Ă  partir d’une trace et dĂ©montrons une nouvelle fois expĂ©rimentalement que les traces segmentĂ©es en utilisant notre approche Ă  trois facteurs peuvent ĂȘtre plus facilement soumises Ă  cette analyse

    Contribution à la vérification de programmes C par combinaison de tests et de preuves

    Get PDF
    Software verification often relies on a formal specification encoding the program properties to check. Formally specifying and deductively verifying programs is difficult and time consuming and requires some knowledge about theorem provers. Indeed, a proof failure for a program can be due to a non-compliance between the code and its specification, a loop or callee contrat being insufficient to prove another property, or a prover incapacity. It is often difficult for the user to decide which one of these three reasons causes a given proof failure. Indeed, this feedback is not (or rarely) provided by the theorem prover thus requires a thorough review of the code and the specification.This thesis develops a method to automatically diagnose proof failures and facilitate the specification and verification task. This work takes place within the analysis framework for C programs FRAMA-C, that provides the specification language ACSL, the deductive verification plugin WP, and the structural test generator PATHCRAWLER. The proposed method consists in diagnosing proof failures using structural test generation on an instrumented version of the program under verification.La vĂ©rification de logiciels repose le plus souvent sur une spĂ©cification formelle encodant les propriĂ©tĂ©s du programme Ă  vĂ©rifier. La tĂąche de spĂ©cification et de vĂ©rification dĂ©ductive des programmes est longue et difficile et nĂ©cessite une connaissance des outils de preuve de programmes. En effet, un Ă©chec de preuve de programme peut ĂȘtre dĂ» Ă  une non-conformitĂ© du code par rapport Ă  sa spĂ©cification, Ă  un contrat de boucle ou de fonction appelĂ©e trop faible pour prouver une autre propriĂ©tĂ©, ou Ă  une incapacitĂ© du prouveur. Il est souvent difficile pour l’utilisateurde dĂ©cider laquelle de ces trois raisons est la cause de l’échec de la preuve car cette information n’est pas (ou rarement) donnĂ©e par le prouveur et requiert donc une revue approfondie du code et de la spĂ©cification.L’objectif de cette thĂšse est de fournir une mĂ©thode de diagnostic automatique des Ă©checs de preuve afin d’amĂ©liorer le processus de spĂ©cification et de preuve des programmes C. Nous nous plaçons dans le cadre de la plate-forme d’analyse des programmes C FRAMA-C, qui fournit un langage de spĂ©cification unique ACSL, un greffon de vĂ©rification dĂ©ductive WP et un gĂ©nĂ©rateur de tests structurels PATHCRAWLER. La mĂ©thode que nous proposons consiste Ă  diagnostiquer les Ă©checs de preuve en utilisant la gĂ©nĂ©ration de tests structurels sur une version instrumentĂ©e du programme d’origine

    CDL+CWS un langage de prototypes et son environnement

    Get PDF
    Le but du projet Ă©tait de crĂ©er un langage orientĂ© objet (CDL, Cards Definition Language) pour le prototypage rapide d'applications appartenant Ă  un mĂȘme domaine. Celui qui nous intĂ©ressait Ă©tait"les jeux de cartes solitaires". CWS, CardsWorkShop, reprĂ©sentĂ© l'environnement graphique multifenĂȘtres de dĂ©veloppement qui a Ă©tĂ© crĂ©Ă©, formĂ© d'un Ă©diteur de texte contextuel, un compilateur CDL, un interprĂšte de machine virtuelle et une bibliothĂšque d'objets et de codes prĂ©dĂ©finie.Le premier chapitre dĂ©crit certains principes d'une facette de la programmation orientĂ©e objet : les prototypes. La place de CDL parmi les prototypes est expliquĂ©e Ă  l'aide d'un exemple. La genĂšse de CDL et CWS est dĂ©crite, le tout suivi de la description du modĂšle CDL. Un second chapitre est dĂ©diĂ© Ă  la description du langage CDL. Nous verrons la syntaxe et la sĂ©mantique des Ă©lĂ©ments de base : constantes, variables, fonctions, objets et instances.Le troisiĂšme chapitre dĂ©crit l'implantation de l'environnement de dĂ©veloppement, CWS, le compilateur, l'interprĂšte et les objets prĂ©dĂ©finis
    • 

    corecore