Analyse de programmes par interprétation abstraite

Documents pareils
Grandes lignes ASTRÉE. Logiciels critiques. Outils de certification classiques. Inspection manuelle. Definition. Test

Étude de l'analyse statique de programmes synchrones par interprétation abstraite

1/24. I passer d un problème exprimé en français à la réalisation d un. I expressions arithmétiques. I structures de contrôle (tests, boucles)

Rappel. Analyse de Données Structurées - Cours 12. Un langage avec des déclaration locales. Exemple d'un programme

IN Cours 1. 1 Informatique, calculateurs. 2 Un premier programme en C

2. Comprendre les définitions de classes

Algorithmique et Programmation, IMA

Qualité du logiciel: Méthodes de test

Resolution limit in community detection

Cours d Algorithmique-Programmation 2 e partie (IAP2): programmation 24 octobre 2007impérative 1 / 44 et. structures de données simples

IRL : Simulation distribuée pour les systèmes embarqués

Déroulement. Evaluation. Préambule. Définition. Définition. Algorithmes et structures de données 28/09/2009

Programmer en JAVA. par Tama

Quatrième partie IV. Test. Test 15 février / 71

UE C avancé cours 1: introduction et révisions

Utilisation de l analyse statique comme outil d aide au développement. par. Yves Gauthier

Cloud computing et sécurité

Les structures de données. Rajae El Ouazzani

Éléments d informatique Cours 3 La programmation structurée en langage C L instruction de contrôle if

Model checking temporisé

Cours de Génie Logiciel

1. Structure d un programme C. 2. Commentaire: /*..texte */ On utilise aussi le commentaire du C++ qui est valable pour C: 3.

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Contexte et motivations Les techniques envisagées Evolution des processus Conclusion

Chp. 4. Minimisation d une fonction d une variable

Introduction au langage C

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

La programmation linéaire : une introduction. Qu est-ce qu un programme linéaire? Terminologie. Écriture mathématique

Des réels aux flottants : préservation automatique de preuves de stabilité de Lyapunov


I Stabilité, Commandabilité et Observabilité Introduction Un exemple emprunté à la robotique Le plan Problème...

Modélisation aléatoire en fiabilité des logiciels

DG-ADAJ: Une plateforme Desktop Grid

Chapitre 3. Les distributions à deux variables

Communications collectives et ordonnancement en régime permanent pour plates-formes hétérogènes

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Examen Médian - 1 heure 30

Chapitre 5 : Flot maximal dans un graphe

MIS 102 Initiation à l Informatique

Surveillance et maintenance prédictive : évaluation de la latence de fautes. Zineb SIMEU-ABAZI Univ. Joseph Fourier, LAG)

Vérification et Validation

Organigramme / Algorigramme Dossier élève 1 SI

Exclusion Mutuelle. Arnaud Labourel Courriel : arnaud.labourel@lif.univ-mrs.fr. Université de Provence. 9 février 2011

Rappels sur les suites - Algorithme

Calculabilité Cours 3 : Problèmes non-calculables.

Analyse de sécurité de logiciels système par typage statique

INF 321 : mémento de la syntaxe de Java

Présentation du langage et premières fonctions

Introduction à la Programmation Parallèle: MPI

Programmation linéaire

Conception des systèmes répartis

Principes des langages de programmation INF 321. Eric Goubault

Tutoriel LabVIEW Des fonctions simples à l acquisition de données

Eléments de Théorie des Graphes et Programmation Linéaire

Algorithmique, graphes et programmation dynamique Notes de Cours Rapport de Travaux Pratiques. Laurent Canet

Cours de Master Recherche

Pourquoi l apprentissage?

Algorithmique I. Algorithmique I p.1/??

Programmes des classes préparatoires aux Grandes Ecoles

Cours d algorithmique pour la classe de 2nde

Reconstruction de bâtiments en 3D à partir de nuages de points LIDAR

Vérification formelle de la plate-forme Java Card

Introduction aux algorithmes répartis

//////////////////////////////////////////////////////////////////// Administration bases de données

Info0101 Intro. à l'algorithmique et à la programmation. Cours 3. Le langage Java

MABioVis. Bio-informatique et la

Claude Delannoy. 3 e édition C++

Java Licence Professionnelle CISII,

SUPPORT DE COURS. Langage C

données en connaissance et en actions?

Sanity Check. bgcolor mgcolor fgcolor

Algorithmes pour la planification de mouvements en robotique non-holonome

Souad EL Bernoussi. Groupe d Analyse Numérique et Optimisation Rabat http ://

4. Groupement d objets

Résolution de systèmes linéaires par des méthodes directes

Système de contrôle du trafic d une ligne de métro Dossier de tests

FICHE UE Licence/Master Sciences, Technologies, Santé Mention Informatique

Cours de C++ François Laroussinie. 2 novembre Dept. d Informatique, ENS de Cachan

Conditions : stage indemnisé, aide au logement possible, transport CEA en Ile-de-France gratuit.

Baccalauréat ES Pondichéry 7 avril 2014 Corrigé

La Licence Mathématiques et Economie-MASS Université de Sciences Sociales de Toulouse 1

Problèmes liés à la concurrence

Master de Recherche première année. Programme de cours

Modélisation multi-agents - Agents réactifs

Sujet 4: Programmation stochastique propriétés de fonction de recours

Les processus légers : threads. Système L3, /31

ANALYSE DE TEMPS D EXÉCUTION POUR DES APPLICATIONS TEMPS-RÉEL CHRISTINE ROCHANGE. Plan. Niveau de criticité. Système temps-réel

Matrice d accès. Master SEMS, Pierre Paradinas. October 16, 2013

