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



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

Cours de Master Recherche

Programmes des classes préparatoires aux Grandes Ecoles

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

INITIATION AU LANGAGE C SUR PIC DE MICROSHIP

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

Cours 1 : La compilation

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

Les structures de données. Rajae El Ouazzani

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

Présentation du langage et premières fonctions

Suivant les langages de programmation, modules plus avancés : modules imbriqués modules paramétrés par des modules (foncteurs)

UEO11 COURS/TD 1. nombres entiers et réels codés en mémoire centrale. Caractères alphabétiques et caractères spéciaux.

Qualité du logiciel: Méthodes de test

Assurance Qualité. Cours de génie logiciel. Renaud Marlet. LaBRI / INRIA (d'après A.-M. Hugues) màj 23/04/2007

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

Introduction au langage C

Objets et Programmation. origine des langages orientés-objet

Utilisation des tableaux sémantiques dans les logiques de description

Calculer avec Sage. Revision : 417 du 1 er juillet 2010

EPREUVE OPTIONNELLE d INFORMATIQUE CORRIGE

Cours d Algorithmique et de Langage C v 3.0

Évaluation et implémentation des langages


ANALYSE CATIA V5. 14/02/2011 Daniel Geffroy IUT GMP Le Mans

Informatique Générale

Algorithmique et Programmation, IMA

Bases de programmation. Cours 5. Structurer les données

De l arithmétique d intervalles à la certification de programmes

Manuel d utilisation 26 juin Tâche à effectuer : écrire un algorithme 2

UE Programmation Impérative Licence 2ème Année

Processus d Informatisation

Jade. Projet Intelligence Artificielle «Devine à quoi je pense»

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

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

basée sur le cours de Bertrand Legal, maître de conférences à l ENSEIRB Olivier Augereau Formation UML

Initiation. àl algorithmique et à la programmation. en C

MABioVis. Bio-informatique et la

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

Principes des langages de programmation INF 321. Eric Goubault

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

Maple: premiers calculs et premières applications

Conventions d écriture et outils de mise au point

Représentation d un entier en base b

données en connaissance et en actions?

ALGORITHMIQUE ET PROGRAMMATION En C

Université du Québec à Chicoutimi. Département d informatique et de mathématique. Plan de cours. Titre : Élément de programmation.

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

LES OUTILS D ALIMENTATION DU REFERENTIEL DE DB-MAIN

Programmer en JAVA. par Tama

Chapitre 10 Arithmétique réelle

3. SPÉCIFICATIONS DU LOGICIEL. de l'expression des besoins à la conception. Spécifications fonctionnelles Analyse fonctionnelle et méthodes

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

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)

Introduction à MATLAB R

Organigramme / Algorigramme Dossier élève 1 SI

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

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

Traduction des Langages : Le Compilateur Micro Java

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

MIS 102 Initiation à l Informatique

L apprentissage automatique

2. Comprendre les définitions de classes

STAGE IREM 0- Premiers pas en Python

Introduction aux systèmes temps réel. Iulian Ober IRIT

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

1 Recherche en table par balayage

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

Java Licence Professionnelle CISII,

Exercices types Algorithmique et simulation numérique Oral Mathématiques et algorithmique Banque PT

Conception des systèmes répartis

Créer et modifier un fichier d'import des coordonnées approximatives avec Excel

Programmation en Java IUT GEII (MC-II1) 1

TP, première séquence d exercices.

ET 24 : Modèle de comportement d un système Boucles de programmation avec Labview.

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

Université de Bangui. Modélisons en UML

Complexité. Licence Informatique - Semestre 2 - Algorithmique et Programmation

Initiation à l algorithmique

Claude Delannoy. 3 e édition C++

Model checking temporisé

Travaux pratiques. Compression en codage de Huffman Organisation d un projet de programmation

Cours d initiation à la programmation en C++ Johann Cuenin

Introduction à la programmation orientée objet, illustrée par le langage C++ Patrick Cégielski

Centre CPGE TSI - Safi 2010/2011. Algorithmique et programmation :

Prénom : Matricule : Sigle et titre du cours Groupe Trimestre INF1101 Algorithmes et structures de données Tous H2004. Loc Jeudi 29/4/2004

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

