4,214 research outputs found

    Analyse statique d'un calcul d'acteurs par interprétation abstraite

    Get PDF
    The Actor model, introduced by HEWITT and AGHA in the late 80s, describes a concurrent communicating system as a set of autonomous agents, with non uniform interfaces and communicating by the use of labeled messages. The CAP process calculus, proposed by COLAÇO, is based on this model and allows to describe non trivial realistic systems, without the need of complex encodings. CAP is a higher-order calculus: messages can carry actor behaviors. Multiple works address the analysis of CAP properties, mainly by the use of inference-based type systems using behavioral types and sub-typing. Otherwise, more recent works, by VENET and later FERET, propose the use of abstract interpretation to analyze process calculi. These approaches allow to compute non-uniform properties. For example, they are able to differentiate recursive instances of the same thread. This thesis is at the crossroad of these two approaches, applying abstract interpretation to the analysis of CAP. Following the framework of FERET, CAP is firstly expressed in a non standard form, easing its analysis. The set of reachable states is then over-approximated via a sound by construction representation within existing abstract domains. New general abstract domains are then introduced in order to improve the accuracy of existing analyses or to represent local properties. CAP specific properties such as the linearity of terms or the absence of orphan messages, are then considered in this framework. Specific abstract domains are defined and used to check these properties. The proposed framework is able to relax any existing restriction of previous analyses such as constraints on the shape of terms or limitation in the use of CAP behavior passing. The whole analyses have been implemented in a prototype.Le modĂšle des Acteurs, introduit par HEWITT et AGHA Ă  la fin des annĂ©es 80, dĂ©crit un systĂšme concurrent comme un ensemble d'agents autonomes au comportement non uniforme et communiquant de façon point-Ă -point par l'envoi de messages Ă©tiquetĂ©s. Le calcul CAP, proposĂ© par COLAÇO, est un calcul de processus basĂ© sur ce modĂšle qui permet de dĂ©crire sans encodage complexe des systĂšmes rĂ©alistes non triviaux. Ce calcul permet, entre autre, la communication de comportements via les messages et est, en ce sens, un calcul d'ordre supĂ©rieur. L'analyse de propriĂ©tĂ©s sur ce calcul a dĂ©jĂ  fait l'objet de plusieurs travaux, essentiellement par infĂ©rence de type en utilisant des types comportementaux et du sous-typage. Par ailleurs, des travaux plus rĂ©cents, effectuĂ©s par VENET puis FERET, proposent une utilisation de l'interprĂ©tation abstraite pour l'analyse de calculs de processus. Ces approches permettent de calculer des propriĂ©tĂ©s non uniformes : elles permettent, par exemple, de diffĂ©rencier les instances rĂ©cursives d'un mĂȘme processus. Cette thĂšse s'inscrit donc dans la suite de ces deux approches, en appliquant l'interprĂ©tation abstraite Ă  l'analyse de CAP. Suivant le cadre proposĂ© par FERET, CAP est, tout d'abord, exprimĂ© dans une forme non standard facilitant les analyses. L'ensemble des configurations atteignables est ensuite sur-approximĂ© via une reprĂ©sentation, correcte par construction, dans des domaines abstraits. Des domaines abstraits gĂ©nĂ©raux sont ensuite introduits afin d'amĂ©liorer les analyses existantes ou de reprĂ©senter des propriĂ©tĂ©s locales Ă  un sous-terme. Des propriĂ©tĂ©s spĂ©cifiques Ă  CAP, la linĂ©aritĂ© des termes et l'absence de messages orphelins, sont alors Ă©tudiĂ©es dans ce cadre. Des domaines spĂ©cifiques sont dĂ©finis et utilisĂ©s pour vĂ©rifier ces propriĂ©tĂ©s. Le cadre prĂ©sentĂ© permet de lever toutes les restrictions existantes des analyses prĂ©cĂ©dentes quant Ă  la forme des termes ou l'utilisation du passage de comportement. L'intĂ©gralitĂ© des analyses prĂ©sentĂ©es a Ă©tĂ© implantĂ©e dans un prototype

    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

    Détermination de propriétés de flot de données pour améliorer les estimations de temps d'exécution pire-cas

    Get PDF
    La recherche d'une borne supĂ©rieure au temps d'exĂ©cution d'un programme est une partie essentielle du processus de vĂ©rification de systĂšmes temps-rĂ©el critiques. Les programmes de tels systĂšmes ont gĂ©nĂ©ralement des temps d'exĂ©cution variables et il est difficile, voire impossible, de prĂ©dire l'ensemble de ces temps possibles. Au lieu de cela, il est prĂ©fĂ©rable de rechercher une approximation du temps d'exĂ©cution pire-cas ou Worst-Case Execution Time (WCET). Une propriĂ©tĂ© cruciale de cette approximation est qu'elle doit ĂȘtre sĂ»re, c'est-Ă -dire qu'elle doit ĂȘtre garantie de majorer le WCET. Parce que nous cherchons Ă  prouver que le systĂšme en question se termine en un temps raisonnable, une surapproximation est le seul type d'approximation acceptable. La garantie de cette propriĂ©tĂ© de sĂ»retĂ© ne saurait raisonnablement se faire sans analyse statique, un rĂ©sultat se basant sur une sĂ©rie de tests ne pouvant ĂȘtre sĂ»r sans un traitement exhaustif des cas d'exĂ©cution. De plus, en l'absence de certification du processus de compilation (et de transfert des propriĂ©tĂ©s vers le binaire), l'extraction de propriĂ©tĂ©s doit se faire directement sur le code binaire pour garantir leur fiabilitĂ©. Toutefois, cette approximation a un coĂ»t : un pessimisme - Ă©cart entre le WCET estimĂ© et le WCET rĂ©el - important entraĂźne des surcoĂ»ts superflus de matĂ©riel pour que le systĂšme respecte les contraintes temporelles qui lui sont imposĂ©es. Il s'agit donc ensuite, tout en maintenant la garantie de sĂ©curitĂ© de l'estimation du WCET, d'amĂ©liorer sa prĂ©cision en rĂ©duisant cet Ă©cart de telle sorte qu'il soit suffisamment faible pour ne pas entraĂźner des coĂ»ts supplĂ©mentaires dĂ©mesurĂ©s. Un des principaux facteurs de surestimation est la prise en compte de chemins d'exĂ©cution sĂ©mantiquement impossibles, dits infaisables, dans le calcul du WCET. Ceci est dĂ» Ă  l'analyse par Ă©numĂ©ration implicite des chemins ou Implicit Path Enumeration Technique (IPET) qui raisonne sur un surensemble des chemins d'exĂ©cution. Lorsque le chemin d'exĂ©cution pire-cas ou Worst-Case Execution Path (WCEP), correspondant au WCET estimĂ©, porte sur un chemin infaisable, la prĂ©cision de cette estimation est nĂ©gativement affectĂ©e. Afin de parer Ă  cette perte de prĂ©cision, cette thĂšse propose une technique de dĂ©tection de chemins infaisables, permettant l'amĂ©lioration de la prĂ©cision des analyses statiques (dont celles pour le WCET) en les informant de l'infaisabilitĂ© de certains chemins du programme. Cette information est passĂ©e sous la forme de propriĂ©tĂ©s de flot de donnĂ©es formatĂ©es dans un langage d'annotation portable, FFX, permettant la communication des rĂ©sultats de notre analyse de chemins infaisables vers d'autres analyses. Les mĂ©thodes prĂ©sentĂ©es dans cette thĂšse sont inclues dans le framework OTAWA, dĂ©veloppĂ© au sein de l'Ă©quipe TRACES Ă  l'IRIT. Elles usent elles-mĂȘmes d'approximations pour reprĂ©senter les Ă©tats possibles de la machine en diffĂ©rents points du programme. Ce sont des abstractions maintenues au fil de l'analyse, et dont la validitĂ© est assurĂ©e par des outils de la thĂ©orie de l'interprĂ©tation abstraite. Ces abstractions permettent de reprĂ©senter de maniĂšre efficace - mais sĂ»re - les ensembles d'Ă©tats pour une classe de chemins d'exĂ©cution jusqu'Ă  un point du programme, et de dĂ©tecter d'Ă©ventuels points du programme associĂ©s Ă  un ensemble d'Ă©tats possibles vide, traduisant un (ou plusieurs) chemin(s) infaisable(s). L'objectif de l'analyse dĂ©veloppĂ©e, la dĂ©tection de tels cas, est rendue possible par l'usage de solveurs SMT (SatisfiabilitĂ© Modulo des ThĂ©ories). Ces solveurs permettent essentiellement de dĂ©terminer la satisfiabilitĂ© d'un ensemble de contraintes, dĂ©duites Ă  partir des Ă©tats abstraits construits. Lorsqu'un ensemble de contraintes, formĂ© Ă  partir d'une conjonction de prĂ©dicats, s'avĂšre insatisfiable, aucune valuation des variables de la machine ne correspond Ă  un cas d'exĂ©cution possible, et la famille de chemins associĂ©e est donc infaisable. L'efficacitĂ© de cette technique est soutenue par une sĂ©rie d'expĂ©rimentations sur divers suites de benchmarks, reconnues dans le domaine du WCET statique et/ou issues de cas rĂ©els de l'industrie. Des heuristiques sont configurĂ©es afin d'adoucir la complexitĂ© de l'analyse, en particulier pour les applications de plus grande taille. Les chemins infaisables dĂ©tectĂ©s sont injectĂ©s sous la forme de contraintes de flot linĂ©aires dans le systĂšme de Programmation LinĂ©aire en Nombres Entiers ou Integer Linear Programming (ILP) pilotant le calcul final de l'analyse WCET d'OTAWA. Selon le programme analysĂ©, cela peut rĂ©sulter en une rĂ©duction du WCET estimĂ©, et donc une amĂ©lioration de sa prĂ©cision.The search for an upper bound of the execution time of a program is an essential part of the verification of real-time critical systems. The execution times of the programs of such systems generally vary a lot, and it is difficult, or impossible, to predict the range of the possible times. Instead, it is better to look for an approximation of the Worst-Case Execution Time (WCET). A crucial requirement of this estimate is that it must be safe, that is, it must be guaranteed above the real WCET. Because we are looking to prove that the system in question terminates reasonably quickly, an overapproximation is the only acceptable form of approximation. The guarantee of such a safety property could not sensibly be done without static analysis, as a result based on a battery of tests could not be safe without an exhaustive handling of test cases. Furthermore, in the absence of a certified compiler (and tech- nique for the safe transfer of properties to the binaries), the extraction of properties must be done directly on binary code to warrant their soundness. However, this approximation comes with a cost : an important pessimism, the gap between the estimated WCET and the real WCET, would lead to superfluous extra costs in hardware in order for the system to respect the imposed timing requirements. It is therefore important to improve the precision of the WCET by reducing this gap, while maintaining the safety property, as such that it is low enough to not lead to immoderate costs. A major cause of overestimation is the inclusion of semantically impossible paths, said infeasible paths, in the WCET computation. This is due to the use of the Implicit Path Enumeration Technique (IPET), which works on an superset of the possible execution paths. When the Worst-Case Execution Path (WCEP), corresponding to the estimated WCET, is infeasible, the precision of that estimation is negatively affected. In order to deal with this loss of precision, this thesis proposes an infeasible paths detection technique, enabling the improvement of the precision of static analyses (namely for WCET estimation) by notifying them of the infeasibility of some paths of the program. This information is then passed as data flow properties, formatted in the FFX portable annotation language, and allowing the communication of the results of our infeasible path analysis to other analyses. The methods hereafter presented are included in the OTAWA framework, developed in TRACES team at the IRIT lab. They themselves make use of approximations in order to represent the possible states of the machine in various program points. These approximations are abstractions maintained throughout the analysis, and which validity is ensured by abstract interpretation tools. They enable us to represent the set of states for a family of execution paths up to a given program point in an efficient - yet safe - way, and to detect the potential program points associated to an empty set of possible states, signalling one (or several) infeasible path(s). As the end goal of the developed analysis, the detection of such cases is made possible by the use of Satisfiability Modulo Theory (SMT) solvers. Those solvers are notably able to determine the satisfiability of a set of contraints, which we deduct from the abstract states. If a set of constraints, derived from a conjonction of predicates, is unsatisfiable, then there exists no valuation of the machine variables that match a possible execution case, and thus the associated infeasible paths are infeasible. The efficiency of this technique is asserted by a series of experiments on various benchmarks suites, some of which widely recognized in the domain of static WCET, some others derived from actual industrial applications. Heuristics are set up in order to soften the complexity of the analysis, especially for the larger applications. The detected infeasible paths are injected as Integer Linear Programming (ILP) linear data flow constraints in the final computation for the WCET estimation in OTAWA. Depending on the analysed program, this can result in a reduction of the estimated WCET, thereby improving its precision

    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

    VĂ©rification de contraintes temporelles strictes sur des programmes par composition d'analyses partielles

    Get PDF
    Les systĂšmes temps-rĂ©el critiques doivent impĂ©rativement obĂ©ir Ă  des contraintes temporelles strictes. Le respect de ces contraintes doit donc ĂȘtre prouvĂ©, et le calcul de pire temps d'exĂ©cution (WCET ou Worst Case Execution Time) joue un rĂŽle important dans cette preuve. Le calcul de WCET par analyse statique est gĂ©nĂ©ralement rĂ©alisĂ© sur un programme entier. Ceci prĂ©sente deux inconvĂ©nients : la plupart de ces mĂ©thodes de calcul voient leur temps d'exĂ©cution augmenter de maniĂšre non linĂ©aire par rapport Ă  la taille de la tĂąche Ă  analyser, et un problĂšme se pose lorsque cette tĂąche est constituĂ©e de plusieurs composants (dont certains ne sont pas disponibles au moment de l'analyse). Il est donc nĂ©cessaire d'introduire une approche d'analyse partielle, permettant d'analyser sĂ©parĂ©ment les composants d'un programme, produisant un rĂ©sultat de WCET partiel pour chaque composant. Ces rĂ©sultats partiels peuvent ensuite ĂȘtre composĂ©s pour obtenir le WCET du programme. Le calcul de WCET comporte plusieurs analyses dont les rĂ©sultats sont exprimĂ©s sous forme d'un systĂšme ILP, qui doit ensuite ĂȘtre rĂ©solu pour obtenir le WCET. Chaque analyse doit ĂȘtre adaptĂ©e pour faire de l'analyse partielle. Cette adaptation sera illustrĂ©e Ă  l'aide de diverses analyses existantes, et une formulation gĂ©nĂ©rale pour l'analyse partielle sera donnĂ©e. Il sera ensuite montrĂ© qu'il est possible d'utiliser l'analyse partielle afin d'accĂ©lĂ©rer la rĂ©solution ILP. L'expĂ©rimentation montre que l'analyse partielle permet de rĂ©duire le temps de calcul et de traiter le cas des programmes avec composants, sans rajouter trop de pessimisme.Hard real-time systems are subject to real-time constraints. It is necessary to prove that no constraint violation can occur, and the WCET (Worst Cast Execution Time) computation plays an important role in this proof. The WCET computation by static analysis is traditionally performed on a complete program. This approach has two drawbacks: most computation methods run in non linear time with respect to the size of the analysed program, and problems arise when this program is made up of multiple components (some components may be unavailable at analysis time). Therefore, it is necessary to introduce a partial analysis method, in order to process separately each program component, producing partial WCET results for each component. The partial results can then be composed to get the WCET of the whole program. The WCET computation by IPET (Implicit Path Enumeration Technique) involves several analyses, each one contributes to an ILP system, and this system is solved to get the WCET. To perform partial analysis, each analysis involved in WCET computation must be adapted. We illustrate this process by taking the example of several existing analyses, then a more general framework for partial analysis is described. Next, we show that it is possible to take advantage of partial analysis to speed up ILP solving. Our experimentations show that the partial analysis leads to faster WCET computation time and allows handling programs made up of components, without adding too much overestimation

    Élaboration d'un modùle d'impact du changement pour les applications Java

    Get PDF

    Analyse et optimisation globales de modules compilés séparément

    Full text link
    ThÚse numérisée par la Direction des bibliothÚques de l'Université de Montréal
    • 

    corecore