À la chasse aux bugs

avec le Laboratoire d'informatique formelle
Les mathématiques au service
de l'assurance-qualité
NSERC
CRSNG

Fonds de recherche
Nature et
technologies
Ariane V
1996
Ariane V
1996
6 rappels
en 2010
400 000 rappels
59 500 000 000 $
M. Gauche

M. Droit
M. Gauche

M. Droit
ATELIERS

GAU
?

!
Votre code

?

!
Librairie
Service web
Module
Votre code

?

!
b

c
a
b

Plan
Devis
Contrat
...

c
a
b

c
a
b

c
a

b

c
a
b

?

c
a

b

c
a

?
b

?

c
a

b

c
a

?
TESTING
T

ES

T
M.
?

Pas exhaustif

T

ES

T
M.
?

Pas exhaustif

T

ES

T
M.

Long…
?

Basé sur la
compréhension
du testeur

Pas exhaustif

?

T

ES

T
M.

Long…
ATELIERS
ATELIERS
ATELIERS
ATEL

GAU
X

ATEL

GAU
X
ATELIERS

GAU
X
ATELIERS

GAU

?

?
Programmation

Tests
unitaires

Tests
fonctionnels

Tests
système

Après
sortie
% de bugs introduits

85%

Programmation

Tests
unitaires

Tests
fonctionnels

Tests
système

Après
sortie
% de bugs introduits
% de bugs trouvés

85%

Programmation

Tests
unitaires

Tests
fonctionnels

Tests
système

Après
sort...
% de bugs introduits
% de bugs trouvés
coût de réparation

16 000$
85%
1000$

25$
Programmation

100$
Tests
unitaires

250...
1. jlq
ie
2. fjf
...
p. 3

p. 8
Toutes les
histoires
possibles
Toutes les
histoires
possibles

Toutes les
histoires
du livre
Toutes les
histoires
possibles

Toutes les
histoires
plausibles

Toutes les
histoires
du livre
Toutes les
histoires
possibles

Toutes les
histoires
plausibles

Toutes les
histoires
du livre
Combien d'histoires possibles ?
Combien d'histoires possibles ?
1

2
Combien d'histoires possibles ?
1

2

2

1
Combien d'histoires possibles ?
1

2

2

1

1

2

3
Combien d'histoires possibles ?
1

2

1

2

3

2

1

1

3

2
Combien d'histoires possibles ?
1

2

1

2

3

2

1

1

3

2

2

1

3
Combien d'histoires possibles ?
1

2

1

2

3

2

1

1

3

2

2

1

3

2

3

1
Combien d'histoires possibles ?
1

2

1

2

3

2

1

1

3

2

2

1

3

2

3

1

3

1

2
Combien d'histoires possibles ?
1

2

1

2

3

2

1

1

3

2

2

1

3

2

3

1

3

1

2

3

2

1
Histoires

Combien d'histoires possibles ?

1

2

3
Pages

4

5
Histoires

Combien d'histoires possibles ?

1

1

2

3
Pages

4

5
Histoires

Combien d'histoires possibles ?

1

1

2

2

3
Pages

4

5
Histoires

Combien d'histoires possibles ?

6
1

1

2

2

3
Pages

4

5
Histoires

Combien d'histoires possibles ?

6
1

1

24

2

2

3
Pages

4

5
Histoires

Combien d'histoires possibles ?

6
1

1

24

120

4

5

2

2

3
Pages
Histoires

Combien d'histoires possibles ?

6
1

1

24

120

4

5

2

2

3
Pages
LEM
7500 lignes
LEM
7500 lignes

Chevy Volt
10 000 000 lignes
LEM
7500 lignes
Windows 7
50 000 000 lignes

Chevy Volt
10 000 000 lignes
Windows 7
50 000 000 lignes

Chevy Volt
10 000 000 lignes
Windows 7
50 000 000 lignes
10 km
1 km/h

10 km

1 km/h
1 km/h

10 km

2 km/h

1 km/h
1 km/h

10 km

2 km/h

1 km/h
2M$
ains @
1 km/h 2 tr
10 km
2 km/h

1 km/h
2M$
ains @
1 km/h 2 tr
10 km
20M$
rails @
2 km/h

1 km/h
2M$
ains @
1 km/h 2 tr
10 km
20M$
rails @
3.90$
rgot @
esca
2 km/h

1 km/h
2M$
ains @
1 km/h 2 tr
10 km
20M$
rails @
. _ 0$
3_9___
rg_ot _@__
esca _ __ __
____ 2 km/h 0$
003.9
4 000
2

1 km/h
Position train 1 = 1 x t
Position train 1 = 1 x t
Position train 2 = 10 - (1 x t)
Position train 1 = 1 x t
Position train 2 = 10 - (1 x t)
Moment de l'impact ?
Position train 1 = 1 x t
Position train 2 = 10 - (1 x t)
Moment de l'impact ?
1 x t = 10 - (1 x t)
Position train 1 = 1 x t
Position train 2 = 10 - (1 x t)
Moment de l'impact ?
1 x t = 10 - (1 x t)
2 x t = 10
Position train 1 = 1 x t
Position train 2 = 10 - (1 x t)
Moment de l'impact ?
1 x t = 10 - (1 x t)
2 x t = 10
t=5
Position train 1 = 1 x t
Position train 2 = 10 - (1 x t)
Moment de l'impact ?
1 x t = 10 - (1 x t)
2 x t = 10
t=5
Distance...
MATH

S
E

E
Logique
mathematique

E

E
Logique
mathematique

E

E

Combinatoire
des mots
Logique
mathematique

E

E

Combinatoire
des mots
Theorie des
graphes
Un jeu mathématique

On vous po
se le problè
me suivant:
Si le train a
rrive en ret
ard et qu'il
pas de taxis
n'y a
à la g...
Le 'calculus ratiocinator'
Dès 1665, Leibniz imagine un langage universel, la
lingua characteristica universalis, qui vise...
Le 'calculus ratiocinator'
« Alors, il ne sera plus
besoin entre deux
philosophes de discussions
plus longues qu'entre deu...
Quelques définitions
Donnons à chaque affirmation élémentaire un symbole:

p
q
r

