La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

Interprétation abstraite et validation de logiciels critiques Matthieu Martel.

Présentations similaires


Présentation au sujet: "Interprétation abstraite et validation de logiciels critiques Matthieu Martel."— Transcription de la présentation:

1 Interprétation abstraite et validation de logiciels critiques Matthieu Martel

2 Systèmes embarqués Systèmes embarqués : Systèmes informatiques (logiciel+matériel) conçus pour être intégrés dans des objets industriels

3 Systèmes embarqués Quelques caractéristiques : Systèmes électroniques et informatiques autonomes, sans entrées ni sorties standard (clavier et écran) Capacités limitées (puissance de calcul, autonomie, mémoire, etc.) Difficilement modifiables après livraison Contraintes de coûts : coût de développement (petites séries, ex : avion) économies déchelle (grandes séries, ex : téléphone)

4 Systèmes critiques Systèmes critiques : systèmes embarqués dont une panne peut être catastrophique (conséquences humaines, financières)

5 Missile Patriot (1991) Compteur (temps) : 1/10 ajouté tous les dixièmes de seconde En binaire : 1/10 = 1/2 4 + 1/2 5 + 1/2 8 +... = 0.00011001100 Codé sur 24 chiffres binaires (bits) : erreur = 9.5 × 10 -8 Au bout de 100 heures : 100 x 3600 × 10 × 9.5 × 10 -8 = 0.34 secondes Vitesse du Scud : 1676 ms -1 Erreur > 500 mètres

6 Ariane 5 (1996) Après un décollage normal la fusée a eu un comportement nominal jusqu'à la 36ème secondes de vol. Puis les systèmes de référence inertielle (SRI) ont été simultanément déclarés défaillants. Sur la base d'informations de diagnostic du SRI traitées comme des instructions de vol, le calculateur de bord a provoqué le braquage en butée des tuyères des boosters, puis du moteur Vulcain d'Ariane 5 qui jusque là suivait parfaitement sa trajectoire de vol. C'est ce braquage intempestif des moteurs qui faisant brusquement basculer le lanceur l'a amené à se briser sous les efforts aérodynamiques et à exploser en vol, peu avant sa destruction télécommandée. Le SRI n'a pas transmis de données correctes parce qu'il était victime d'une erreur d'opérande trop élevée du "biais horizontal" de la fonction d'alignement interne de la centrale. Le calcul de cette variable est lié à la vitesse horizontale détectée par la plate-forme inertielle. Or, sur Ariane 5, l'accélération au décollage est beaucoup plus forte que sur Ariane 4, et la vitesse horizontale s'accroît cinq fois plus rapidement. La variable a donc dépassé la plage des valeurs autorisée par le logiciel de vol. La fonction d'alignement qui reste active environ 40 secondes après est une exigence d'Ariane 4 mais n'a aucune utilité sur Ariane 5. Elle a cependant été maintenue pour des raisons de commodité. La fonction comprend sept variables dont seulement quatre sont protégées. Lors de la conception, il n'avait pas été jugé nécessaire de protéger le calculateur contre un arrêt de fonctionnement dû à une valeur excessive de la variable lié à la vitesse horizontale. Cette décision a été prise sans que l'on analyse ou comprenne parfaitement les valeurs que cette variable pourrait prendre lorsque la fonction d'alignement est autorisée à fonctionner après le décollage.

7 Coupure électrique (2003) Environ 50 millions de personnes touchées dans le nord-est américain Cause : hasard de course (race condition) : solde s? si possible retirer x modifier s : s-x 1000 retirer x=600 400 -200 compte commun

8 Autres bugs célèbres Mars climate orbiter (1999) : confusion entre systèmes métrique et impérial (125 millions de dollars) USS Yorktown (1998) : erreur dun opérateur qui saisit la valeur zéro. ÷ par zéro et propagation de lerreur. Bateau arrêté en pleine mer quelques heures Pentium (1994) : erreur dans la division. Coût : environ 475 millions dollars 5505001 ÷ 294911 18.66600093 18.66665197 x = 4195835, y = 3145727 z = x-(x ÷ y) × y 256 0