Cours 1 : Qu est-ce que la programmation?

Rappels sur les suites - Algorithme

Le Collège de France crée une chaire pérenne d Informatique, Algorithmes, machines et langages, et nomme le Pr Gérard BERRY titulaire

LES TYPES DE DONNÉES DU LANGAGE PASCAL

Résumé Génération de code Le code intermédiaire

Algorithmique I. Algorithmique I p.1/??

Programmation Web. Madalina Croitoru IUT Montpellier

Eléments de spécification des systèmes temps réel Pierre-Yves Duval (cppm)

Génie Logiciel avec Ada. 4 février 2013

Performances et optimisations

INF 232: Langages et Automates. Travaux Dirigés. Université Joseph Fourier, Université Grenoble 1 Licence Sciences et Technologies

Chapitre 2. Eléments pour comprendre un énoncé

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

Transcription:

Grandes lignes Analyseur Statique de logiciels Temps RÉel Embarqués École Polytechnique École Normale Supérieure Mercredi 18 juillet 2005 1 Présentation d 2 Cadre théorique de l interprétation abstraite 3 Logiciels critiques Présentation d Outils de certification classiques Présentation d Definition Logiciels dans lesquels les bugs sont inacceptables Trop cher (missions vers Mars, réseau téléphonique AT&T,...) Mettent des vies en danger (missile Patriot,...) Méthodes de production coûteuses + certification ("preuves" d absence d erreurs) Inspection manuelle Test Très faible confiance Ne passe pas à l échelle Pas exhaustif Plus le logiciel est gros, moins on couvre Confiance minimale trop chère pour logiciels de grande taille

Outils de recherche de bugs Présentation d Présentation d Nouvelles techniques de certification I nécessaires pour gros codes critiques Automatique (parfois après une phase d apprentissage) Certains sont assez efficaces Mais pas exhaustifs et plein de fausses alertes Ne peut prouver absence de bug Pas fait pour les programmes avec peu ou pas de bug Méthodes déductives Inspection manuelle assistée par ordinateur Modèle d un programme + preuve preuve aidée par ordinateur et vérifiable automatiquement Grande confiance dans les résultats (si modèle correct) Coût travail d expert conception d un modèle par programme utilisé pour petites parties Présentation d Nouvelles techniques de certification II nécessaires pour gros codes critiques Analyse statique de programmes par interprétation abstraite Présentation d Analyse statique Test sur toutes les valeurs possibles Modèle d un langage + analyse automatique mais approchée Approximation soulève les questions de correction? outils mathématiques précision? si non, fausses alertes en équilibre avec efficacité But Découvrir automatiquement les propriétés des programmes Souvent indécidables approximer = cadre mathématique pour approximer souplement les calculs sans introduire d erreur dans les résultats choisir un équilibre entre précision et efficacité Vision unifiée des analyses de programes factorise les preuves et les améliorations

Conception d Présentation d Erreurs signalées par Présentation d Début en décembre 2001 : Pour gros codes critiques, fausses alertes pas acceptables Airbus demande à l équipe de Patrick Cousot si peut mieux faire Développé par petite équipe : 6 personnes à l ENS et une à l X moitié de thésards Entre 2002 et 2004, travail sur des version de A340 Puis, A380 en cours de développement Nouveaux contrats avec EDF (centrales nucléaires) Hispano Suiza (moteurs) Astrium (satellites) Ce que peut analyser Présentation d Patrick COUSOT Radhia COUSOT Jérôme FERET Laurent MAUBORGNE Antoine MINÉ David MONNIAUX Xavier RIVAL Interruptions indésirables causées par des exceptions Exceptions sur les opérations de flottants IEEE Opérations invalides (0/0, 1) Dépassements (et NaN) Division par zéro Exceptions potentielles causées par des accès mémoires incorrects Accès aux tableaux en dehors des bornes Pointeurs nuls Comportements interdits par l utilisateur Dépassements entier (modulo) Violation d assertions spécifiées par l utilisateur Présentation d Points difficiles qu sait gérer Programmes C synchrones Avec Pointeurs (y compris vers fonctions), structures et tableaux Calculs en flottants Tests et boucles Branchements limités (goto en avant, break, continue) Sans union Allocation mémoire dynamique Appel de fonction récursive Branchement en arrière Effets de bord conflictuels Librairies C peut faire mieux qu analyseur plus généraliste Erreurs d arrondi dans les calculs flottants Logiciels de grandes tailles (exemple de 400 000 LOC, sans ignorer ni couper aucune partie) Très grand nombre de variables globales (exemple avec 20 000, dont 7 000 flottants) Flot de contrôle complexe, encodé partiellement avec des variables booléennes non locales

