A Few Things We Heard About RV Tools (Position Paper)
Runtime monitoring de propriétés temporelles par (streaming) XML
1. Sylvain Hallé
Sylvain Hallé
Lab
Université du Québec à Montréal
Montréal, CANADA
Laboratoire de téléinformatique
UQAM
Runtime monitoring de propriétés
temporelles par (streaming) XML
2. Sylvain Hallé
Interaction de (deux ou plusieurs)
! Deux entités échangent des
services web
messages
Utilisateur
Service
Mise en contexte
3. Sylvain Hallé
Interaction de (deux ou plusieurs)
! Deux entités échangent des
services web
messages
Utilisateur
Service
Mise en contexte
A
4. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
A
Utilisateur
Service
Mise en contexte
5. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
A
Utilisateur
Service
Mise en contexte
As =
7. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
D
Utilisateur
Service
Mise en contexte
BA Ds =
8. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
D
Utilisateur
Service
Mise en contexte
BA Ds =
9. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
Utilisateur
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Mise en contexte
BA Ds =
10. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
! Contraintes sur le séquencement des messages: certaines traces
(interdites)
services web
trace
invalides
Utilisateur
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Mise en contexte
BA Ds =
11. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
! Contraintes sur le séquencement des messages: certaines traces
(interdites)
services web
trace
invalides
Utilisateur
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Mise en contexte
Comment
le
savoir?
BA Ds =
12. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
! Contraintes sur le séquencement des messages: certaines traces
(interdites)
services web
trace
invalides
Utilisateur
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Mise en contexte
BA D
Utilisons pour caractériser
les traces permises
LTL
Comment
le
savoir?
s =
13. Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
! Contraintes sur le séquencement des messages: certaines traces
(interdites)
services web
trace
invalides
Service
Impossible
d'envoyer D après
avoir envoyé
un A !
Mise en contexte
G (a XG d)® Ø
BA D
Utilisons pour caractériser
les traces permises
LTL
s =
20. Sylvain Hallé
Qu'en est-il du des messages?contenu
M
6
Service
Utilisateur
Mise en contexte
C
4
A
3
M
6s =
21. Sylvain Hallé
Qu'en est-il du des messages?contenu
Service
M
6
Utilisateur
Mise en contexte
C
4
A
3
M
6s =
22. Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Service
M
6
Utilisateur
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
Mise en contexte
C
4
A
3
M
6s =
23. Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Service
M
6
Utilisateur
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
Mise en contexte
C
4
A
3
M
6s =
24. Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Service
M
6
Utilisateur
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
Mise en contexte
Comment
le
savoir?
C
4
A
3
M
6s =
25. Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Service
M
6
Utilisateur
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
Mise en contexte
C
4
A
3
M
6
Comment
le
savoir?
LTL peut-il toujours caractériser
les traces permises?
s =
26. Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Service
M doit avoir
la même valeur
qu'un A envoyé
auparavant!
Mise en contexte
F ( : a( ) F m( ))$x x xÙ
C
4
A
3
M
6
LTL peut-il toujours caractériser
les traces permises?
s =
27. Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Mise en contexte
Besoin d'un mécanisme pour...
F ( : a( ) F m( ))$x x xÙ
C
4
A
3
M
6
LTL peut-il toujours caractériser
les traces permises?
s =
28. Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Mise en contexte
Besoin d'un mécanisme pour...
F ( : a( ) F m( ))$x x xÙ
1. au contenuAccéder
C
4
A
3
M
6
LTL peut-il toujours caractériser
les traces permises?
s =
29. Sylvain Hallé
Qu'en est-il du des messages?
! Le contenu des données influence
le comportement... entre
contenu
plusieurs messages
Mise en contexte
Besoin d'un mécanisme pour...
F ( : a( ) F m( ))$x x xÙ
1. au contenuAccéder
2. des valeursComparer
C
4
A
3
M
6
LTL peut-il toujours caractériser
les traces permises?
s =
30. Sylvain Hallé
Les messages considérés sont des documents XML <message>
<a>
<b>1</b>
<b>2</b>
</a>
<c>3</c>
</message>
LTL-FO+
31. Sylvain Hallé
Les messages considérés sont des documents XML
LTL-FO+ = LTL + quantification du premier
ordre sur les éléments
<message>
<a>
<b>1</b>
<b>2</b>
</a>
<c>3</c>
</message>
s |= $ x : j(x) Û $k : k Îf(s ,p) ETp 0
s |= j(k)
LTL-FO+
32. Sylvain Hallé
Les messages considérés sont des documents XML
LTL-FO+ = LTL + quantification du premier
ordre sur les éléments
p = argument d'une fonction f...
filtre les valeurs candidates pour x...
en fonction du message courant s0
<message>
<a>
<b>1</b>
<b>2</b>
</a>
<c>3</c>
</message>
s |= $ x : j(x) Û $k : k Îf(s ,p) ETp 0
s |= j(k)
LTL-FO+
33. Sylvain Hallé
Les messages considérés sont des documents XML
LTL-FO+ = LTL + quantification du premier
ordre sur les éléments
p = argument d'une fonction f...
filtre les valeurs candidates pour x...
en fonction du message courant s0
Exemple: p = requête XPath
f = évaluateur XPath
<message>
<a>
<b>1</b>
<b>2</b>
</a>
<c>3</c>
</message>
s |= $ x : j(x) Û $k : k Îf(s ,p) ETp 0
s |= j(k)
LTL-FO+
35. Sylvain Hallé
Comment vérifier qu'une trace respecte une propriété LTL-FO+?
Observations:
1. Une séquence de documents XML...
Validation de LTL-FO+
<message>
...
</message>
<message>
...
</message>
36. Sylvain Hallé
Comment vérifier qu'une trace respecte une propriété LTL-FO+?
Observations:
1. Une séquence de documents XML...
est un document XML
Validation de LTL-FO+
<trace>
</trace>
<message>
...
</message>
<message>
...
</message>
37. Sylvain Hallé
Comment vérifier qu'une trace respecte une propriété LTL-FO+?
Observations:
1. Une séquence de documents XML...
est un document XML
2. L'ordre des messages devient...
Validation de LTL-FO+
<trace>
</trace>
<message>
...
</message>
<message>
...
</message>
38. Sylvain Hallé
Comment vérifier qu'une trace respecte une propriété LTL-FO+?
Observations:
1. Une séquence de documents XML...
est un document XML
2. L'ordre des messages devient...
l'ordre des éléments message sous trace
Validation de LTL-FO+
<trace>
</trace>
<message>
...
</message>
<message>
...
</message>
}
}
1er
2e
39. Sylvain Hallé
Comment vérifier qu'une trace respecte une propriété LTL-FO+?
Observations:
1. Une séquence de documents XML...
est un document XML
2. L'ordre des messages devient...
l'ordre des éléments message sous trace
3. Les opérateurs temporels LTL deviennent...
Validation de LTL-FO+
<trace>
</trace>
<message>
...
</message>
<message>
...
</message>
}
}
1er
2e
40. Sylvain Hallé
Comment vérifier qu'une trace respecte une propriété LTL-FO+?
Observations:
1. Une séquence de documents XML...
est un document XML
2. L'ordre des messages devient...
l'ordre des éléments message sous trace
3. Les opérateurs temporels LTL deviennent...
des opérateurs sibling de XQuery
Validation de LTL-FO+
<trace>
</trace>
<message>
...
</message>
<message>
...
</message>
}
}
1er
2e
41. Sylvain Hallé
Comment vérifier qu'une trace respecte une propriété LTL-FO+?
Observations:
1. Une séquence de documents XML...
est un document XML
2. L'ordre des messages devient...
l'ordre des éléments message sous trace
3. Les opérateurs temporels LTL deviennent...
des opérateurs sibling de XQuery
Peut-on tout retraduire en XQuery?
Validation de LTL-FO+
<trace>
</trace>
<message>
...
</message>
<message>
...
</message>
}
}
1er
2e
42. Sylvain Hallé
Réponse (Hallé & Villemaire, CoopIS 2008): oui
Traduction récursive w de en XQuery ( traité plus tard)
Indicé par r = expression XQuery dénotant la racine du message
courant
Connecteurs booléens: direct
LTL -FO+
Validation de LTL-FO+
44. Sylvain Hallé
Opérateur X:
Validation de LTL-FO+
<trace>
<message>...</message>
<message>...</message>
<message>...</message>
...
<message>...</message>
</trace>
r
45. Sylvain Hallé
Opérateur X:
Validation de LTL-FO+
<trace>
<message>...</message>
<message>...</message>
<message>...</message>
...
<message>...</message>
</trace>
r
r/following-sibling::*
}
46. Sylvain Hallé
Opérateur X:
Validation de LTL-FO+
<trace>
<message>...</message>
<message>...</message>
<message>...</message>
...
<message>...</message>
</trace>
r
r/following-sibling::*r/following-sibling::*[1]
}
47. Sylvain Hallé
Opérateur X:
Validation de LTL-FO+
<trace>
<message>...</message>
<message>...</message>
<message>...</message>
...
<message>...</message>
</trace>
r
r/following-sibling::*r/following-sibling::*[1]
}
48. Sylvain Hallé
Même principe pour les autres opérateurs LTL (on passe les détails):
Attention à la sémantique de fin de trace!
Validation de LTL-FO+
50. Sylvain Hallé
J'ai dit XQuery?
Toute la traduction de LTL est comprise dans
( XQuery)XPath 2.0 Í
Validation de LTL-FO+
51. Sylvain Hallé
J'ai dit XQuery?
Toute la traduction de LTL est comprise dans
( XQuery)
J'ai dit LTL?
XPath 2.0 Í
Validation de LTL-FO+
52. Sylvain Hallé
J'ai dit XQuery?
Toute la traduction de LTL est comprise dans
( XQuery)
J'ai dit LTL?
On a LTL-FO+ pour le même prix
XPath 2.0 Í
Validation de LTL-FO+
54. Sylvain Hallé
Solution statique: on doit avoir toute la trace à l'avance (
trace validation)
Et si on veut le savoir durant l'exécution?
La traduction en XQuery ne fonctionne plus.
post mortem
Runtime monitoring
Runtime monitoring
<trace>
<message>...</message>
<message>...</message>
<message>...</message>
...
<message>...</message>
</trace>
r
r/following-sibling::*r/following-sibling::*[1]
}
55. Sylvain Hallé
Gerth, Peled, Vardi, Wolper (PSTV 1995): algorithme de runtime
monitoring pour LTL
Runtime monitoring
56. Sylvain Hallé
Gerth, Peled, Vardi, Wolper (PSTV 1995): algorithme de runtime
monitoring pour LTL
1. On décompose une formule LTL en noeuds de la forme
sous-formules qui doivent
être vraies maintenant
sous-formules qui doivent
être vraies au prochain événement
Runtime monitoring
57. Sylvain Hallé
Gerth, Peled, Vardi, Wolper (PSTV 1995): algorithme de runtime
monitoring pour LTL
1. On décompose une formule LTL en noeuds de la forme
Exemple:
sous-formules qui doivent
être vraies maintenant
sous-formules qui doivent
être vraies au prochain événement
Runtime monitoring
58. Sylvain Hallé
2. Si on tombe sur une négation, on la pousse à l'intérieur (identités
classiques + dual du U = V)
Runtime monitoring
59. Sylvain Hallé
2. Si on tombe sur une négation, on la pousse à l'intérieur (identités
classiques + dual du U = V)
3. Dans les feuilles del'arbre, G contient atomes + négations
d'atomes: on les évalue
Runtime monitoring
60. Sylvain Hallé
2. Si on tombe sur une négation, on la pousse à l'intérieur (identités
classiques + dual du U = V)
3. Dans les feuilles del'arbre, G contient atomes + négations
d'atomes: on les évalue
Verdict:
! Si toutes les feuilles contiennent : propriété violée
! Si une feuille est : propriété respectée
! Sinon:
FAUX
vide
Runtime monitoring
61. Sylvain Hallé
2. Si on tombe sur une négation, on la pousse à l'intérieur (identités
classiques + dual du U = V)
3. Dans les feuilles del'arbre, G contient atomes + négations
d'atomes: on les évalue
Verdict:
! Si toutes les feuilles contiennent : propriété violée
! Si une feuille est : propriété respectée
! Sinon:
4. Prochain événement: D copié dans G et on recommence
FAUX
vide
Runtime monitoring
62. Sylvain Hallé
Hallé & Villemaire, EDOC 2008: adaptation de l'algorithme pour
LTL-FO+
1. Les atomes deviennent des tests d'égalité:
2. Règles de décomposition des quantificateurs:
(ou l'inverse)
Runtime monitoring
64. Sylvain Hallé
Algorithme "personnalisé" de runtime monitoring
absent des environnements de production
chances d'être adopté dans l'industrie?
Peut-on réutiliser la machinerie disponible dans un environnement
de production pour faire du runtime monitoring?
Þ
Þ
Travail en cours
65. Sylvain Hallé
Flux (stream) XML: document reçu "par morceaux"
Engin streaming XQuery: évalue progressivement une expression
XQuery Q en l'envoyant dans un flux de sortie
Parsing events
<p>123</p><p>456</p>...<p> <a> 123 </a> </p> ...
Travail en cours
66. Sylvain Hallé
Idée:
1. "Morceaux" = messages
2. Formule LTL-FO+ = requête XQuery (booléenne) évaluable en
mode streaming
3. Verdict: dès qu'on lit VRAI ou FAUX dans le flux de sortie
TRUE
Travail en cours
67. Sylvain Hallé
Hallé & Villemaire, ACM SAC 2009:
! Traduction de LTL-FO+ vers XQuery
! Avec certains engins XQuery expérimentaux, ça marche
(XQPull, MXQuery)
! Pour les engins commerciaux (Saxon, DDXQ), il faut restreindre
LTL à un fragment dit
alternative
forward-only
Travail en cours
68. Sylvain Hallé
S. Hallé, R. Villemaire. (2008). XML Methods for Validation of
Temporal Properties on Message Traces With Data. Proc. CoopIS
2008, Springer LNCS (à paraître en novembre 2008).
S. Hallé, R. Villemaire. (2008). Runtime Monitoring of Message-
Based Workflows with Data. Proc. EDOC 2008, IEEE Computer
Society (à paraître... la semaine prochaine).
S. Hallé, R. Villemaire. (2009). Runtime Monitoring of Web Service
Choreographies Using Streaming XML. Soumis à ACM SAC 2009.
Références