SlideShare ist ein Scribd-Unternehmen logo
1 von 68
Downloaden Sie, um offline zu lesen
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
Sylvain Hallé
Interaction de (deux ou plusieurs)
! Deux entités échangent des
services web
messages
Utilisateur
Service
Mise en contexte
Sylvain Hallé
Interaction de (deux ou plusieurs)
! Deux entités échangent des
services web
messages
Utilisateur
Service
Mise en contexte
A
Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
A
Utilisateur
Service
Mise en contexte
Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
A
Utilisateur
Service
Mise en contexte
As =
Sylvain Hallé
B
Utilisateur
Service
Mise en contexte
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
BAs =
Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
D
Utilisateur
Service
Mise en contexte
BA Ds =
Sylvain Hallé
Interaction de (deux ou plusieurs)
! On enregistre les messages observés =
services web
trace
D
Utilisateur
Service
Mise en contexte
BA Ds =
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 =
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 =
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 =
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 =
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 =
Sylvain Hallé
Qu'en est-il du des messages?contenu
Service
Utilisateur
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?contenu
A
3
Service
Utilisateur
Mise en contexte
Sylvain Hallé
Qu'en est-il du des messages?contenu
A
3
Service
Utilisateur
Mise en contexte
A
3s =
Sylvain Hallé
Qu'en est-il du des messages?contenu
C
4
Service
Utilisateur
Mise en contexte
A
3s =
Sylvain Hallé
Qu'en est-il du des messages?contenu
C
4
Service
Utilisateur
Mise en contexte
C
4
A
3s =
Sylvain Hallé
Qu'en est-il du des messages?contenu
M
6
Service
Utilisateur
Mise en contexte
C
4
A
3s =
Sylvain Hallé
Qu'en est-il du des messages?contenu
M
6
Service
Utilisateur
Mise en contexte
C
4
A
3
M
6s =
Sylvain Hallé
Qu'en est-il du des messages?contenu
Service
M
6
Utilisateur
Mise en contexte
C
4
A
3
M
6s =
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 =
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 =
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 =
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 =
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 =
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 =
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 =
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 =
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+
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+
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+
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+
Sylvain Hallé
Comment vérifier qu'une trace respecte une propriété LTL-FO+?
Validation de LTL-FO+
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>
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>
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>
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
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
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
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
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+
Sylvain Hallé
Opérateur X:
Validation de LTL-FO+
<trace>
<message>...</message>
<message>...</message>
<message>...</message>
...
<message>...</message>
</trace>
Sylvain Hallé
Opérateur X:
Validation de LTL-FO+
<trace>
<message>...</message>
<message>...</message>
<message>...</message>
...
<message>...</message>
</trace>
r
Sylvain Hallé
Opérateur X:
Validation de LTL-FO+
<trace>
<message>...</message>
<message>...</message>
<message>...</message>
...
<message>...</message>
</trace>
r
r/following-sibling::*
}
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]
}
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]
}
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+
Sylvain Hallé
J'ai dit XQuery?
Validation de LTL-FO+
Sylvain Hallé
J'ai dit XQuery?
Toute la traduction de LTL est comprise dans
( XQuery)XPath 2.0 Í
Validation de LTL-FO+
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+
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+
Sylvain Hallé
Tempstotaldevalidation(ms)
Expéiences avec Saxon-B 9.0:
Longueur de la trace (messages)
Validation de LTL-FO+
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]
}
Sylvain Hallé
Gerth, Peled, Vardi, Wolper (PSTV 1995): algorithme de runtime
monitoring pour LTL
Runtime monitoring
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
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
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
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
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
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
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
Sylvain Hallé
Implémentation: runtime monitor de LTL-FO+ en Java (voir
l'article) Tempsparmessage(ms)
Taille du domaine
Runtime monitoring
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
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
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
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
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

Weitere ähnliche Inhalte

Andere mochten auch

Causality in Message-Based Interface Contracts: A Temporal Logic "Whodunit"
Causality in Message-Based Interface Contracts: A Temporal Logic "Whodunit"Causality in Message-Based Interface Contracts: A Temporal Logic "Whodunit"
Causality in Message-Based Interface Contracts: A Temporal Logic "Whodunit"Sylvain Hallé
 
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)Sylvain Hallé
 
A Runtime Monitoring Framework for Event Streams with Non-Primitive Arguments
A Runtime Monitoring Framework for Event Streams with Non-Primitive ArgumentsA Runtime Monitoring Framework for Event Streams with Non-Primitive Arguments
A Runtime Monitoring Framework for Event Streams with Non-Primitive ArgumentsSylvain Hallé
 
Activity Recognition Through Complex Event Processing: First Findings
Activity Recognition Through Complex Event Processing: First Findings Activity Recognition Through Complex Event Processing: First Findings
Activity Recognition Through Complex Event Processing: First Findings Sylvain Hallé
 
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
BeepBeep 3: A declarative event stream query engine (EDOC 2015)BeepBeep 3: A declarative event stream query engine (EDOC 2015)
BeepBeep 3: A declarative event stream query engine (EDOC 2015)Sylvain Hallé
 