Algorithmique et structures de données I

Algorithmique et programmation : les bases (VBA) Corrigé

Compte-rendu d habilitation : Modélisation à haut niveau d abstraction pour les systèmes embarqués

Inf IREM N 89 SOMMAIRE

Les arbres binaires de recherche

SHERLOCK 7. Version du 01/09/09 JAVASCRIPT 1.5

Raisonnement probabiliste

Architecture des ordinateurs TD1 - Portes logiques et premiers circuits

Un ordonnanceur stupide

Calcul Scientifique et Symbolique, Logiciels Licence Mathématiques UE N1MA3003. Alain Yger

Modélisation et Simulation

Les diagrammes de modélisation

Transcription:

Analyse de programmes par interprétation abstraite Marc PEGON marc.pegon@ensimag.imag.fr Ensimag - Grenoble INP Encadrants David MONNIAUX Matthieu MOY 1 / 21

Analyse statique : obtenir automatiquement des informations sur le comportement d un programme, sans réellement l exécuter model-checking interprétation abstraite Outils d analyse utilisés dans l industrie : Polyspace, Astrée, Coverity (?).. Contribution : développement d un outil d analyse de programmes C par interprétation abstraite 2 / 21

1 2 Objectif LLVM Apron Algorithme simplifié 3 3 / 21

Plan 1 2 3 4 / 21

Prouver des propriétés de sûreté (débordements arithmétiques, divisions par 0,..) Etat indésirable = Point de programme + Valeurs des variables Idée : Déterminer toutes les valeurs prises par les variables Problème : Trop complexe (théorie) Solution : Approximation (Abstraction) 5 / 21

Calcul d intervalles Calculer un intervalle de valeurs possibles pour chaque variable Exemple // x [2, 5] y = 2 * x; // y [4, 10] if (y <= 4) { z = y - 2; // z [2, 2] } else { z = y + 2; // z [7, 12] } // z [2, 12] 6 / 21

Et avec des boucles? Rechercher un invariant : Exemple x = 2; // [2, 2], [2, 4],.., [2, 12], [2, 12] while (x <= 10) { x += 2; // [4, 4], [4, 6],.., [4, 12] } //,,.., [11, 12] 7 / 21

Elargissement Introduction Extrapolation pour accélérer/permettre la convergence Exemple x = 2; // [2, 2], [2, 4] [2, + [, [2, 12] [2, + [ while (x <= 10) { x += 2; // [4, 4], [4, 12] } //, [11, + [ 8 / 21

Réduction de l invariant Par un pas de calcul supplémentaire Exemple x = 2; // [2, + [, [2, 12] while (x <= 10) { x += 2; // [4, 12], [4, 12] } // [11, + [, [11, 12] 9 / 21

Problème avec les intervalles : aucune relation entre les variables Exemple // x [0, 1] y = x; // y [0, 1] z = x-y; // z [ 1, 1] 10 / 21

Problème avec les intervalles : aucune relation entre les variables Exemple // x [0, 1] y = x; // y [0, 1] z = x-y; // z [ 1, 1] Solution : polyèdres convexes 10 / 21

Objectif LLVM Apron Algorithme simplifié Plan 1 2 Objectif LLVM Apron Algorithme simplifié 3 11 / 21

Objectif LLVM Apron Algorithme simplifié Vérifier des propriétés : check Faire des hypothèses sur les variables : assume Analyseur correct (sound) Ne se trompe jamais quand il ne signale pas d erreur Peut émettre des fausses alarmes Exemple assume(x >= 5); y = x / 2; check(y > 0); 12 / 21

Objectif LLVM Apron Algorithme simplifié On n analyse pas directement du code C Représentation intermédiaire : bitcode LLVM Programme : graphe de flot de contrôle Noeuds : blocs de base Arcs : sauts (conditionnels ou non) 13 / 21

Objectif LLVM Apron Algorithme simplifié int i = 2; int j = 0; while (i+j <= 20){ if (i >= 10) { i += 4; } else if (j <= 4){ i += 2; j++; } } i+j > 20 i 10 i+j 20 i > 10 ^ j 4 14 / 21

Objectif LLVM Apron Algorithme simplifié Utilisation de Apron pour les calculs sur les polyèdres (enveloppe convexe, affectation,..) Apron = bibliothèque de calcul pour les domaines numériques abstraits Intervalles Egalités linéaires Octogones Polyèdres convexes Interface commune entre différentes bibliothèques de calcul une ligne à changer dans le code de l analyseur pour changer de domaine 15 / 21

Objectif LLVM Apron Algorithme simplifié Calcul d un polyèdre par bloc de base : approximation supérieure des états possibles du programme au niveau de ce bloc prédécesseurs b successeurs Arrêt quand tous les polyèdres sont stabilisés Phase de descente : visite des blocs sans élargissement 16 / 21

Plan 1 2 3 17 / 21

Peu de lignes de code ( 1000) Analyseur correct Limitations : Seule la fonction main est analysée Variables numériques entières uniquement Entiers = éléments de Z 18 / 21

Exemple i n t i = 2 ; i n t j = 0 ; while ( i <= 10) { i = i + 2 ; j = j + 1 ; check ( i == 2 ( j +1) ) ; } } check ( j == 5) ; Les deux propriétés sont prouvées automatiquement par l analyseur. 19 / 21

Perspectives Introduction Analyse de plusieurs fonctions et gestion des appels de fonction Gestion des variables flottantes (possible grâce à Apron) Gestion des variables booléennes (model checking?) Réduction des invariants (en élargissant en moins de points) Evaluation et amélioration des performances (réduire le nombre de dimensions,..) 20 / 21

Merci 21 / 21