9 Bugs : classification Opérations illicites (USS Yorktown) : 1÷0 -1 Dépassements de capacité (Ariane 5) : entiers souvent entre -32767 32767 6900 × 5 = + Erreurs darrondi (Patriot) : 1/10 = 0.00011001100 Synchronisations (coupure électrique) hasards de course Autres : spécifications (Pentium, Mars orbiter), accès mémoire, etc.

10 Sûreté de fonctionnement Nécessité de garantir le bon fonctionnement des systèmes critiques! Sûreté : absence de comportement indésirable lairbag ne se déclenche pas sans raison Vivacité : bon comportement du système (plus difficile à établir) lairbag se déclenche en cas daccident

11 Quelques ordres de grandeur Avion : O(100000) LOCs, O(1000) variables, heures Voiture : O(10000) LOCS ATV (Galileo) : O(1000000) LOCs, jours Centrale nucléaire : mois static const NUM TRANSF2_B06_C2 = -1.362407E+00;static const NUM TRANSF2_B06_C3 = 7.830931E-01;static const NUM TRANSF2_B06_C4 = 1.362407E+00;static const NUM TRANSF2_B06_C5 = -6.844878E-01;static const NUM LIM_A1_E2 = 8.000000E+00;static const NUM LIM_A1_E3 = - 8.000000E+00;static const NUM K_A2_E2 = -6.236000E-01; static const NUM AFFECT_N_1_E1 = 2.000000E+00;static const NUM SWITCH_N_E93_E1 = 3.500000E+00;static const NUM SWITCH_N_A6_E1 = 0.000000E+00;static const BOO AFFECT_B_1_E1 = FALSE;static NUM PADN5;/*Mod JS*//*SUB(1,PLDQCMMMOY,PDQMM,X611Z01)*/SUB(1,PDQCMM MOY,PDQMM,X611Z01)/*SUB(1,PDQCMMMOY,0,X611Z01)*//*Fin Mod JS*/K(A1,X611Z01,K_A1_E2,X611Z02)AFFECT_B(1,AFFECT_B_1 _E1,BOFFACS1)TRANSF2(B06,X611Z02,X611Z02,X611Z02,BOFF ACS1,X611Z17,TRANSF2_B06_C1, \ TRANSF2_B06_C2,TRANSF2_B06_C3,TRANSF2_B06_C4,TRANS F2_B06_C5)LIM(A1,X611Z17,LIM_A1_E2,LIM_A1_E3,PLEPS)ADD( 2,PFOSV,PLEPS,X611Z16)K(A2,PDQMM,K_A2_E2,X611Z03)AFFE CT_N(1,AFFECT_N_1_E1,X611Z04)INVNUM(1,X611Z04,PADN5)LI M(A2,X611Z03,X611Z04,PADN5,X611Z05)ADD(3,X611Z16,X611Z0 5,SANO1) static const NUM TRANSF2_B06_C2 = -1.362407E+00;static const NUM TRANSF2_B06_C3 = 7.830931E-01;static const NUM TRANSF2_B06_C4 = 1.362407E+00;static const NUM TRANSF2_B06_C5 = -6.844878E-01;static const NUM LIM_A1_E2 = 8.000000E+00;static const NUM LIM_A1_E3 = - 8.000000E+00;static const NUM K_A2_E2 = -6.236000E-01; static const NUM AFFECT_N_1_E1 = 2.000000E+00;static const NUM SWITCH_N_E93_E1 = 3.500000E+00;static const NUM SWITCH_N_A6_E1 = 0.000000E+00;static const BOO AFFECT_B_1_E1 = FALSE;static NUM PADN5;/*Mod JS*//*SUB(1,PLDQCMMMOY,PDQMM,X611Z01)*/SUB(1,PDQCMM MOY,PDQMM,X611Z01)/*SUB(1,PDQCMMMOY,0,X611Z01)*//*Fin Mod JS*/K(A1,X611Z01,K_A1_E2,X611Z02)AFFECT_B(1,AFFECT_B_1 _E1,BOFFACS1)TRANSF2(B06,X611Z02,X611Z02,X611Z02,BOFF ACS1,X611Z17,TRANSF2_B06_C1, \ TRANSF2_B06_C2,TRANSF2_B06_C3,TRANSF2_B06_C4,TRANS F2_B06_C5)LIM(A1,X611Z17,LIM_A1_E2,LIM_A1_E3,PLEPS)ADD( 2,PFOSV,PLEPS,X611Z16)K(A2,PDQMM,K_A2_E2,X611Z03)AFFE CT_N(1,AFFECT_N_1_E1,X611Z04)INVNUM(1,X611Z04,PADN5)LI M(A2,X611Z03,X611Z04,PADN5,X611Z05)ADD(3,X611Z16,X611Z0 5,SANO1)

