33
1/33 Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références Analyse statique de SCADE par interprétation abstraite soutenance de stage Alex AUVOLAT ANSYS-Esterel Technologies sous l’encadrement de Jean-Louis Colaço Juin-Juillet 2014 Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

soutenance De Stage - Adnab.me · 2/33 Généralités sur SCADEInterprétation abstraiteDomaines à disjonction de casContribution personnelleRéférences Introduction SCADE

  • Upload
    hakien

  • View
    214

  • Download
    0

Embed Size (px)

Citation preview

1/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Analyse statique de SCADEpar interprétation abstraite

soutenance de stage

Alex AUVOLATANSYS-Esterel Technologies

sous l’encadrement de Jean-Louis Colaço

Juin-Juillet 2014

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

2/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Introduction

SCADE : programmation de systèmes embarqués critiqueForte motivation pour la vérification formelleTechniques : interprétation abstraite (Astrée), model checking(DV, Kind, GATeL)Objectif du stage : nouvelle technique d’analyseNombreux avantages à analyser directement le code SCADE

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

3/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Plan

1 Généralités sur SCADE

2 Interprétation abstraite

3 Domaines à disjonction de cas

4 Contribution personnelle

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

4/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Section 1

Généralités sur SCADE

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

5/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Programme synchrone

Le temps est discretToutes les variables évoluent en même temps

Example

x = 0 -> (pre y + 1)y = x + 1

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

6/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Environnements mémoire

Soit un programme SCADE, on note :X : ensemble des variablesV : ensemble des valeurs

Ce modèle simple suffit !

Definition

Environnement mémoire : fonction de X→ V = M

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

7/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Système de transition, fonction de transition

Un programme SCADE représente une fonction de transition :

s0i1−→ s1

i2−→ s2i3−→ · · ·

Autre écriture :sn = f (c(sn−1) + in)

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

8/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Sémantique collectrice

But : prouver des propriétés généralesOn considère ensemble toutes les entrées possible duprogramme (première abstraction)On considère ensemble tous les moments de l’exécution duprogramme (seconde abstraction)Sémantique collectrice : S ⊂ P(M)

Elle peut s’exprimer comme un point fixe :

S = lfpS0(λA.A ∪ g(A))

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

9/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Preuve de propriétés

Prouver une propriété P , c’est montrer que ∀s ∈ S , s |= P .

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

10/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Section 2

Interprétation abstraite

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

11/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Abstraction

Pas d’algorithmes sur P(M) (problème de terminaison)Domaine abstrait D] : représentation pouvant exprimer uneclasse d’éléments de P(M).Fonction de concrétisation γ : permet de comprendre ce quereprésente une valeur abstraite.Abstraction sûre : s] |= s ⇐⇒ s ⊂ γ(s])

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

12/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Abstraction

concret abstrait

α

γ

Exécutions du programme

Sur-approximationReprésentation abstraite

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

13/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Domaines abstraits numériques

Plusieurs domaines bien connus : intervalles, polyèdres,octogones.Implémentation dans la bibliothèque ApronNe savent gérer que les variables numériques (entières ourationnelles)

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

14/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Abstraction de la sémantique collectrice, preuve depropriétés

On abstrait S par S ] tel que S ⊂ γ(S ]).S ] est également défini comme un point fixe :

S ] = lfpS]0(λs.s] t g ](s))

Si on montre que p = true dans S ], c’est gagné.

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

15/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Preuve de propriété

P

P SS ]

SS ]

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

16/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Section 3

Domaines à disjonction de cas

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

17/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Besoin d’une abstraction performante

Problème : le programme est considéré comme un seul lieuOn veut faire des disjonctions de casOn veut étudier les conditions qui passent d’un cas à l’autreEn résumé : notre programme encode un système detransitions (automate)

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

18/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Un exemple

Étudions un programme simple :

lx = 0 -> pre xc = (lx >= 10)x = if c then 0 else lx + 1

On aimerait prouver x ∈ [0, 10]

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

19/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Disjonctions de cas selon des variables

On se done un ensemble Xd de variables énuméréesOn considère séparément chaque valuation de ces variables

D]d = Md → D]

Chaque valuation correspond à un état du système detransition

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

20/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Exemple

Une représentation appropriée pour traiter notre exemple serait :

init ctt tt ⊥tt ff lx = 0; x = 1ff tt lx = 10; x = 0ff ff 0 ≤ lx ≤ 9; x = lx + 1

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