MapReduce for Parallel Trace Validation of LTL Properties
MapReduce for Parallel Trace Validation of LTL PropertiesMapReduce for Parallel Trace Validation of LTL Properties
MapReduce for Parallel Trace Validation of LTL PropertiesSylvain Hallé
 
When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)Sylvain Hallé
 
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)Sylvain Hallé
 
À 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 formelleSylvain Hallé
 
Qui gardera les gardiens? (Présentation FUQAC 2012)
Qui gardera les gardiens? (Présentation FUQAC 2012)Qui gardera les gardiens? (Présentation FUQAC 2012)
Qui gardera les gardiens? (Présentation FUQAC 2012)Sylvain Hallé
 

Andere mochten auch (10)

Causality in Message-Based Interface Contracts: A Temporal Logic "Whodunit"
Causality in Message-Based Interface Contracts: A Temporal Logic "Whodunit"Causality in Message-Based Interface Contracts: A Temporal Logic "Whodunit"
Causality in Message-Based Interface Contracts: A Temporal Logic "Whodunit"
 
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
Runtime Monitoring of Stream Logic Formulae (Talk @ FPS 2015)
 
A Runtime Monitoring Framework for Event Streams with Non-Primitive Arguments
A Runtime Monitoring Framework for Event Streams with Non-Primitive ArgumentsA Runtime Monitoring Framework for Event Streams with Non-Primitive Arguments
A Runtime Monitoring Framework for Event Streams with Non-Primitive Arguments
 
Activity Recognition Through Complex Event Processing: First Findings
Activity Recognition Through Complex Event Processing: First Findings Activity Recognition Through Complex Event Processing: First Findings
Activity Recognition Through Complex Event Processing: First Findings
 
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
BeepBeep 3: A declarative event stream query engine (EDOC 2015)BeepBeep 3: A declarative event stream query engine (EDOC 2015)
BeepBeep 3: A declarative event stream query engine (EDOC 2015)
 
MapReduce for Parallel Trace Validation of LTL Properties
MapReduce for Parallel Trace Validation of LTL PropertiesMapReduce for Parallel Trace Validation of LTL Properties
MapReduce for Parallel Trace Validation of LTL Properties
 
When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)When RV Meets CEP (RV 2016 Tutorial)
When RV Meets CEP (RV 2016 Tutorial)
 
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
Testing Web Applications Through User Interface Constraints (CASCON 2015 Talk)
 
À 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
 
Qui gardera les gardiens? (Présentation FUQAC 2012)
Qui gardera les gardiens? (Présentation FUQAC 2012)Qui gardera les gardiens? (Présentation FUQAC 2012)
Qui gardera les gardiens? (Présentation FUQAC 2012)
 

Mehr von Sylvain Hallé

Monitoring Business Process Compliance Across Multiple Executions with Stream...
Monitoring Business Process Compliance Across Multiple Executions with Stream...Monitoring Business Process Compliance Across Multiple Executions with Stream...
Monitoring Business Process Compliance Across Multiple Executions with Stream...Sylvain Hallé
 
A Stream-Based Approach to Intrusion Detection
A Stream-Based Approach to Intrusion DetectionA Stream-Based Approach to Intrusion Detection
A Stream-Based Approach to Intrusion DetectionSylvain Hallé
 
Event Stream Processing with BeepBeep 3
Event Stream Processing with BeepBeep 3Event Stream Processing with BeepBeep 3
Event Stream Processing with BeepBeep 3Sylvain Hallé
 
Smart Contracts-Enabled Simulation for Hyperconnected Logistics
Smart Contracts-Enabled Simulation for Hyperconnected LogisticsSmart Contracts-Enabled Simulation for Hyperconnected Logistics
Smart Contracts-Enabled Simulation for Hyperconnected LogisticsSylvain Hallé
 
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Test Suite Generation for Boolean Conditions with Equivalence Class PartitioningTest Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Test Suite Generation for Boolean Conditions with Equivalence Class PartitioningSylvain Hallé
 
Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Synthia: a Generic and Flexible Data Structure Generator (Long Version)Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Synthia: a Generic and Flexible Data Structure Generator (Long Version)Sylvain Hallé
 
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)Sylvain Hallé
 
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)Sylvain Hallé
 
A Generic Explainability Framework for Function Circuits
A Generic Explainability Framework for Function CircuitsA Generic Explainability Framework for Function Circuits
A Generic Explainability Framework for Function CircuitsSylvain Hallé
 
Detecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative SpecificationsDetecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative SpecificationsSylvain Hallé
 
Streamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research PapersStreamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research PapersSylvain Hallé
 
Writing Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeepWriting Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeepSylvain Hallé
 
Real-Time Data Mining for Event Streams
Real-Time Data Mining for Event StreamsReal-Time Data Mining for Event Streams
Real-Time Data Mining for Event StreamsSylvain Hallé
 
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Sylvain Hallé
 
Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3Sylvain Hallé
 
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)Sylvain Hallé
 
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)Sylvain Hallé
 
Event Stream Processing with Multiple Threads
Event Stream Processing with Multiple ThreadsEvent Stream Processing with Multiple Threads
Event Stream Processing with Multiple ThreadsSylvain Hallé
 