12 Exemple de fonctionnalité : lATV

13 Inflation du logiciel L'avion qui "bat des ailes" a fédéré de nombreux chercheurs L'excitation qui règne chez Airbus est également perceptible dans les laboratoires qui collaborent au projet. En posant des problèmes inédits, le futur géant du ciel représente un défi pour les scientifiques. [...] L'effet A380 dépasse largement le cadre régional. Il touche l'ensemble de l'Europe et met à contribution des laboratoires qui n'ont pas forcément de relations avec l'aéronautique. C'est le cas de l'Ecole normale supérieure (ENS) de Paris, où Patrick Cousot, professeur d'informatique, anime une équipe de sept personnes travaillant sur le projet Astrée (associant le CNRS, l'ENS et Polytechnique). "L'ordinateur possède des limitations, explique M. Cousot. Lorsqu'une valeur est codée sur 5 chiffres, la machine ne peut accepter des nombres de taille supérieure, et elle les tronque." D'où des erreurs fatales, comme celle qui a conduit à la perte du contrôle de la fusée Ariane 5 le 4 juin 1996. Face à l'inflation galopante de la taille des logiciels embarqués sur les avions de ligne (20 000 lignes de code pour l'A320, 120 000 pour l'A340, près de 500 000 pour l'A380), la recherche de telles erreurs devient critique. "Nous sommes capables d'établir la preuve mathématique qu'un programme comme celui de la commande de vol de l'A380 ne comprend pas de bogues liés à la limite des capacités de l'ordinateur", rassure M. Cousot. Une information précieuse pour la fiabilité de l'A380, même s'il est prévu d'autres sécurités comme l'exécution redondante des programmes par plusieurs ordinateurs en parallèle. L'équipe de M. Cousot a d'ores et déjà établi un record : "L'A380 dispose du plus gros programme jamais "prouvé" dans le monde." Article paru dans l'édition du 27.04.05

14 Exemple de programme Données : point U=(x,y) ensemble de points V 0,V 1,...,V n-1 tels que V i =(x i,y i ), 0 i n-1 Résultat : distance d du point V i le plus éloigné de U i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 Données : point U=(x,y) ensemble de points V 0,V 1,...,V n-1 tels que V i =(x i,y i ), 0 i n-1 Résultat : distance d du point V i le plus éloigné de U i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1

15 Interprétation (x,y) = (7,4) n=12 x i = 9,15,-4,-3,2,11,... y i = 11,5,2,9,-3,-7,... i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 (x,y) = (7,4) n=12 x i = 9,15,-4,-3,2,11,... y i = 11,5,2,9,-3,-7,... i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 i = d = 0 0 9.219544 9.219544 1 8,062257 2

16 Analyse de sûreté du programme Opérations illicites 1÷0 -1 Dépassements de capacité a × b = + Erreurs darrondi 1/10 = 0.00011001100 Synchronisations hasards de course impossible dans ce cas Autres : erreurs restantes non traité i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1