Dans A STRÉE Principe de fonctionnement Couvre tous les comportements possibles Pour capturer tous les bugs Obtenu par une exécution abstraite du programme sur toutes ses données possibles à la fois Approximation Sémantique concrète Sémantique abstraite Comportement des programmes Simule le comportement réel γ domaine concret (état mémoire...) fonctions sur ce domaine Visualisation dans A STRÉE Exemple Analyse statique par interprétation abstraite! Dans A STRÉE domaine abstrait fonctions abstraites élargissement (approximation grossière de l union) A STRÉE Analyse avec des intervalles Exemple n int f(int n) { int i=0 ; int a[3] = {0,1,2 ; while(a[i]<n && i<3) { i++ ; if(i>2) i=2 ; return a[i] ; Dans A STRÉE [ 2147483648, 2147483647] i {0 Après itération, en début de boucle, i [0, 3] Phase de signalement : alerte sur l accès au tableau A STRÉE Des approximations souples Domaine abstrait seules les propiétés du domaine sont représentables approcher les ensembles d états concrets objectif : garder les propriétés intéressantes et représentables pas d obligation de clôture algébrique Fonctions abstraites traduire les instructions élémentaires du programme objectif : précision et rapidité Élargissements objectif : terminer en temps raisonable Décomposition en plusieurs domaines abstraits simplification de l implémentation réutilisabilité mais approximations lors des transferts d informations A STRÉE

Domaines abstraits Octogones Ensemble d états mémoire concrets Représentation par intervalles Représentation par polyèdre convexe Analyse précise garder des relations entre variables (x < 2y, xy > z,... ) Analyse relationnelle assez chère (polyèdres convexes : exponentiel) Octogones : une des représentations relationnelles les plus économes pour les tuples de nombres (taille O(n 2 ), opérations O(n 3 )) Malgré tout, besoin d analyse hétérogène (packs de variables) Relations sont : x ± y dans intervalle Exemple avec les octogones Filtres Exemple int f(int n) { int x = n ; int y = n-1 ; while(x > 2) { x = x-1 ; y = y-1 ; return x-y ; Alerte si pas d hypothèse sur les entrées Octogone : x y= 1 Juste intervalles : x< 3 Avec octogones, f renvoie 1 Sans, alerte Dans les programmes command/control, utilisation intensive des filtres numériques Invariants des filtres trop complexes pour les représentations symboliques linéaires prend en compte très précisément les erreurs d arrondi des calculs flottants Domaine de filtres générique implémenté dans, permettant ajout facile de nouveaux types de filtres

Exemple avec les filtres Arbres de décision void f(double v) { double E1=0, E2=0 ; double S0=0, S1=0, S2=0 ; while(randombool()) { E0 = randomdoublein(-1, 1) ; if(randombool()) { S0 = E0 ; S1 = E0 ; E1 = E0 ; S0 = 1.5*S1-0.7*S2 + 0.5*E0-0.7*E1 + 0.4*E2 ; E1 = E0 ; S2 = S1 ; S1 = S0 ; Pas d approximation par contraintes linéaires Contraintes ellipsoïdes Approximation de l expansion formelle des sorties en tant que somme des entrées Beaucoup de booléens utilisés pour contrôler le flot besoin de relier les variables booléennes et numériques Arbres de décision : nœuds étiquetés par variables booléennes (décisions), feuilles étiquetées par représentations symboliques des valeurs numériques x y Exemple d arbre de décision Distinction des traces double f(int x) { double y ; int bp, bm ; bp = (x>0) ; bm = (x<0) ; if(!bp &&!bm) { y = 0 ; else { y = 1.0/x ; return y ; En suivant l arbre de décision, on obtient x==0 après le test (fausse) alerte sans arbre de décision Paramètre : de variables booléennes par pack bp bm bm 0 <0 >0 Trace = séquence d états mémoire d une exécution particulière Des approximations viennent de la fusion des traces Après les deux branches d un test Dans les boucles Car les valeurs sont fusionnées dans les représentations symboliques Partitionnement de traces pour regagner de la précision

Interpolation Linéaire Performances d Example float[] tc = { 0 ; 0.5 ; 2 ; 0 ; float[] tx = { 0 ; -1 ; 1 ; 2 ; float[] ty = {-1 ; -0.5 ; -1 ; 2 ; int i = 0 ; while (i<3 && x>tx[i+1]) i++ ; y = tc[i] * (x - tx[i]) + ty[i] ; Intervalles : i {0 et x [ 2, 2] i {1 et x [ 1, 2] i [0, 1] et x [ 2, 2] i [1, 2] et x [ 1, 2] Point fixe : i [0, 3] et x [ 2, 2] Sortie de while : i [0, 2] et x [ 2, 2] i [0, 2] et x [ 2, 2] et y [ 4, 4] Distinction de traces : i {0 et x [ 2, 2] Boucle 1 : i {1 et x [ 1, 2] Entrée d itération 0 : i {0 et x [ 2, 2] Entrée d itération 1 : i {1 et x [ 1, 2] Boucle 1 : i {1 et x [ 1, 2] Boucle 2 : i {2 et x [1, 2] Point fixe : Entrée d itération 0 : i {0 et x [ 2, 2] bien adapté aux logiciels critiques airbus Entrée d itération 1 : i {1 et x [ 1, 2] Entrée Développement d itération de 2 domaines : i {2 et spécifiques x [1, 2] (filtres,... ) Sortie Prise de while en charge : de leurs sous-ensemble de C Réglage des quelques 150 paramètres (par famille de Sortie d itération 0 : i {0 et x [ 2, 1] logiciels) Sortie d itération 1 : i {1 et x [ 1, 1] Packs pour les octogones et arbres de décision Sortie d itération 2 : i {2 et x [1, 2] Points de distinction de traces itération Stratégie 0 : i d itération {0 et xpour [ 2, point 1] fixeetprécis y { 1 itération 1 : i {1 et x [ 1, 1] et y [ 1, 0] A contrario, l extension à d autres utilisateurs va nécessiter itération 2 : i {2 et x [1, 2] et y [0, 2] Nouveau modèle mémoire (union) Fusion Nouveaux des traces domaines : i [0, abstraits 2] et x [ 2, 2] et y [ 1, 2] Nouveaux réglages Si alertes, recherche de bug ou d imprécisions Industrialisation Requiert connaissances de base en interprétation abstraite Recherche active motivée par les applications y x Pas fonction monotone des LOCs! Assez efficace pour utilisation en phase de développement : Programmes test 1 test 2 test 3 test 4 Taille (LOCs) 70 000 65 000 215 000 380 000 Itérations 43 32 59 62 Analyse (minutes) 70 28 330 680 Pics mémoire (Mb) 550 390 1 300 2 200 Alertes 0 2 1 0 Entièrement automatique sur cette famille de logiciels peut aussi tourner en parallèle Conception de domaines abstraits Préoccupations Compacité des données Expressivité Efficacité des algorithmes réutilisation de structures efficaces de la littérature Algorithmique à explorer Possibilité d approximer certains algorithmes Pas de contrainte de fermeture algébrique

Challenges Conclusion Challenges à court terme Extension du modèle mémoire en cours Analyse précise des structures de données dynamiques Rapports détaillés sur les alertes (explication de l origine) Migration de l analyse au niveau de l assembleur Challenges à moyen terme Analyse des spécifications Preuve de propriétés complexes de l utilisateur Analyse de programmes asynchrones Preuve formelle de correction d montre qu il est possible de faire Analyse automatique Sur codes de taille industrielle Efficace plus d excuse pour des fautes de logiciels S appuie sur théorie informatique formelle, l interprétation abstraite Industrialisation très prochaine Besoin de chercheurs Besoin d utilisateurs formés venez au cours d interprétation abstraite en majeure!