21/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Principe d’itération

On construit S ] incrémentalement.Prendre un cas nouveau qÉtudier la boucle q → q : on trouve un point fixe précisÉtudier les nouveaux cas accessibles q → q′.Répéter

C’est le principe des itérations chaotiques.

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

22/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Itérations chaotiques sur notre exemple

init lx c x0 ? tt 0 ff 11 tt 0 ff 1

? ff 1 ff 22 tt 0 ff 1

ff [1, 9] ff [2, 10]? ff 10 tt 0

3 tt 0 ff 1? ff [0, 9] ff [1, 10]

ff 10 tt 04 tt 0 ff 1

ff [0, 9] ff [1, 10]ff 10 tt 0

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

23/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Problème d’explosion

On est souvent confronté à des représentations comme celle-ci :

init la lbtt tt tt a = 0; b = 0tt tt ff a = 0; b = 0tt ff tt a = 0; b = 0tt ff ff a = 0; b = 0ff tt tt a = 0; b ∈ [1,∞[

ff tt ff a = 1; b ∈ [1,∞[

ff ff tt a = −1; b ∈ [1,∞[

ff ff ff a = 0; b ∈ [1,∞[

Il y a beaucoup de redondance !

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

24/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

La solution

init

la

lb lb

a = -1b ∈ [1,∞[

a = 0b ∈ [1,∞[

a = 1b ∈ [1,∞[

a = 0b = 0

tt

ff

ff tt

tt ff tt ff

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

25/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Disjonctions de cas avec graphe de décision

Graphe de décision, représenté par un type somme :

T := V(s), s ∈ D]

| C(xi , v1 → T1, . . . , vk → Tk)

Unicité de la représentation garantie par une condition simpleLe partage de sous-graphes permet de gagner en compacité

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

26/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Retour à notre exemple

Notre exemple peut être représenté par la structure suivante :

init

c

tt

lx = 0x = 1

ff

tt

c

lx = 10x = 0

tt

0 ≤ lx ≤ 9x = lx + 1

ff

ff

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

27/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Principe d’itération

Problème : un cas ne correspond plus à une valuation desvariables Xd . Que faire ?On définit un cas comme étant tous les chemins menant à unefeuille donnée.

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

28/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Section 4

Contribution personnelle

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

29/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Contribution théorique

Formalisation de la sémantique concrète de SCADE (d’unsous-ensemble)Représentation d’un programme SCADE sous la forme d’uneformule logique, adaptée pour l’interprétation abstraiteDomaine abstrait à base de graphes de décision et itérationschaotiques associées

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

30/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Implémentation

Sélection d’un sous-ensemble de SCADEImplémentation d’un interprète concretImplémentation de la transformation en formule logiqueImplémentation du domaine abstrait à disjonction de cas defaçon naïveRé-implémentation avec les graphes de décision

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

31/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Comparaison avec Astrée

Astrée : analyse de C généré par SCADE.Astrée n’implémente pas d’itérations chaotiques : ça neconvient pas du tout à l’analyse de CAstrée implémente un domaine avec des graphes de décision,mais il est moins puissant.Astrée implémente de nombreuses techniques permettant detravailler sur de gros programmes (en particulier le variablepacking)Astrée se pose des questions inutiles en SCADE (typiquementles questions d’initialisation de mémoire)

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

32/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Résultats

Quelques programmes sur lesquels j’ai pu prouver des propriétésintéressantes :

compteursupdowndouble updownsuite de cartesun train (Halbwachs, 1994)un demi-tour pour des rames de metro (Halbwachs, Lagnier, &Ratel, 1992)

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT

33/33

Généralités sur SCADE Interprétation abstraite Domaines à disjonction de cas Contribution personnelle Références

Références

Halbwachs, N. (1994, September). About synchronousprogramming and abstract interpretation. In B. LeCharlier(Ed.), International symposium on static analysis, sas’94.Namur (belgium) : LNCS 864, Springer Verlag.

Halbwachs, N., Lagnier, F., & Ratel, C. (1992, September).Programming and verifying real-time systems by means of thesynchronous data-flow programming language lustre. IEEETransactions on Software Engineering, Special Issue on theSpecification and Analysis of Real-Time Systems.

Analyse statique de SCADE par interprétation abstraite Alex AUVOLAT