17 Absence derreur? Impossibilité de tester tous les scenarii possibles! Si lon ne considère que les points correspondant à un écran dordinateur : coordonnées entières abscisses entre 0 et 1023 ordonnées entre 0 et 767 13 points uniquement (figure) (1024*768) 13 > 4.4 10 76 possibilités! (x,y) = (7,4) n=12 x i = 9,15,-4,-3,2,11,... y i = 11,5,2,9,-3,-7,... i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 (x,y) = (7,4) n=12 x i = 9,15,-4,-3,2,11,... y i = 11,5,2,9,-3,-7,... i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1

18 Absence derreur? (1024*768) 13 > 4.4 10 76 possibilités! Processeur à 3 GigaHertz 3 10 9 opérations/seconde moins de 10 9 tests/seconde 4.4 10 65 secondes = plus de 10 58 années

19 Outil mathématique : ordres partiels Ordre total : relation telle que pour tous x et y : x y ou y x Ordre partiel : relation telle que pour tous x et y : x y ou y x ou ni lun ni lautre

20 Outil mathématique : majorants Majorant dune partie P : élément plus grand que tous les éléments de P

21 Outil mathématique : treillis complets Treillis complet T : ensemble avec ordre partiel tout sous-ensemble de T admet un plus petit majorant

22 Exemple : le treillis des signes Représentation simplifiée des entiers relatifs a b si a est un sous- ensemble de b dans Z T (top) correspond à Z (bottom) correspond à lensemble vide

23 Autre exemple : le treillis des intervalles

24 Opérations dans le treillis des signes Addition Multiplication

25 Interprétation abstraite Abstraction des valeurs de manière à pouvoir considérer un grand nombre de scenarii à la fois Interprétation du programme avec les valeurs abstraites afin de valider simultanément tous les scenarii considérés étude macroscopique du comportement du programme Exemple : le treillis des signe

26 Abstraction - concrétisation 0 0 abstraction α concrétisation γ

27 Interprétation abstraite de programme (x,y) = (, ) n= x i = y i = i = d = tant que i n- d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+ (x,y) = (, ) n= x i = y i = i = d = tant que i n- d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+ i = d = (x,y) = (7,4) n=12 x i = 9,15,-4,-3,2,11,... y i = 11,5,2,9,-3,-7,... i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 (x,y) = (7,4) n=12 x i = 9,15,-4,-3,2,11,... y i = 11,5,2,9,-3,-7,... i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 α γ i= n - = (( - ) 2 +( - ) 2 ) ( 2 + 2 ) = == ( + ) = Pas dopération illicite = Valeurs stabilisées (point fixe) Jamais dopération illicite

28 Récapitulatif Propriété démontrée : Absence dopération illicite (racines carrées) - propriété de sûreté Pour un nombre quelconque de points Pour des coordonnées quelconques (0) Démonstration : Entièrement mécanique (automatisable) Obtenue par calcul dun point fixe (stabilisation de toutes les données possibles en tout point du programme)

29 Outil mathématique : point fixe Point fixe dune fonction f : point x tel que f(x)=x

30 Outil mathématique : fonction croissante Fonction croissante : si x y alors f(x) f(y) Exemple : la fonction valeur absolue est croissante dans le treillis des signes

31 Théorème de Tarski (1955) Théorème : soit T un treillis complet et f : T T une fonction croissante. f admet un plus petit point fixe

32 Théorème de Tarski (1955) Théorème : soit T un treillis complet et f : T T une fonction croissante. f admet un plus petit point fixe

33 Théorème de Tarski (1955) Théorème : soit T un treillis complet et f : T T une fonction croissante. f admet un plus petit point fixe

34 Théorème de Tarski (1955) Théorème : soit T un treillis complet et f : T T une fonction croissante. f admet un plus petit point fixe

35 Théorème de Tarski (1955) Théorème : soit T un treillis complet et f : T T une fonction croissante. f admet un plus petit point fixe

36 Théorème de Tarski (1955) Théorème de Tarski : existence dun plus petit point fixe Théorème de Kleene : indique comment le calculer