A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)Sylvain Hallé
 

Mehr von Sylvain Hallé (19)

Monitoring Business Process Compliance Across Multiple Executions with Stream...
Monitoring Business Process Compliance Across Multiple Executions with Stream...Monitoring Business Process Compliance Across Multiple Executions with Stream...
Monitoring Business Process Compliance Across Multiple Executions with Stream...
 
A Stream-Based Approach to Intrusion Detection
A Stream-Based Approach to Intrusion DetectionA Stream-Based Approach to Intrusion Detection
A Stream-Based Approach to Intrusion Detection
 
Event Stream Processing with BeepBeep 3
Event Stream Processing with BeepBeep 3Event Stream Processing with BeepBeep 3
Event Stream Processing with BeepBeep 3
 
Smart Contracts-Enabled Simulation for Hyperconnected Logistics
Smart Contracts-Enabled Simulation for Hyperconnected LogisticsSmart Contracts-Enabled Simulation for Hyperconnected Logistics
Smart Contracts-Enabled Simulation for Hyperconnected Logistics
 
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Test Suite Generation for Boolean Conditions with Equivalence Class PartitioningTest Suite Generation for Boolean Conditions with Equivalence Class Partitioning
Test Suite Generation for Boolean Conditions with Equivalence Class Partitioning
 
Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Synthia: a Generic and Flexible Data Structure Generator (Long Version)Synthia: a Generic and Flexible Data Structure Generator (Long Version)
Synthia: a Generic and Flexible Data Structure Generator (Long Version)
 
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
Test Sequence Generation with Cayley Graphs (Talk @ A-MOST 2021)
 
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
Efficient Offline Monitoring of LTL with Bit Vectors (Talk at SAC 2021)
 
A Generic Explainability Framework for Function Circuits
A Generic Explainability Framework for Function CircuitsA Generic Explainability Framework for Function Circuits
A Generic Explainability Framework for Function Circuits
 
Detecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative SpecificationsDetecting Responsive Web Design Bugs with Declarative Specifications
Detecting Responsive Web Design Bugs with Declarative Specifications
 
Streamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research PapersStreamlining the Inclusion of Computer Experiments in Research Papers
Streamlining the Inclusion of Computer Experiments in Research Papers
 
Writing Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeepWriting Domain-Specific Languages for BeepBeep
Writing Domain-Specific Languages for BeepBeep
 
Real-Time Data Mining for Event Streams
Real-Time Data Mining for Event StreamsReal-Time Data Mining for Event Streams
Real-Time Data Mining for Event Streams
 
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
Technologies intelligentes d'aide au développement d'applications web (WAQ 2018)
 
Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3Mining event streams with BeepBeep 3
Mining event streams with BeepBeep 3
 
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
LabPal: Repeatable Computer Experiments Made Easy (ACM Workshop Talk)
 
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
A "Do-It-Yourself" Specification Language with BeepBeep 3 (Talk @ Dagstuhl 2017)
 
Event Stream Processing with Multiple Threads
Event Stream Processing with Multiple ThreadsEvent Stream Processing with Multiple Threads
Event Stream Processing with Multiple Threads
 
A Few Things We Heard About RV Tools (Position Paper)
A Few Things We Heard About RV Tools (Position Paper)A Few Things We Heard About RV Tools (Position Paper)
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 =
  • 6. Sylvain Hallé B Utilisateur Service Mise en contexte Interaction de (deux ou plusieurs) ! On enregistre les messages observés = services web trace BAs =
  • 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 =
  • 14. Sylvain Hallé Qu'en est-il du des messages?contenu Service Utilisateur Mise en contexte
  • 15. Sylvain Hallé Qu'en est-il du des messages?contenu A 3 Service Utilisateur Mise en contexte
  • 16. Sylvain Hallé Qu'en est-il du des messages?contenu A 3 Service Utilisateur Mise en contexte A 3s =
  • 17. Sylvain Hallé Qu'en est-il du des messages?contenu C 4 Service Utilisateur Mise en contexte A 3s =
  • 18. Sylvain Hallé Qu'en est-il du des messages?contenu C 4 Service Utilisateur Mise en contexte C 4 A 3s =
  • 19. Sylvain Hallé Qu'en est-il du des messages?contenu M 6 Service Utilisateur Mise en contexte C 4 A 3s =
  • 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+
  • 34. Sylvain Hallé Comment vérifier qu'une trace respecte une propriété LTL-FO+? Validation de 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+
  • 43. Sylvain Hallé Opérateur X: Validation de LTL-FO+ <trace> <message>...</message> <message>...</message> <message>...</message> ... <message>...</message> </trace>
  • 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+
  • 49. Sylvain Hallé J'ai dit XQuery? 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+
  • 53. Sylvain Hallé Tempstotaldevalidation(ms) Expéiences avec Saxon-B 9.0: Longueur de la trace (messages) 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
  • 63. Sylvain Hallé Implémentation: runtime monitor de LTL-FO+ en Java (voir l'article) Tempsparmessage(ms) Taille du domaine 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