Le train est en retard
Il y a des taxis à l...
Quelques définitions
Chacune des données du problème est un énoncé liant
certaines affirmations élémentaires au moyen de
conn...
Quelques définitions
On peut donc écrire symboliquement chacun des
énoncés de l'énigme:
Si l'avion arrive en retard et qu'i...
Comment résoudre le problème?
L'énigme a été réduite au problème symbolique suivant:
Étant donné que...
(p ∧ ¬q) → r
¬r
p
...
Valuation
Une valuation est une fonction ν qui affecte exactement
une valeur à chaque variable propositionnelle
Exemple: ν(...
Modèle
Si φ est une expression et ν une valuation telle que
ν(φ) = ⊤, on dit que ν satisfait φ, ce que l'on peut écrire
ν⊨...
Table de vérité
On peut calculer la valeur d'une expression pour toutes
les valuations possibles au moyen d'une table de v...
Table de vérité
On peut calculer la valeur d'une expression pour toutes
les valuations possibles au moyen d'une table de v...
Table de vérité
On peut calculer la valeur d'une expression pour toutes
les valuations possibles au moyen d'une table de v...
Table de vérité
On peut calculer la valeur d'une expression pour toutes
les valuations possibles au moyen d'une table de v...
Conséquence logique
Pour résumer:
1. Les énoncés du problème
original ont été
formalisés en un ensemble
d'énoncés logiques...
Satisfaisabilité
Une expression φ est dite satisfaisable lorsque qu'il
existe au moins une valuation ν telle que ν ⊨ φ
......
Qui a tué tante Agatha?
Quelqu'un vivant au Manoir a tué tante Agatha.
Agatha, le maître d'hôtel et Charles sont les seuls...
Modélisation propositionnelle
Une modélisation du problème en logique
propositionnelle est peu commode
Beaucoup de variabl...
Éléments
Le problème précédent concerne un certain nombre
d'éléments...
E = {Agatha, Maître d'hôtel, Charles}
...et donne ...
Prédicat
Un prédicat p est une fonction prenant des éléments en
entrée et retournant ⊤ ou ⊥. Formellement, on écrit:
n

ar...
Prédicat
Puisqu'un prédicat retourne toujours ⊤ ou ⊥, on peut
combiner les prédicats en utilisant les connecteurs de la
lo...
Prédicat
Méthode #1 (façon propositionnelle): énumérer les cas
possibles
((assassin(Agatha) ∧ victime(Charles))
→ déteste(...
Quantificateurs
Méthode #2: utiliser des quantificateurs
∀x : ∀y : (assassin(x) ∧ victime(y)) → déteste(x,y)
"pour tout x (p...
Vérification
automatique
Exemple 1
Gestion des réseaux
Ne pas appuyer
sur
si
est allumé
Ne pas appuyer
sur
si
est allumé

Actionner en même
temps
et
Ne pas appuyer
sur
si
est allumé

Actionner en même
temps
et

Actionner seulement
si
indique 2
NON
Un
seul!

Tjrs
>2
X
ip vrf Customer_A
rd 100:110
route-target export 100:1000
route-target import 100:1000
!
ip vrf Customer_B
rd 100:120
rout...
ip vrf Customer_A
rd 100:110
route-target export 100:1000
route-target import 100:1000
!
ip vrf Customer_B
rd 100:120
rout...
ip vrf Customer_A
rd 100:110
route-target export 100:1000
route-target import 100:1000
!
ip vrf Customer_B
rd 100:120
rout...
ip vrf Customer_A
rd 100:110
route-target export 100:1000
route-target import 100:1000
!
ip vrf Customer_B
rd 100:120
rout...
ip vrf Customer_A
rd 100:110
route-target export 100:1000
route-target import 100:1000
!
ip vrf Customer_B
rd 100:120
rout...
ip vrf Customer_A
rd 100:110
route-target export 100:1000
route-target import 100:1000
!
ip vrf Customer_B
rd 100:120
rout...
∀s₁ ∈ /DeviceName :
∀s₂ ∈ /DeviceName :
∀v₁ ∈ /DeviceName/s₁/ip-vrf :
∀v₂ ∈ /DeviceName/s₂/ip-vrf :
v₁=v₂ → (
∃r₁ ∈ /Devic...
1
438

2
1
438

2
329 = 17
√
329 = 17
√
17
x 17
329 = 17
√
17
x 17
329 = 17
√
4

17
x 17
9
329 = 17
√
4

17
x 17
9
329 = 17
√
4

17
x 17
119
329 = 17
√
17
x 17
119
329 = 17
√
17
x 17
119
7
329 = 17
√
17
x 17
119
7
329 = 17
√
17
x 17
119
17
329 = 17
√
17
x 17
119
+17
329 = 17
√
17
x 17
119
+17
9
329 = 17
√
17
x 17
119
+17
9
329 = 17
√
17
x 17
119
+17
89
329 = 17
√
17
x 17
119
+17
89
329 = 17
√
17
x 17
119
+17
289
329 = 17
X
√
17
x 17
119
+17
289
?
√329 = 17
?
√329 = 17
19 étapes
?
√329 = 17
19 étapes

√329

=?
?
√329 = 17
19 étapes

√329

=?
64 étapes
|
|
|
|

Nombre d'étapes

80
60
40
20
0

0

|
|
|
|
|
200 400 600 800 1000
Nombre à calculer

?
√329 = 17
19 étapes

√329
...
|
|
|

Vérifier

|

Nombre d'étapes

80
60
40
20
0

0

|
|
|
|
|
200 400 600 800 1000
Nombre à calculer

?
√329 = 17
19 ét...
|
|
|

80
60
40
20
0

Vérifier

|

Nombre d'étapes

Calculer

0

|
|
|
|
|
200 400 600 800 1000
Nombre à calculer

?
√329 ...
|
|
|

80
60
40
20
0

0

}

4x

Vérifier

|

Nombre d'étapes

Calculer

|
|
|
|
|
200 400 600 800 1000
Nombre à calculer

...
|
|

Vérifier

|

Complexité

|

Calculer

|

|

|

|

Taille du problème

|
|
|

Vérifier

|

Complexité

|

Calculer

|

|

|

|

Taille du problème

|
|
|
|

Vérifier

|

Complexité

}

Calculer

|

|

|

|

Taille du problème

|

!!!
Complexité
Étant donné une expression à n variables, toutes les
méthodes vues jusqu'ici ont une complexité en pire cas
de ...
Ajax web application
Cloud computing

Sylvain Hallé
Ajax web application
Cloud computing

JavaScript

Sylvain Hallé
Ajax web application
Cloud computing

eG
Be es
atl
Be el
am n
C
va
ara
C

Sylvain Hallé
Ajax web application
Cloud computing

<a onclick="javascript:
findBand(’Beatles’)">

eG
Be es
atl
Be el
am n
C
va
ara
C

S...
Ajax web application
Cloud computing

findBand(’Beatles’)

Sylvain Hallé
Ajax web application
Cloud computing

findBand(’Beatles’)

Sylvain Hallé
Ajax web application
Cloud computing

artist
=beatles

findBand(’Beatles’)

Sylvain Hallé
Ajax web application
Cloud computing

artist
=beatles

findBand(’Beatles’)

Sylvain Hallé
Ajax web application
Cloud computing

artist
=beatles

document.innerHTML =

Sylvain Hallé

findBand(’Beatles’)
Ajax web application
Cloud computing

artist
=beatles

document.innerHTML =

C
Page is updated,
not reloaded

Sylvain Hall...
Ajax web application
Cloud computing

artist
=beatles

document.innerHTML =

C
Server response only provides
updated conte...
Ajax web application
Cloud computing

<Search>
<Artist>
beatles
</Artist>
</Search>

Does not need
to be a URL
Does not ne...
Conceptually...
Cloud computing

Sylvain Hallé
Conceptually...
Cloud computing

Sylvain Hallé
Conceptually...
Cloud computing

Sylvain Hallé
Conceptually...
Cloud computing

Sylvain Hallé
Conceptually...
Cloud computing

Sylvain Hallé
Conceptually...
Cloud computing

Sylvain Hallé
Conceptually...
Cloud computing
Web service

Sylvain Hallé

Web client
Main issue
Not like traditional programming: all
input-output is exchanged unverified!

Possible mismatch
between messages...
Interface contracts
All possible sequences
of all possibles messages
with all possible values

Sylvain Hallé
Interface contracts

Constraints
on individual
messages

Sylvain Hallé
Interface contracts

Constraints
on individual
messages

Sylvain Hallé

Constraints
on sequences
Interface contracts

Data-aware
sequential constraints

Constraints
on individual
messages

Sylvain Hallé

Constraints
on ...
Interface contracts
Interface contract =
valid (error-free) interactions
Data-aware
sequential constraints

Constraints
on...
Three types of constraints (I)
Constraints on individual messages
<Message>
<Action>ItemSearch</Action>
<Results>5</Result...
Three types of constraints (I)
Constraints on individual messages
<Message>
<Action>ItemSearch</Action>
<Results>5</Result...
Three types of constraints (I)
Constraints on individual messages
<Message>
<Action>ItemSearch</Action>
<Results>5</Result...
Expressing data constraints
Simple XPath
Fetches portions of an XML document according to a
query path = sequence of tags
...
Expressing data constraints
XPath term
Expresses properties over values fetched by XPath expressions

p
"Û v Î
(x)
j
(q,m)...
Expressing data constraints
<Message>
<Action>ItemSearch</Action>
<Results>5</Results>
<Keyword>beatles</Keyword>
<Page>1<...
Expressing data constraints
<Message>
<Action>ItemSearch</Action>
<Results>5</Results>
<Keyword>beatles</Keyword>
<Page>1<...
Expressing data constraints
<Message>
<Action>ItemSearch</Action>
<Results>5</Results>
<Keyword>beatles</Keyword>
<Page>1<...
Three types of constraints (II)
Constraints on message sequences
<Message>
<Action>
LoginResponse
</Action>
...
</Message>...
Three types of constraints (II)
Constraints on message sequences
<Message>
<Action>
LoginResponse
</Action>
...
</Message>...
Three types of constraints (II)
Constraints on message sequences
<Message>
<Action>
LoginResponse
</Action>
...
</Message>...
Linear Temporal Logic

Alphabet (A)
Set of possible messages

Trace (A*)
Sequence of messages

Sylvain Hallé
Linear Temporal Logic
LTL formula
Ga
Xa
Fa
aWb

= assertion on the sequence of states in a trace
"always a"
"a in the next...
Linear Temporal Logic
Well-known results:

1. For every LTL formula jexists a Büchi automaton A j
, there
such that for ev...
Three types of constraints (II)
Constraints on message sequences
<Message>
<Action>
LoginResponse
</Action>
...
</Message>...
Three types of constraints (II)
Constraints on message sequences
<Message>
<Action>
LoginResponse
</Action>
...
</Message>...
Three types of constraints (II)
Constraints on message sequences
<Message>
<Action>
LoginResponse
</Action>
...
</Message>...
Three types of constraints (II)
Constraints on message sequences
<Message>
<Action>
LoginResponse
</Action>
...
</Message>...
Three types of constraints (III)
Data-aware sequential constraints
<Message>
<SessionKey>123</SessionKey>
<CartId>789</Car...
Three types of constraints (III)
Data-aware sequential constraints
<Message>
<SessionKey>123</SessionKey>
<CartId>789</Car...
Three types of constraints (III)
Data-aware sequential constraints
<Message>
<Action>CartAdd</Action>
<Items>
<Item>
<Item...
Three types of constraints (III)
Data-aware sequential constraints
<Message>
<Action>CartAdd</Action>
<Items>
<Item>
<Item...
Six constraints for the Beep Store

Constraints on individual messages

Constraints on message sequences

Data-aware const...
Six constraints for the Beep Store
1. The element Page must be an integer between 1 and 20.
2. The element Page is mandato...
Six constraints for the Beep Store
1. The element Page must be an integer between 1 and 20.
2. The element Page is mandato...
Six constraints for the Beep Store
1. The element Page must be an integer between 1 and 20.
2. The element Page is mandato...
System
System
Instrumentation

System
Instrumentation

System
Instrumentation
Trace

System
Instrumentation
Trace

Events

System
Instrumentation
Trace

Events

System
Trace
validation

Instrumentation
Trace

Events

System
Instrumentation

System
Instrumentation

Runtime monitoring

System
Instrumentation

Runtime monitoring

System
Instrumentation

Runtime monitoring

Overhead

System
Définition
Runtime monitoring
Étude du design d'outils pour observer et analyser un
système pendant son exécution.
Usages p...
Composantes
Structure de base d'un système de runtime monitoring:

Spécification
Système cible

Événement

État
interne

Mo...
Enforcing interface contracts at runtime

XMLHttpRequest

·
JavaScript object
·
Provided by the browser
·
All communicatio...
Enforcing interface contracts at runtime
XMLHttpRequestBB

Sylvain Hallé
Enforcing interface contracts at runtime
XMLHttpRequestBB

XMLHttpRequest

· around original
Wrapper
· same methods
Provid...
Add BeepBeep to an application
Copy BeepBeep
? in the application's directory
http://beepbeep.sourceforge.net

Include Bee...
Add BeepBeep to an application
Copy BeepBeep
? in the application's directory
http://beepbeep.sourceforge.net

Include Bee...
Add BeepBeep to an application
Copy BeepBeep
? in the application's directory
http://beepbeep.sourceforge.net

Include Bee...
Add BeepBeep to an application
Copy BeepBeep
? in the application's directory
http://beepbeep.sourceforge.net

Include Bee...
Add BeepBeep to an application
Create a contract
? file with LTL-FO+ formulas
# ------------------------------------------...
Add BeepBeep to an application
When loading
 the application, BeepBeep starts as a small
Java applet inside the page
The
...
Add BeepBeep to an application
When loading
 the application, BeepBeep starts as a small
Java applet inside the page
The
...
BeepBeep’s visible interface

?/?/?/?/?/?:0:0
Current state of monitor
for each property
T:
t:
F:
f:
?:

last message made...
On ne peut réussir un niveau sans sauter au moins
une fois
F action = jump
20
Mario ne peut jamais sauter d'une hauteur
supérieure à 20
G (action = jump → height < 20)
X
Si Mario se penche, il ne peut pas sauter tout de
suite après
G (action = crouch → X action ≠ jump)
X
Mario ne peut jamais entrer en collision avec un
ennemi lorsqu'il tient une carapace
G (action = haveShell → X action ≠ ...
Deux derniers événements
État des moniteurs
Surcharge CPU
COVERSTORY

Verified software
My computer won’t fail me
Web-browser crashes are annoying, but as far as software malfuncti...
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
À la chasse aux bugs avec la Laboratoire d'informatique formelle
Prochain SlideShare
Chargement dans…5
×

À la chasse aux bugs avec la Laboratoire d'informatique formelle

705 vues

Publié le

Brève présentation des applications des méthodes formelles développées au LIF

Publié dans : Formation
0 commentaire
2 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
705
Sur SlideShare
0
Issues des intégrations
0
Intégrations
5
Actions
Partages
0
Téléchargements
0
Commentaires
0
J’aime
2
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive

À la chasse aux bugs avec la Laboratoire d'informatique formelle

  1. 1. À la chasse aux bugs avec le Laboratoire d'informatique formelle Les mathématiques au service de l'assurance-qualité
  2. 2. NSERC CRSNG Fonds de recherche Nature et technologies
  3. 3. Ariane V 1996
  4. 4. Ariane V 1996
  5. 5. 6 rappels en 2010
  6. 6. 400 000 rappels
  7. 7. 59 500 000 000 $
  8. 8. M. Gauche M. Droit
  9. 9. M. Gauche M. Droit
  10. 10. ATELIERS GAU
  11. 11. ? !
  12. 12. Votre code ? !
  13. 13. Librairie Service web Module Votre code ? !
  14. 14. b c a
  15. 15. b Plan Devis Contrat ... c a
  16. 16. b c a
  17. 17. b c a b c a
  18. 18. b ? c a b c a ?
  19. 19. b ? c a b c a ?
  20. 20. TESTING
  21. 21. T ES T M.
  22. 22. ? Pas exhaustif T ES T M.
  23. 23. ? Pas exhaustif T ES T M. Long…
  24. 24. ? Basé sur la compréhension du testeur Pas exhaustif ? T ES T M. Long…
  25. 25. ATELIERS
  26. 26. ATELIERS
  27. 27. ATELIERS
  28. 28. ATEL GAU
  29. 29. X ATEL GAU
  30. 30. X ATELIERS GAU
  31. 31. X ATELIERS GAU ? ?
  32. 32. Programmation Tests unitaires Tests fonctionnels Tests système Après sortie
  33. 33. % de bugs introduits 85% Programmation Tests unitaires Tests fonctionnels Tests système Après sortie
  34. 34. % de bugs introduits % de bugs trouvés 85% Programmation Tests unitaires Tests fonctionnels Tests système Après sortie
  35. 35. % de bugs introduits % de bugs trouvés coût de réparation 16 000$ 85% 1000$ 25$ Programmation 100$ Tests unitaires 250$ Tests fonctionnels Tests système Après sortie
  36. 36. 1. jlq ie 2. fjf ...
  37. 37. p. 3 p. 8
  38. 38. Toutes les histoires possibles
  39. 39. Toutes les histoires possibles Toutes les histoires du livre
  40. 40. Toutes les histoires possibles Toutes les histoires plausibles Toutes les histoires du livre
  41. 41. Toutes les histoires possibles Toutes les histoires plausibles Toutes les histoires du livre
  42. 42. Combien d'histoires possibles ?
  43. 43. Combien d'histoires possibles ? 1 2
  44. 44. Combien d'histoires possibles ? 1 2 2 1
  45. 45. Combien d'histoires possibles ? 1 2 2 1 1 2 3
  46. 46. Combien d'histoires possibles ? 1 2 1 2 3 2 1 1 3 2
  47. 47. Combien d'histoires possibles ? 1 2 1 2 3 2 1 1 3 2 2 1 3
  48. 48. Combien d'histoires possibles ? 1 2 1 2 3 2 1 1 3 2 2 1 3 2 3 1
  49. 49. Combien d'histoires possibles ? 1 2 1 2 3 2 1 1 3 2 2 1 3 2 3 1 3 1 2
  50. 50. Combien d'histoires possibles ? 1 2 1 2 3 2 1 1 3 2 2 1 3 2 3 1 3 1 2 3 2 1
  51. 51. Histoires Combien d'histoires possibles ? 1 2 3 Pages 4 5
  52. 52. Histoires Combien d'histoires possibles ? 1 1 2 3 Pages 4 5
  53. 53. Histoires Combien d'histoires possibles ? 1 1 2 2 3 Pages 4 5
  54. 54. Histoires Combien d'histoires possibles ? 6 1 1 2 2 3 Pages 4 5
  55. 55. Histoires Combien d'histoires possibles ? 6 1 1 24 2 2 3 Pages 4 5
  56. 56. Histoires Combien d'histoires possibles ? 6 1 1 24 120 4 5 2 2 3 Pages
  57. 57. Histoires Combien d'histoires possibles ? 6 1 1 24 120 4 5 2 2 3 Pages
  58. 58. LEM 7500 lignes
  59. 59. LEM 7500 lignes Chevy Volt 10 000 000 lignes
  60. 60. LEM 7500 lignes Windows 7 50 000 000 lignes Chevy Volt 10 000 000 lignes
  61. 61. Windows 7 50 000 000 lignes Chevy Volt 10 000 000 lignes
  62. 62. Windows 7 50 000 000 lignes
  63. 63. 10 km
  64. 64. 1 km/h 10 km 1 km/h
  65. 65. 1 km/h 10 km 2 km/h 1 km/h
  66. 66. 1 km/h 10 km 2 km/h 1 km/h
  67. 67. 2M$ ains @ 1 km/h 2 tr 10 km 2 km/h 1 km/h
  68. 68. 2M$ ains @ 1 km/h 2 tr 10 km 20M$ rails @ 2 km/h 1 km/h
  69. 69. 2M$ ains @ 1 km/h 2 tr 10 km 20M$ rails @ 3.90$ rgot @ esca 2 km/h 1 km/h
  70. 70. 2M$ ains @ 1 km/h 2 tr 10 km 20M$ rails @ . _ 0$ 3_9___ rg_ot _@__ esca _ __ __ ____ 2 km/h 0$ 003.9 4 000 2 1 km/h
  71. 71. Position train 1 = 1 x t
  72. 72. Position train 1 = 1 x t Position train 2 = 10 - (1 x t)
  73. 73. Position train 1 = 1 x t Position train 2 = 10 - (1 x t) Moment de l'impact ?
  74. 74. Position train 1 = 1 x t Position train 2 = 10 - (1 x t) Moment de l'impact ? 1 x t = 10 - (1 x t)
  75. 75. Position train 1 = 1 x t Position train 2 = 10 - (1 x t) Moment de l'impact ? 1 x t = 10 - (1 x t) 2 x t = 10
  76. 76. Position train 1 = 1 x t Position train 2 = 10 - (1 x t) Moment de l'impact ? 1 x t = 10 - (1 x t) 2 x t = 10 t=5
  77. 77. Position train 1 = 1 x t Position train 2 = 10 - (1 x t) Moment de l'impact ? 1 x t = 10 - (1 x t) 2 x t = 10 t=5 Distance escargot: 2 x 5 = 10 km
  78. 78. MATH S
  79. 79. E E
  80. 80. Logique mathematique E E
  81. 81. Logique mathematique E E Combinatoire des mots
  82. 82. Logique mathematique E E Combinatoire des mots Theorie des graphes
  83. 83. Un jeu mathématique On vous po se le problè me suivant: Si le train a rrive en ret ard et qu'il pas de taxis n'y a à la gare, a lors Jean ar en retard à rive son rendezvous. Jean n'est p as en retard à son rende vous. zLe train est arrivé en re tard. ? Y avait-il d es taxis à la gare? Sylvain Hallé - 8INF958 Spécification, test et vérification
  84. 84. Le 'calculus ratiocinator' Dès 1665, Leibniz imagine un langage universel, la lingua characteristica universalis, qui vise à... Représenter toutes les choses sujettes au raisonnement Établir des liens entre elles au moyen d'un calcul de la raison Gottfried Wilhelm Leibniz (1646-1716) Sylvain Hallé - 8INF958 Spécification, test et vérification
  85. 85. Le 'calculus ratiocinator' « Alors, il ne sera plus besoin entre deux philosophes de discussions plus longues qu'entre deux mathématiciens, puisqu'il suffira qu'ils saisissent leur plume, qu'ils s'asseyent à leur table de calcul (en faisant appel, s'ils le souhaitent, à un ami) et qu'ils se disent l'un à l'autre : « Calculons ! » Gottfried Wilhelm Leibniz (1646-1716) Sylvain Hallé - 8INF958 Spécification, test et vérification
  86. 86. Quelques définitions Donnons à chaque affirmation élémentaire un symbole: p q r Le train est en retard Il y a des taxis à la gare Jean arrive en retard à son rendez-vous Variables propositionnelles Chacune de ces variables peut prendre l'une ou l'autre de deux valeurs possibles: Vrai (aussi noté V, 1, ⊤) Faux (aussi noté F, 0, ⊥) Sylvain Hallé - 8INF958 Spécification, test et vérification
  87. 87. Quelques définitions Chacune des données du problème est un énoncé liant certaines affirmations élémentaires au moyen de connecteurs logiques ∧ ∨ → ↔ ¬ Conjonction (et) Disjonction (ou) Implication (si ... alors ...) Équivalence (... si et seulement si ...) Négation (non) Sylvain Hallé - 8INF958 Spécification, test et vérification
  88. 88. Quelques définitions On peut donc écrire symboliquement chacun des énoncés de l'énigme: Si l'avion arrive en retard et qu'il n'y a pas de taxis à la gare, alors Jean arrive en retard à son rendez-vous (p ∧ ¬q) → r Jean n'est pas arrivé en retard à son rendez-vous ¬r L'avion est arrivé en retard p Sylvain Hallé - 8INF958 Spécification, test et vérification
  89. 89. Comment résoudre le problème? L'énigme a été réduite au problème symbolique suivant: Étant donné que... (p ∧ ¬q) → r ¬r p ...sont vraies, peut-on conclure que q est vraie? Comment peut-on le trouver? Sylvain Hallé - 8INF958 Spécification, test et vérification
  90. 90. Valuation Une valuation est une fonction ν qui affecte exactement une valeur à chaque variable propositionnelle Exemple: ν(p) = ⊤, ν(q) = ⊤, ν(r) = ⊥ On peut calculer la valuation d'une expression composée à partir de la valuation de ses opérandes. Si φ et ψ sont des expressions dont la valuation est connue, alors... ν(φ ∧ ψ) = ⊤ lorsque ν(φ) = ν(ψ) = ⊤, sinon ⊥ ν(φ ∨ ψ) = ⊥ lorsque ν(φ) = ν(ψ) = ⊥, sinon ⊤ ν(φ → ψ) = ⊥ lorsque ν(φ) = ⊤ et ν(ψ) = ⊥, sinon ⊤ ν(φ ↔ ψ) = ⊤ lorsque ν(φ) = ν(ψ), sinon ⊥ ν(¬φ) = ⊤ lorsque ν(φ) = ⊥, et vice versa Sylvain Hallé - 8INF958 Spécification, test et vérification
  91. 91. Modèle Si φ est une expression et ν une valuation telle que ν(φ) = ⊤, on dit que ν satisfait φ, ce que l'on peut écrire ν⊨φ Dans ce cas, on dit aussi que ν est un modèle de φ. Exercice 1. Si l'on utilise n variables propositionnelles, combien de valuations différentes peut-on créer? 2. Combien y a-t-il de modèles des expressions... a) p ∨ q b) (p ∧ q) → ¬p Sylvain Hallé - 8INF958 Spécification, test et vérification
  92. 92. Table de vérité On peut calculer la valeur d'une expression pour toutes les valuations possibles au moyen d'une table de vérité p q (p ∧ q) → ¬p ⊥ ⊥ ⊤ ⊤ ⊥ ⊤ ⊥ ⊤ Sylvain Hallé - 8INF958 Spécification, test et vérification
  93. 93. Table de vérité On peut calculer la valeur d'une expression pour toutes les valuations possibles au moyen d'une table de vérité p q (p ∧ q) → ¬p ⊥ ⊥ ⊤ ⊤ ⊥ ⊤ ⊥ ⊤ ⊥ ⊥ ⊥ ⊤ Sylvain Hallé - 8INF958 Spécification, test et vérification
  94. 94. Table de vérité On peut calculer la valeur d'une expression pour toutes les valuations possibles au moyen d'une table de vérité p q (p ∧ q) → ¬p ⊥ ⊥ ⊤ ⊤ ⊥ ⊤ ⊥ ⊤ ⊥ ⊥ ⊥ ⊤ ⊤ ⊤ ⊥ ⊥ Sylvain Hallé - 8INF958 Spécification, test et vérification
  95. 95. Table de vérité On peut calculer la valeur d'une expression pour toutes les valuations possibles au moyen d'une table de vérité p q (p ∧ q) → ¬p ⊥ ⊥ ⊤ ⊤ ⊥ ⊤ ⊥ ⊤ ⊥ ⊥ ⊥ ⊤ ⊥ ⊥ ⊥ ⊥ ⊤ ⊤ ⊥ ⊥ Sylvain Hallé - 8INF958 Spécification, test et vérification
  96. 96. Conséquence logique Pour résumer: 1. Les énoncés du problème original ont été formalisés en un ensemble d'énoncés logiques On vous po se le problè me suivant: Si le train ar rive en reta rd et qu'il n' pas de taxis ya à la gare, al ors Jean arri en retard à ve son rendez-v ous. Jean n'est pa s en retard à son rendez vous. Le train est arrivé en re tard. Y avait-il de s taxis ? à la gare? A = {(p ∧ ¬q) → r, ¬r, p} 2. On cherche maintenant à déterminer si la question posée (q) est une conséquence logique de A, ou autrement dit, à savoir si... A⊨q Sylvain Hallé - 8INF958 Spécification, test et vérification
  97. 97. Satisfaisabilité Une expression φ est dite satisfaisable lorsque qu'il existe au moins une valuation ν telle que ν ⊨ φ ...autrement dit, il existe un "monde" dans lequel φ est vraie On peut se convaincre que φ est satisfaisable si et seulement si ¬φ n'est pas une tautologie Problème de la satisfaisabilité (SAT) Étant donné une expression φ, trouver une valuation ν telle que ν ⊨ φ Sylvain Hallé - 8INF958 Spécification, test et vérification
  98. 98. Qui a tué tante Agatha? Quelqu'un vivant au Manoir a tué tante Agatha. Agatha, le maître d'hôtel et Charles sont les seuls à vivre au Manoir. Un tueur déteste toujours sa victime, et n'est jamais plus riche que celle-ci. Charles ne déteste personne que tante Agatha déteste. Agatha déteste tout le monde sauf le maître d'hôtel. Le maître d'hôtel déteste tous ceux qui ne sont pas plus riches que tante Agatha. Le maître d'hôtel déteste tous ceux que tante Agatha déteste. Personne ne déteste tout le monde. Sylvain Hallé - 8INF958 Spécification, test et vérification
  99. 99. Modélisation propositionnelle Une modélisation du problème en logique propositionnelle est peu commode Beaucoup de variables Beaucoup de formules répétées pour chaque variable Et si on ajoute un individu au Manoir? Peut-on faire mieux? Sylvain Hallé - 8INF958 Spécification, test et vérification
  100. 100. Éléments Le problème précédent concerne un certain nombre d'éléments... E = {Agatha, Maître d'hôtel, Charles} ...et donne une liste de faits à propos de ces éléments. Par exemple: "Tante Agatha est la victime" "Tante Agatha déteste tout le monde, sauf le maître d'hôtel" Sylvain Hallé - 8INF958 Spécification, test et vérification
  101. 101. Prédicat Un prédicat p est une fonction prenant des éléments en entrée et retournant ⊤ ou ⊥. Formellement, on écrit: n arité du prédicat p : E → {⊤,⊥} Exemples: prédicat d'arité 1 (unaire) victime(__) assassin(__) prédicats d'arité 2 (binaires) déteste(__, __) plusRicheQue(__, __) Intuitivement, un prédicat est une affirmation à propos d'un ou plusieurs éléments Sylvain Hallé - 8INF958 Spécification, test et vérification
  102. 102. Prédicat Puisqu'un prédicat retourne toujours ⊤ ou ⊥, on peut combiner les prédicats en utilisant les connecteurs de la logique propositionnelle: victime(Agatha) assassin(Charles) → plusRicheQue(Agatha, Charles) déteste(Agatha, Maître d'hôtel) ∨ assassin(Agatha) Problème: que fait-on d'une affirmation comme "Un assassin déteste toujours sa victime" ? Sylvain Hallé - 8INF958 Spécification, test et vérification
  103. 103. Prédicat Méthode #1 (façon propositionnelle): énumérer les cas possibles ((assassin(Agatha) ∧ victime(Charles)) → déteste(Agatha, Charles)) ∧ ((assassin(Charles) ∧ victime(Agatha)) → déteste(Charles, Agatha)) ∧ ... Peu commode... Sylvain Hallé - 8INF958 Spécification, test et vérification
  104. 104. Quantificateurs Méthode #2: utiliser des quantificateurs ∀x : ∀y : (assassin(x) ∧ victime(y)) → déteste(x,y) "pour tout x (pris dans l'ensemble E)" Intuitivement, si E = {a, b, c, ..., k}, alors ∀x : φ ≡ φ[x/a] ∧ φ[x/b] ∧ ... ∧ φ[x/k] où φ[x/a] est l'expression φ dans laquelle on a remplacé tous les x par a Ex.: ∀x : assassin(x) ≡ assassin(Agatha) ∧ assassin(Charles) ∧ assassin(Maître d'hôtel) Sylvain Hallé - 8INF958 Spécification, test et vérification
  105. 105. Vérification automatique
  106. 106. Exemple 1 Gestion des réseaux
  107. 107. Ne pas appuyer sur si est allumé
  108. 108. Ne pas appuyer sur si est allumé Actionner en même temps et
  109. 109. Ne pas appuyer sur si est allumé Actionner en même temps et Actionner seulement si indique 2
  110. 110. NON Un seul! Tjrs >2
  111. 111. X
  112. 112. ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.4 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.6 remote-as 100 ...
  113. 113. ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.4 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.6 remote-as 100 ...
  114. 114. ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.4 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.6 remote-as 100 ... ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.6 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.4 remote-as 100 ...
  115. 115. ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.4 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.6 remote-as 100 ... ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.6 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.4 remote-as 100 ...
  116. 116. ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.4 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.6 remote-as 100 ... ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.6 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.4 remote-as 100 ...
  117. 117. ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.4 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.6 remote-as 100 ... ip vrf Customer_A rd 100:110 route-target export 100:1000 route-target import 100:1000 ! ip vrf Customer_B rd 100:120 route-target export 100:2000 route-target import 100:2000 ! interface Loopback0 ip address 10.10.10.6 255.255.255.255 ip router isis ! interface Loopback101 ip vrf forwarding Customer_A ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! interface Loopback102 ip vrf forwarding Customer_B ip address 200.0.4.1 255.255.255.0 no ip directed-broadcast ! router bgp 100 bgp log-neighbor-changes neighbor 10.10.10.4 remote-as 100 ...
  118. 118. ∀s₁ ∈ /DeviceName : ∀s₂ ∈ /DeviceName : ∀v₁ ∈ /DeviceName/s₁/ip-vrf : ∀v₂ ∈ /DeviceName/s₂/ip-vrf : v₁=v₂ → ( ∃r₁ ∈ /DeviceName/s₁/ip-vrf/v₁/rd : ∃r₂ ∈ /DeviceName/s₁/ip-vrf/v₂/rd : r₁=r₂)
  119. 119. 1 438 2
  120. 120. 1 438 2
  121. 121. 329 = 17 √
  122. 122. 329 = 17 √ 17 x 17
  123. 123. 329 = 17 √ 17 x 17
  124. 124. 329 = 17 √ 4 17 x 17 9
  125. 125. 329 = 17 √ 4 17 x 17 9
  126. 126. 329 = 17 √ 4 17 x 17 119
  127. 127. 329 = 17 √ 17 x 17 119
  128. 128. 329 = 17 √ 17 x 17 119 7
  129. 129. 329 = 17 √ 17 x 17 119 7
  130. 130. 329 = 17 √ 17 x 17 119 17
  131. 131. 329 = 17 √ 17 x 17 119 +17
  132. 132. 329 = 17 √ 17 x 17 119 +17 9
  133. 133. 329 = 17 √ 17 x 17 119 +17 9
  134. 134. 329 = 17 √ 17 x 17 119 +17 89
  135. 135. 329 = 17 √ 17 x 17 119 +17 89
  136. 136. 329 = 17 √ 17 x 17 119 +17 289
  137. 137. 329 = 17 X √ 17 x 17 119 +17 289
  138. 138. ? √329 = 17
  139. 139. ? √329 = 17 19 étapes
  140. 140. ? √329 = 17 19 étapes √329 =?
  141. 141. ? √329 = 17 19 étapes √329 =? 64 étapes
  142. 142. | | | | Nombre d'étapes 80 60 40 20 0 0 | | | | | 200 400 600 800 1000 Nombre à calculer ? √329 = 17 19 étapes √329 =? 64 étapes
  143. 143. | | | Vérifier | Nombre d'étapes 80 60 40 20 0 0 | | | | | 200 400 600 800 1000 Nombre à calculer ? √329 = 17 19 étapes √329 =? 64 étapes
  144. 144. | | | 80 60 40 20 0 Vérifier | Nombre d'étapes Calculer 0 | | | | | 200 400 600 800 1000 Nombre à calculer ? √329 = 17 19 étapes √329 =? 64 étapes
  145. 145. | | | 80 60 40 20 0 0 } 4x Vérifier | Nombre d'étapes Calculer | | | | | 200 400 600 800 1000 Nombre à calculer ? √329 = 17 19 étapes √329 =? 64 étapes
  146. 146. | | Vérifier | Complexité | Calculer | | | | Taille du problème |
  147. 147. | | Vérifier | Complexité | Calculer | | | | Taille du problème |
  148. 148. | | | Vérifier | Complexité } Calculer | | | | Taille du problème | !!!
  149. 149. Complexité Étant donné une expression à n variables, toutes les méthodes vues jusqu'ici ont une complexité en pire cas de l'ordre de 2n Théorème (Cook, 1971) Le problème SAT est un problème NP-complet. Conséquence: on ne sait pas à l'heure actuelle s'il existe un algorithme SAT dont le pire cas serait inférieur à O(2n ) Si oui, alors P=NP ! Stephen A. Cook (1939-) Sylvain Hallé - 8INF958 Spécification, test et vérification
  150. 150. Ajax web application Cloud computing Sylvain Hallé
  151. 151. Ajax web application Cloud computing JavaScript Sylvain Hallé
  152. 152. Ajax web application Cloud computing eG Be es atl Be el am n C va ara C Sylvain Hallé
  153. 153. Ajax web application Cloud computing <a onclick="javascript: findBand(’Beatles’)"> eG Be es atl Be el am n C va ara C Sylvain Hallé
  154. 154. Ajax web application Cloud computing findBand(’Beatles’) Sylvain Hallé
  155. 155. Ajax web application Cloud computing findBand(’Beatles’) Sylvain Hallé
  156. 156. Ajax web application Cloud computing artist =beatles findBand(’Beatles’) Sylvain Hallé
  157. 157. Ajax web application Cloud computing artist =beatles findBand(’Beatles’) Sylvain Hallé
  158. 158. Ajax web application Cloud computing artist =beatles document.innerHTML = Sylvain Hallé findBand(’Beatles’)
  159. 159. Ajax web application Cloud computing artist =beatles document.innerHTML = C Page is updated, not reloaded Sylvain Hallé findBand(’Beatles’)
  160. 160. Ajax web application Cloud computing artist =beatles document.innerHTML = C Server response only provides updated contents Sylvain Hallé findBand(’Beatles’)
  161. 161. Ajax web application Cloud computing <Search> <Artist> beatles </Artist> </Search> Does not need to be a URL Does not need to be HTML <SearchResults> <Item> <Artist> The Beatles </Artist> <Title> Rubber Soul </Title> </Item> ... </SearchResults> Sylvain Hallé
  162. 162. Conceptually... Cloud computing Sylvain Hallé
  163. 163. Conceptually... Cloud computing Sylvain Hallé
  164. 164. Conceptually... Cloud computing Sylvain Hallé
  165. 165. Conceptually... Cloud computing Sylvain Hallé
  166. 166. Conceptually... Cloud computing Sylvain Hallé
  167. 167. Conceptually... Cloud computing Sylvain Hallé
  168. 168. Conceptually... Cloud computing Web service Sylvain Hallé Web client
  169. 169. Main issue Not like traditional programming: all input-output is exchanged unverified! Possible mismatch between messages sent and messages expected Sylvain Hallé
  170. 170. Interface contracts All possible sequences of all possibles messages with all possible values Sylvain Hallé
  171. 171. Interface contracts Constraints on individual messages Sylvain Hallé
  172. 172. Interface contracts Constraints on individual messages Sylvain Hallé Constraints on sequences
  173. 173. Interface contracts Data-aware sequential constraints Constraints on individual messages Sylvain Hallé Constraints on sequences
  174. 174. Interface contracts Interface contract = valid (error-free) interactions Data-aware sequential constraints Constraints on individual messages Sylvain Hallé Constraints on sequences
  175. 175. Three types of constraints (I) Constraints on individual messages <Message> <Action>ItemSearch</Action> <Results>5</Results> <Keyword>beatles</Keyword> <Page>1</Page> </Message> Examples: Sylvain Hallé
  176. 176. Three types of constraints (I) Constraints on individual messages <Message> <Action>ItemSearch</Action> <Results>5</Results> <Keyword>beatles</Keyword> <Page>1</Page> </Message> Examples: 1. The element Page must be an integer between 1 and 20." /M Sylvain Hallé
  177. 177. Three types of constraints (I) Constraints on individual messages <Message> <Action>ItemSearch</Action> <Results>5</Results> <Keyword>beatles</Keyword> <Page>1</Page> </Message> Examples: 1. The element Page must be an integer between 1 and 20." /M 2. The element Page is mandatory only if Results is present, otherwise it is forbidden. Sylvain Hallé
  178. 178. Expressing data constraints Simple XPath Fetches portions of an XML document according to a query path = sequence of tags V pM ® : Q ´2 Examples: p ’’, m) = {1,2,4} (‘‘/a/b/c p ’’, m) = Æ (‘‘/a/b/d Sylvain Hallé { M: set of messages Q: set of XML query paths V: set of atomic values <a> <b> <c>1</c> <c>2</c> </b> <d> <c>9</c> </d> <b> <c>3</c> </b> </a> m
  179. 179. Expressing data constraints XPath term Expresses properties over values fetched by XPath expressions p "Û v Î (x) j (q,m) q x : j (v) for every p $ Û vÎ (x) j (q,m) q x : j (v) for some Examples: "x < 5 /a/b/c x : $ /a/b x : $ : "y £ x /a/b/c x /a/b/c y : Sylvain Hallé <a> <b> <c>1</c> <c>2</c> </b> <d> <c>9</c> </d> <b> <c>3</c> </b> </a> { Q, M, path For some message m Î q Î m 2
  180. 180. Expressing data constraints <Message> <Action>ItemSearch</Action> <Results>5</Results> <Keyword>beatles</Keyword> <Page>1</Page> </Message> 1. The element Page must be an integer between 1 and 20." /M 2. The element Page is mandatory only if Results is present, otherwise it is forbidden. Sylvain Hallé 2
  181. 181. Expressing data constraints <Message> <Action>ItemSearch</Action> <Results>5</Results> <Keyword>beatles</Keyword> <Page>1</Page> </Message> 1. " x : x > 0 Ù x < 21 /Message/Page 2. The element Page is mandatory only if Results is present, otherwise it is forbidden. Sylvain Hallé 2
  182. 182. Expressing data constraints <Message> <Action>ItemSearch</Action> <Results>5</Results> <Keyword>beatles</Keyword> <Page>1</Page> </Message> 1. " x : x > 0 Ù x < 21 /Message/Page 2. $ /Message/Page x : Sylvain Hallé Û $ /Message/Results y : 2
  183. 183. Three types of constraints (II) Constraints on message sequences <Message> <Action> LoginResponse </Action> ... </Message> <Message> <Action> Login </Action> ... </Message> <Message> <Action> CartCreate </Action> ... </Message> Examples: Sylvain Hallé 2
  184. 184. Three types of constraints (II) Constraints on message sequences <Message> <Action> LoginResponse </Action> ... </Message> X <Message> <Action> Login </Action> ... </Message> <Message> <Action> CartCreate </Action> ... </Message> Examples: 3. The Login request cannot be resent if its response is" / successful." / . Sylvain Hallé 2
  185. 185. Three types of constraints (II) Constraints on message sequences <Message> <Action> LoginResponse </Action> ... </Message> X <Message> <Action> Login </Action> ... </Message> <Message> <Action> CartCreate </Action> ... </Message> Examples: 3. The Login request cannot be resent if its response is" / successful." / . 4. CartCreate must follow a successful LoginResponse." / Sylvain Hallé 2
  186. 186. Linear Temporal Logic Alphabet (A) Set of possible messages Trace (A*) Sequence of messages Sylvain Hallé
  187. 187. Linear Temporal Logic LTL formula Ga Xa Fa aWb = assertion on the sequence of states in a trace "always a" "a in the next" "eventually a" "a until b" A B A C D C B E G (a ® X b) FALSE Sylvain Hallé ... ØW c (d Ú e) TRUE
  188. 188. Linear Temporal Logic Well-known results: 1. For every LTL formula jexists a Büchi automaton A j , there such that for every (infinite) trace s : s sj | j L(A ) = Û Î -regular i.e. LTL describes w languages 2. The alphabet symbols can be generalized to finite sets of Boolean propositions Þ Let’s use XPath terms as our Boolean propositions Sylvain Hallé
  189. 189. Three types of constraints (II) Constraints on message sequences <Message> <Action> LoginResponse </Action> ... </Message> X <Message> <Action> Login </Action> ... </Message> <Message> <Action> CartCreate </Action> ... </Message> Examples: 3. The Login request cannot be resent if its response is" / successful." / . 4. CartCreate must follow a successful LoginResponse." / Sylvain Hallé 2
  190. 190. Three types of constraints (II) Constraints on message sequences <Message> <Action> LoginResponse </Action> ... </Message> X <Message> <Action> Login </Action> ... </Message> <Message> <Action> CartCreate </Action> ... </Message> Examples: 3. G (" /Message/Action a : a = LoginResponse ® (X G " Login)) /Message/Action a’ : a’ ¹ . 4. CartCreate must follow a successful LoginResponse." / Sylvain Hallé 2
  191. 191. Three types of constraints (II) Constraints on message sequences <Message> <Action> LoginResponse </Action> ... </Message> Examples: X <Message> <Action> Login </Action> ... </Message> <Message> <Action> CartCreate </Action> ... </Message> Xpath terms 3. G (" /Message/Action a : a = LoginResponse ® (X G " Login)) /Message/Action a’ : a’ ¹ . 4. CartCreate must follow a successful LoginResponse." / Sylvain Hallé 2
  192. 192. Three types of constraints (II) Constraints on message sequences <Message> <Action> LoginResponse </Action> ... </Message> Examples: X <Message> <Action> Login </Action> ... </Message> <Message> <Action> CartCreate </Action> ... </Message> Xpath terms 3. G (" /Message/Action a : a = LoginResponse ® (X G " Login)) /Message/Action a’ : a’ ¹ . 4. (" CartCreate) /Message/Action a : a ¹ W (" LoginResponse) /Message/Action a’ : a’ = Sylvain Hallé 2
  193. 193. Three types of constraints (III) Data-aware sequential constraints <Message> <SessionKey>123</SessionKey> <CartId>789</CartId> ... </Message> <Message> <SessionKey>123</SessionKey> <CartId>789</CartId> ... </Message> Examples: 5. There can be at most one active cart ID per session key." / Sylvain Hallé 2
  194. 194. Three types of constraints (III) Data-aware sequential constraints <Message> <SessionKey>123</SessionKey> <CartId>789</CartId> ... </Message> <Message> <SessionKey>123</SessionKey> <CartId>789</CartId> ... </Message> Examples: 5. G (" /Message/SessionKey k : " /Message/CartId c : G (" /Message/SessionKey k’ : " /Message/CartId c’ : k = k’ ® c = c’)) Sylvain Hallé 2
  195. 195. Three types of constraints (III) Data-aware sequential constraints <Message> <Action>CartAdd</Action> <Items> <Item> <ItemId>567</ItemId> ... Examples: <Message> <Action>CartAdd</Action> <Items> <Item> <ItemId>567</ItemId> ... X 6. You cannot add the same item twice to the shopping cart." / Sylvain Hallé 2
  196. 196. Three types of constraints (III) Data-aware sequential constraints <Message> <Action>CartAdd</Action> <Items> <Item> <ItemId>567</ItemId> ... Examples: <Message> <Action>CartAdd</Action> <Items> <Item> <ItemId>567</ItemId> ... X 6. G (" /Message/Action a : a = CartAdd ® " /Message/ItemId i : X G (" /Message/Action a’ : a’ = CartAdd ® i’ : i ¹ " i’ )) /Message/ItemId Sylvain Hallé 2
  197. 197. Six constraints for the Beep Store Constraints on individual messages Constraints on message sequences Data-aware constraints Sylvain Hallé
  198. 198. Six constraints for the Beep Store 1. The element Page must be an integer between 1 and 20. 2. The element Page is mandatory only if Results is present, otherwise it is forbidden. Constraints on message sequences Data-aware constraints Sylvain Hallé
  199. 199. Six constraints for the Beep Store 1. The element Page must be an integer between 1 and 20. 2. The element Page is mandatory only if Results is present, otherwise it is forbidden. 3. The Login request cannot be resent if its response is successful. 4. CartCreate must follow a successful LoginResponse. Data-aware constraints Sylvain Hallé
  200. 200. Six constraints for the Beep Store 1. The element Page must be an integer between 1 and 20. 2. The element Page is mandatory only if Results is present, otherwise it is forbidden. 3. The Login request cannot be resent if its response is successful. 4. CartCreate must follow a successful LoginResponse. 5. There can be at most one active cart ID per session key. 6. You cannot add the same item twice to the shopping cart. Sylvain Hallé
  201. 201. System
  202. 202. System
  203. 203. Instrumentation System
  204. 204. Instrumentation System
  205. 205. Instrumentation Trace System
  206. 206. Instrumentation Trace Events System
  207. 207. Instrumentation Trace Events System
  208. 208. Trace validation Instrumentation Trace Events System
  209. 209. Instrumentation System
  210. 210. Instrumentation Runtime monitoring System
  211. 211. Instrumentation Runtime monitoring System
  212. 212. Instrumentation Runtime monitoring Overhead System
  213. 213. Définition Runtime monitoring Étude du design d'outils pour observer et analyser un système pendant son exécution. Usages possibles: Testing/débogage Sécurité et détection d'intrusions Protection contre les fautes/pannes Compréhension de programmes Plusieurs noms: runtime verification, runtime checking, dynamic analysis, trace analysis, fault protection, ... Sylvain Hallé - 8INF958 Spécification, test et vérification
  214. 214. Composantes Structure de base d'un système de runtime monitoring: Spécification Système cible Événement État interne Moniteur Senseur Verdict Réaction (facultatif) Sylvain Hallé - 8INF958 Spécification, test et vérification
  215. 215. Enforcing interface contracts at runtime XMLHttpRequest · JavaScript object · Provided by the browser · All communications to monitor already centralized: ‘‘no’’ instrumentation Sylvain Hallé
  216. 216. Enforcing interface contracts at runtime XMLHttpRequestBB Sylvain Hallé
  217. 217. Enforcing interface contracts at runtime XMLHttpRequestBB XMLHttpRequest · around original Wrapper · same methods Provides · messages before Checks relaying them Sylvain Hallé LTL-FO+ algorithm
  218. 218. Add BeepBeep to an application Copy BeepBeep ? in the application's directory http://beepbeep.sourceforge.net Include BeepBeep  myapplication.html <html> <head> <title>My Application </title> <script type="text/javascript" href="myapplication.js"/> </head> <body> ... </body> </html> Sylvain Hallé
  219. 219. Add BeepBeep to an application Copy BeepBeep ? in the application's directory http://beepbeep.sourceforge.net Include BeepBeep  myapplication.html <html> <head> <title>My Application </title> <script type="text/javascript" href="myapplication.js"/> <script type="text/javascript" href="beepbeep.js"/> </head> <body> ... </body> </html> Sylvain Hallé
  220. 220. Add BeepBeep to an application Copy BeepBeep ? in the application's directory http://beepbeep.sourceforge.net Include BeepBeep  myapplication.html <html> <head> <title>My Application </title> <script type="text/javascript" href="myapplication.js"/> <script type="text/javascript" href="beepbeep.js"/> </head> <body> ... </body> </html> Sylvain Hallé myapplication.js // Initializations ... req = new XMLHttpRequest(); ... function abc() { ... req.send(some_message); }
  221. 221. Add BeepBeep to an application Copy BeepBeep ? in the application's directory http://beepbeep.sourceforge.net Include BeepBeep  beepstore.html <html> <head> <title>My Application </title> <script type="text/javascript" href="myapplication.js"/> <script type="text/javascript" href="beepbeep.js"/> </head> <body> ... </body> </html> Sylvain Hallé beepstore.js // Initializations ... req = new XMLHttpRequestBB(); ... function abc() { ... req.send(some_message); }
  222. 222. Add BeepBeep to an application Create a contract ? file with LTL-FO+ formulas # ------------------------------------------------------# BeepBeep contract file for the Beep Store # ------------------------------------------------------% The element Page must be an integer between 1 and 20. ; G ([p /Message/Page] (((p) > ({0})) & ((p) < ({21})))) % The element Page is mandatory only if Results is present, otherwise it is forbidden. ; G ([a /Message/Action] (((a) = ({ItemSearch})) -> ( ((<r /Message/Results> ({TRUE})) -> (<p /Message/Page> ({TRUE}))) & ((<p /Message/Page> ({TRUE})) -> ( <r /Message/Results> ({TRUE})))))) % The Login request cannot be resent if its response is successful. ; G ([a /Message/Action] (((a) = ({LoginResponse})) -> (X (G ([b /Message/Action] (!((b) = ({Login})))))))) Sylvain Hallé } Caption: used when violations are discovered Plain-text LTL-FO+ (automatically parsed)
  223. 223. Add BeepBeep to an application When loading  the application, BeepBeep starts as a small Java applet inside the page The Beep Store Sign in or register Search: Search results for ‘Beatles’ What is this? Login Rubber Soul The Beatles Ask for account Contact us Fault parameters Yellow Submarine The Beatles ?/?/?/?/?/?:0:0 Sylvain Hallé GO Your Cart
  224. 224. Add BeepBeep to an application When loading  the application, BeepBeep starts as a small Java applet inside the page The Beep Store Sign in or register Search: Search results for ‘Beatles’ What is this? Login Rubber Soul The Beatles Ask for account Contact us Fault parameters ?/?/?/?/?/?:0:0 Sylvain Hallé Yellow Submarine The Beatles GO Your Cart
  225. 225. BeepBeep’s visible interface ?/?/?/?/?/?:0:0 Current state of monitor for each property T: t: F: f: ?: last message made it true is true last message made it false is false not yet true/false Sylvain Hallé Number of messages processed Cumulative processing time (in ms)
  226. 226. On ne peut réussir un niveau sans sauter au moins une fois F action = jump
  227. 227. 20 Mario ne peut jamais sauter d'une hauteur supérieure à 20 G (action = jump → height < 20)
  228. 228. X Si Mario se penche, il ne peut pas sauter tout de suite après G (action = crouch → X action ≠ jump)
  229. 229. X Mario ne peut jamais entrer en collision avec un ennemi lorsqu'il tient une carapace G (action = haveShell → X action ≠ collision) ou mieux G (action = haveShell → (action ≠ collision U action = dropShell))
  230. 230. Deux derniers événements
  231. 231. État des moniteurs
  232. 232. Surcharge CPU
  233. 233. COVERSTORY Verified software My computer won’t fail me Web-browser crashes are annoying, but as far as software malfunctions go, the consequences are mild. With a plane’s autopilot or the control room of a nuclear power station, it’s another matter. As our lives become ever more saturated with computers, how can we know they won’t fail? Currently, we systematically test all conceivable scenarios under which they might. A better insurance might be logic. [...] 32 | New Scientist | 16 October 2010

×