37 Analyse de sûreté du programme Opérations illicites 1÷0 -1 prouvé (signes) Dépassements de capacité a × b = + Erreurs darrondi 1/10 = 0.00011001100 Synchronisations hasards de course impossible dans ce cas Autres : erreurs restantes non traité i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1

38 Dépassements de capacité : treillis des intervalles abstraction α concrétisation γ [] [a, b] + [c, d] = [a+c, b+d] [a, b] - [c, d] = [a-d, b-c] [a, b]×[c,d] = [min(ac,ad,bc,bd), max(ac,ad,bc,bd)] [a, b] + [c, d] = [a+c, b+d] [a, b] - [c, d] = [a-d, b-c] [a, b]×[c,d] = [min(ac,ad,bc,bd), max(ac,ad,bc,bd)]

39 Interprétation abstraite par intervalles (x,y) = ([7,7],[4,4]) n=[12,12] x i = [-4,15] y i = [-7,11] i = [0,0] d = [0,0] tant que i n-[1,1] d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+[1,1] (x,y) = ([7,7],[4,4]) n=[12,12] x i = [-4,15] y i = [-7,11] i = [0,0] d = [0,0] tant que i n-[1,1] d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+[1,1] (x,y) = (7,4) n=12 x i = 9,15,-4,-3,2,11,... y i = 11,5,2,9,-3,-7,... i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 (x,y) = (7,4) n=12 x i = 9,15,-4,-3,2,11,... y i = 11,5,2,9,-3,-7,... i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 α γ (x i -x) 2 toujours dans [-11,8] 2 =[64,121] (y i -y) 2 toujours dans [-11,7] 2 =[49,121] pas de dépassement sur 8 bits (entiers entre -127 et 127) Résultats :

40 Analyse de sûreté du programme Opérations illicites 1÷0 -1 prouvé (signes) Dépassements de capacité a × b = + prouvé (intervalles) Erreurs darrondi 1/10 = 0.00011001100 Synchronisations hasards de course impossible dans ce cas Autres : erreurs restantes non traité i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1 i = 0 d = 0 tant que i n-1 d = ((x i -x) 2 +(y i -y) 2 ) si d>d alors d = d i = i+1

41 Erreurs darrondi : risques ((x i -x) 2 +(y i -y) 2 ) Racine carrée pas toujours présente/précise matériellement (hors IEEE754) Elimination catastrophique : si ab, a et b légèrement erronés, a-b très imprécis Absorption : si a>>b alors a+b=a ex : 1.0+1.0e -8 =1.0 en arithmétique IEEE754 simple précision Absorption : si a>>b alors a+b=a ex : 1.0+1.0e -8 =1.0 en arithmétique IEEE754 simple précision Il existe des méthodes de validation par interprétation abstraite

42 Autres treillis numériques

43 Conclusion Sûreté des systèmes embarqués : Partie importante du développement pouvant représenter jusquà 80% du coût Partie intégrante du métier de concepteur, nombreux débouchés dans les grands groupes industriels Ingénieur sûreté de fonctionnement junior H/F Entreprise: PSA Peugeot Citroën Citroën Salaire : Salaire : Sans objet Ingénieur sûreté de fonctionnement junior h/f logiciel, système, et organique/mécatronique La Direction... méthodes et les outils a tous les stades du cycle de vie du produit. Vous prenez en charge les études sûreté de fonctionnement... contraintes jusqu'au dossier de justification sûreté de fonctionnement. Vous analysez les réponses fournisseurs en vérifiant... méthodologique lié aux études et participez au club Sûreté de Fonctionnement. Expérience: Not Specified Conditions: Voir la description pour plus de détail Contrat: CDI / CNE 02/07/2008

44 Conclusion Licence info Licence info Programmation en Ada (L1) Programmation en Ada (L1) Logique (L1) Programmation en langage C (L2) Intelligence Artificielle (L2) Qualité numérique (L3) Compilation (L3) Masters pro ou recherche, écoles dingénieurs, etc.


Télécharger ppt "Interprétation abstraite et validation de logiciels critiques Matthieu Martel."

Présentations similaires


Annonces Google