<?xml version="1.0" encoding="UTF-8"?>
<TEI xml:space="preserve" xmlns="http://www.tei-c.org/ns/1.0" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://www.tei-c.org/ns/1.0 https://raw.githubusercontent.com/kermitt2/grobid/master/grobid-home/schemas/xsd/Grobid.xsd"
 xmlns:xlink="http://www.w3.org/1999/xlink">
	<teiHeader xml:lang="fr">
		<fileDesc>
			<titleStmt>
				<title level="a" type="main">Une technique de validation de protocoles basée sur une exploration avec retour arrière des automates complexes</title>
			</titleStmt>
			<publicationStmt>
				<publisher/>
				<availability status="unknown"><licence/></availability>
			</publicationStmt>
			<sourceDesc>
				<biblStruct>
					<analytic>
						<author>
							<persName><forename type="first">Farah</forename><surname>Zoubeyr</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Département d&apos;Informatique</orgName>
								<orgName type="institution">Université Abderrahmane Mira de Béjaïa</orgName>
								<address>
									<addrLine>Route de Targa Ouzemmour Béjaïa</addrLine>
									<postCode>06000</postCode>
									<settlement>Algérie</settlement>
								</address>
							</affiliation>
						</author>
						<author>
							<persName><forename type="first">Abdelkamel</forename><surname>Tari</surname></persName>
							<affiliation key="aff0">
								<orgName type="department">Département d&apos;Informatique</orgName>
								<orgName type="institution">Université Abderrahmane Mira de Béjaïa</orgName>
								<address>
									<addrLine>Route de Targa Ouzemmour Béjaïa</addrLine>
									<postCode>06000</postCode>
									<settlement>Algérie</settlement>
								</address>
							</affiliation>
						</author>
						<author role="corresp">
							<persName><forename type="first">Zahir</forename><surname>Tari</surname></persName>
							<email>zahirtari@rmit.edu.au</email>
							<affiliation key="aff1">
								<orgName type="department" key="dep1">Royal Melbourne Institute of Technology (RMIT)</orgName>
								<orgName type="department" key="dep2">Department of Computer Science</orgName>
								<address>
									<settlement>Melbourne</settlement>
									<country key="AU">Australia</country>
								</address>
							</affiliation>
						</author>
						<title level="a" type="main">Une technique de validation de protocoles basée sur une exploration avec retour arrière des automates complexes</title>
					</analytic>
					<monogr>
						<imprint>
							<date/>
						</imprint>
					</monogr>
					<idno type="MD5">C5F948499D606893C12F353E339BD4FE</idno>
				</biblStruct>
			</sourceDesc>
		</fileDesc>
		<encodingDesc>
			<appInfo>
				<application version="0.7.2" ident="GROBID" when="2023-03-24T00:20+0000">
					<desc>GROBID - A machine learning software for extracting information from scholarly documents</desc>
					<ref target="https://github.com/kermitt2/grobid"/>
				</application>
			</appInfo>
		</encodingDesc>
		<profileDesc>
			<abstract>
<div xmlns="http://www.tei-c.org/ns/1.0"><p>L'analyse d'accessibilité est généralement l'approche utilisée pour la validation des protocoles. Le problème posé par l'application de cette technique est celui de l'explosion combinatoire. Dans cet article, nous proposons une nouvelle technique de validation de protocoles appelée Reverse Leaping Reachability Analysis (RLRA). Au lieu de parcourir tout l'espace des états de protocole, notre approche explore seulement un ensemble réduit de cet espace afin de détecter les erreurs de type Interblocage. Les résultats d'expérimentation ont montré que notre technique permet de réduire la taille du graphe d'accessibilité de protocole est donc réduire le problème de l'explosion combinatoire. Mots-clé: validation de protocoles, automate à états complexes, interblocage</p></div>
			</abstract>
		</profileDesc>
	</teiHeader>
	<text xml:lang="fr">
		<body>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="1">Introduction</head><p>Dans le domaine des Services Web, les protocoles de communication peuvent être modélisés sous forme de communication d'automates à états finis. Dans ce modèle, le comportement de chaque entité communicante est spécifié par un Automate à Etats Finis (AEF). Ces entités échangent des messages via des canaux de communication de capacité limitée. La validation de protocoles, consiste à vérifier l'absence des erreurs logiques de spécification telles que les erreurs d'interblocage et les réceptions non spécifiées. L'analyse d'accessibilité standard est généralement l'approche la plus utilisée dans le domaine de validation de protocoles. Le principe de cette technique est l'énumération de toutes les interactions possibles entre les entités communicantes. Cette énumération génère des états globaux de protocole où chaque état global donne la situation du protocole après avoir exécuté une opération. A la fin de cette opération, on obtient un graphe d'accessibilité de protocole. Les erreurs de protocole, sont alors détectées par la vérification de chaque état global composant ce graphe. L'analyse d'accessibilité standard est une technique intuitive, simple et permet la détection de toutes les erreurs que peut contenir une spécification de protocole. Cependant, elle soufre du problème de l'explosion combinatoire. En général, le nombre total des états globaux d'un protocole est exponentiel en terme de nombre d'entité composant le protocole ainsi que le nombre d'état local de chaque entité <ref type="bibr" target="#b10">[4]</ref>. Bien que plusieurs versions (améliorations) ont étés proposées <ref type="bibr" target="#b7">[1,</ref><ref type="bibr" target="#b8">2,</ref><ref type="bibr" target="#b9">3]</ref> pour allégir l'analyse d'accessibilité standard, le problème de l'explosion combinatoire était toujours présent, ce qui a limité leur application à des protocoles simples.</p><p>L'analyse d'accessibilité réversible <ref type="bibr" target="#b11">[5]</ref> est une alternative intéressante de l'analyse d'accessibilité standard. A partir des propriétés qui caractérisent les erreurs de type interblocage, on dégage un ensemble d'états globaux qui vérifient ces propriétés. Ces états sont appelés états suspects. Par la suite, un état suspect est confirmé comme une erreur d'interblocage si l'état global initial du protocole est atteignable par une opération de retour arrière à partir de cet état suspect, sinon l'état suspect est retiré de l'ensemble des erreurs de protocole. Avec ce procédé, cette technique permet de parcourir seulement un sous-ensemble de l'espace des états du protocole. Bien que cette technique permet de réduire l'espace des états à explorer durant l'analyse, le problème de l'explosion combinatoire peut se présenter pour une validation de protocole complexe. Donc, pour rendre cette approche de validtion efficace nous avons besoin d'optimiser la construction des chemins de retour arrière.</p><p>Dans cet article, nous proposons une technique de validation de protocoles modélisés sous forme de Communication d'Automate d'Etats Finis Complexes (CAEFC), appelée RLRA (Reverse Leaping Reachability Analysis). Notre technique, permet la détection de toutes les erreurs de type interblocage dans une spécification de protocole. En se basant sur une approche de validation avec retour arrière, on commence par identifier de possibles états d'interblocage ensuite, valider parmi ces états suspects, ceux qui présentent réellement une erreur à travers la recherche de chemins de retour vers la racine du graphe de protocole. Pour réduire le problème de l'explosion combinatoire, nous introduisons les graphes de sauts (leap graphe) que nous exploitons dans la construction des chemins de retour arrière. Ces graphes de sauts, permettent d'éviter le parcourt des états globaux qui ne sont pas utiles dans l'analyse, ce qui apporte une réduction importante sur la taille du graphe à parcourir. Pour chaque erreur confirmée, nous donnons aussi sa nature (simple, hybride ou complexe) selon la nature des états qui présentent l'erreur.</p><p>Le reste de cet article est organisé comme suite : La prochaine section introduit le modèle de CAEFC. La section trois, explique notre approche de validation ainsi que les prouves formelles de son applicabilité. La quatrième section, donne les résultats d'expérimentation. La dernière section est une conclusion de ce travail.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2">Modèle de Communication d'Automates à Etats Finis</head><p>Complexes (CAEFC) <ref type="bibr" target="#b15">[9]</ref> Un modèle de CAEFC introduit la notion d'état complexe, qui est un AEF dont certains de ses états sont eux-mêmes des AEF (internes </p><formula xml:id="formula_0">G i &gt; i∈I , &lt; c G ij &gt; (i,j)∈L ), où s G i est l'état local de l'entité P i et cij G est le contenu du canal C ij à l'état global G. L'état global initial est notée G0 = (&lt; s G0 i &gt; i∈I , &lt; c G0 ij &gt; (i,j)∈L ), tel que s G0 i = S0 i et c G0 ij = ε , pour tout i ∈ I et (i, j) ∈ L.</formula><p>On definie la fonction act() comme suite <ref type="bibr" target="#b14">[8]</ref> :</p><p>1. Pour une transition t ∈ ∆ i , act(t) = i est l'indice de l'entité auquel appartient la transition t, 2. Pour un ensemble de transition T , act(T ) = {i ∈ I/T ∩∆ i = ε} est l'ensemble des indices des entités qui ont au moins une transition dans T ;</p><p>Nous définissons également la fonction F ront(c G ij ) qui renvoie le message en tête du canal c ij à l'état global G.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.1">Types d'erreur dans une spécification par modèle CAEFC</head><p>En plus de la nature de l'erreur logique, l'utilisation des automates d'états complexes nécessite la définition du type de l'erreur détectée qui peut être de type simple, lorsque chaque entité communicante se trouve dans un de ses états simples, complexe lorsque toutes les entités se trouvent dans un de leurs états complexes et hybride lorsque une ou plusieurs entités du modèle se trouvent dans un état simple et le reste des entités se trouvent dans des états complexes.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="2.2">Validation de protocoles</head><p>La validation d'un protocole revient à faire une analyse de son graphe d'accessibilité. Un graphe d'accessibilité donne les différentes exécutions possibles du protocole, les noeuds de ce graphe sont les états globaux du protocole et les arcs sont les différentes transitions (interactions) qui font passé le protocole d'un état global vers un autre. L'approche de validation exhaustive soufre du problème de l'explosion combinatoire qui est dû au grand nombre d'état global à générer pendant l'analyse. Ce problème peut être réduit en adoptant une approche de validation avec retour arrière. Cette approche est appelée analyse d'accessibilité réversible (RRA ) <ref type="bibr" target="#b11">[5]</ref>. Dans cette approche, on génère l'espace des états de protocole d'une manière réversible. A partir d'un ensemble d'états, dit indésirable, on essaye d'accéder l'état global initial par une opération de retour arrière. L'ensemble des états indésirables est composé des états globaux qui présentent des caractéristiques d'un état d'interblocage (chaque entité est dans un état d'attente de réception d'un message et l'état de leurs canaux d'entrée est vide).</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3">Une technique de validation de protocoles pour les automates complexes</head><p>Dans cette section, nous proposons une technique de validation de protocoles qui est basée sur une approche avec retour arrière. Dans notre approche de retoure arrière, au lieu de travailler sur un graphe d'accessibilité standard (couvre tout l'espace des états), nous utilisons un graphe de sauts (LRA<ref type="foot" target="#foot_0">3</ref> ) <ref type="bibr" target="#b14">[8]</ref>. Ce graphe est construit à partir d'un sous ensemble de l'espace des états de protocole. La particularité de ce graphe c'est qu'il couvre aussi tous les états qui peuvent présenter une erreur de type interblocage. Donc, l'utilisation d'un graphe de sauts réduit le nombre d'état à parcourir tout en gardant la capacité de détecter toutes les erreurs d'interblocage, ce qui permet de réduire la complexité du l'analyse de protocole.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.1">Graphe de sauts [8]</head><p>Un graphe de sauts est un graphe d'accessibilité réduit. Cette réduction est obtenue du fait que le passage d'un état global vers un autre peut se faire via l'exécution de plusieurs transitions à la fois, ce qui permet d'éviter de générer des états intermédiaires résultants de l'exécution de chaque transition à part. les transitions qui peuvent s'exécuter en même temps sont appelées : transitions simultanément exécutables.Ces transitions simultanées forme un saut dans un graphe d'accessibilité. L'ensemble des transitions d'envoi ou de réception de messages de l'entité P i , qui sont exécutables à l'état globale G, sont notés respectivement</p><formula xml:id="formula_1">X − i (G) et X + i (G). L'union de ces deux ensembles est noté X i (G) = X − i (G) ∪ X + i (G)</formula><p>. L'ensemble de toutes les transitions des différentes entité communicantes du protocole qui sont exécutables à l'état G, est noté :</p><formula xml:id="formula_2">X(G) = ∪ i∈I X i (G).</formula><p>Transitions potentiellement exécutables : Une transition de réception de message t = (s i , +y, s i ) est dite potentiellement exécutable à l'état global G, ssi</p><formula xml:id="formula_3">s i = s G i et c G ji = ε. Une transition d'envoi de message t = (s i , −x, s i ), est dite potentiellement exécutable à l'état global G, ssi s i = s G i et |C ij | = K ; K est</formula><p>la capacité des canaux de communication du système. L'ensemble des transitions de réception de message et des transitions d'envoi de message de l'entité P i qui sont potentiellement exécutables à l'état globale G, sont noté respectivement P + i (G) et P − i (G). L'ensemble de toutes les transitions potentiellement exécutables de l'entité P i est noté :</p><formula xml:id="formula_4">P i (G) = P − i (G) ∪ P + i (G).</formula><p>Lors de la construction d'un graphe de sauts, les transitions à exécuter simultanément, doivent être exécutables dans le même état global et doivent appartenir à des entités du protocole qui ne disposent pas de transitions potentiellement exécutables <ref type="bibr" target="#b14">[8]</ref>. Un ensemble de telles transitions est appelé saut, noté pleap (proper leap). Donc, un saut est un ensemble non vide de transitions : T ⊆ X(G), tel que pour toute transition t, t ∈ T , act(t) = act(t ) si t = t (i.e T contient au plus une transition exécutable de chaque entité). Les différents ensembles de T , construits à l'état global G, forment un ensemble de sauts noté pleap(G).</p><p>Definition 1 (Calcul de l'ensemble pleap (sauts) <ref type="bibr" target="#b13">[7]</ref>). Soit G un état global. On note par W ait(G), l'ensemble des indices des entités qui disposent d'une transition potentiellement exécutable à l'état G. Cet ensemble est définit par : W ait(G) = {i ∈ I/X i (G) =⇒ P i (G) = }. L'ensemble des sauts pleap(G) est donc calculé comme suite :</p><formula xml:id="formula_5">pleap(G) = i / ∈W ait(G) X i (G) si W ait(G) ⊂ I {{t} /t ∈ X(G)} sinon<label>(1)</label></formula><p>Avant de calculer l'ensemble pleap(G) , on doit calculer l'ensemble W ait(G) pour identifier les entités qui disposent de transitions potentiellement exécutables. Si toutes les entités appartiennent à l'ensemble W ait(G) ça veut dire qu'il n'y a pas de saut à faire à partir de G et dans ce cas la, on exécute chaque transition de X(G) indépendamment des autres (transitions simples). Si W ait(G) est inclut dans I, l'ensemble de sauts à exécuter à partir de G (pleap(G)) sera le produit cartésien des ensembles de transitions exécutables de chaque entité Xi(G) i.e pleap(G)</p><formula xml:id="formula_6">= { i / ∈W ait(G) {X i (G)}}.</formula><p>Definition 2 (transition de saut <ref type="bibr" target="#b14">[8]</ref>). Une transition de saut est une relation binaire sur un ensemble d'états globaux, elle est notée :</p><formula xml:id="formula_7">→ l . Pour deux états glo- baux G1 = (&lt; s G1 i &gt; i∈I , &lt; c G1 ij &gt; (i,j)∈L ) et G2 = (&lt; s G2 i &gt; i∈I , &lt; c G2 ij &gt; (i,j)∈L</formula><p>), G1→ l G2 existe, ssi il existe un ensemble de transitions T appartenant à l'ensemble de sauts pleap(G1), tel que l'exécution simultanée des transitions de T , fait passer le protocole à l'état global G2. Soit → l * la fermeture transitive et réflexive de → l . G2 est dit accessible par sauts depuis G1, ssi G1 → l * G2. Si G1 = S0 (état global initial du protocole), G2 est dit être accessible par saut. On dénote par L Π l'ensemble de tous les états du protocole qui sont accessibles par sauts. Pour une séquence d'ensemble de sauts Ω = T 1, T 2, T 3 . . . , T m, G1 → l * G2 dénote l'existence des états globaux Q0, Q1, Q2 . . . , Qm , tel que :</p><formula xml:id="formula_8">G1 = Q0 → T 1 Q1 → T 2 Q2 . . . → T m Qm = G2.</formula><p>Dans un graphe de sauts, les neouds sont des états globaux qui sont accessibles par des sauts. Le calcul des transitions de sauts (pleap) se fait au niveau de chaque état global, en commençant de l'état global initial du système.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.2">Construction de chemins de sauts réversibles</head><p>Dans ce qui suit, nous donnons les définitions qui vont nous permettre de construire un graphe de sauts d'une manière réversible. L'opération de retour arrière peut être vue comme une procédure abstraite. A partir d'un état global on monte vers la racine, et dans ce cas-là, les transitions d'envoi de messages vont être traitées comme étant des transitions de réception de messages, et les transitions de réception de messages vont être traitées comme étant des transitions d'envoi de messages.</p><p>Transitions simultanément et réversiblement exécutables. Comme pour la construction des graphes de sauts, nous avons besoin de définir les notions de transitions réversiblement exécutables et de transitions potentiellement et réversiblement exécutables afin de calculer les transitions simultanément et réversiblement exécutables (sauts réversibles). </p><formula xml:id="formula_9">G, sont notés X R− i (G) et X R+ i (G) respec- tivement. L'union de ces deux ensembles est noté X R i (G) = X R− i (G) ∪ X R+ i (G)</formula><p>. L'ensemble de toutes les transitions du protocole, qui sont réversiblement exécutables à l'état G, est noté :</p><formula xml:id="formula_10">X R (G) = ∪ i∈I X R i (G).</formula><p>Transition potentiellement et réversiblement exécutable : Une transition de réception de message t = (s i , +y, s i ), avec y ∈ M i , est dite potentiellement et réversiblement exécutable à l'état global réversible G, ssi</p><formula xml:id="formula_11">s i = s G i et |C ji | =K ; K est la capacité des canaux de communication du système. Une transition d'envoi de message t = (s i , −x, s i ), avec x ∈ M i , est dite po- tentiellement et réversiblement exécutable à l'état global G, ssi s i = s G i et c G ij = ε.</formula><p>Les ensembles des transitions de réception de messages et des transitions d'envoi de messages de l'entité P i , qui sont potentiellement et réversiblement exécutables à l'état global G, sont notés</p><formula xml:id="formula_12">P R+ i (G) et P R− i (G) respectivement. On note P R i (G) = P R− i (G) ∪ P R+ i (G).</formula><p>Comme pour la construction d'un graphe de sauts, la construction d'un graphe de sauts réversibles se fait par le calcul des transitions simultanément et réversiblement exécutables, ces transitions doivent être exécutables dans le même état global réversible et doivent appartenir à des entités du protocole qui ne disposent pas de transitions potentiellement et réversiblement exécutables. Un ensemble de telles transitions est appelé sauts réversibles, noté pleap R (reverse proper leap). Donc, un saut réversible est un ensemble non vide de transitions : T ⊆ X R (G), tel que pour toute transition t, t ∈ T , act(t) = act(t ) si t = t (i.e T contient au plus une transition réversiblement exécutable de chaque entité). Les différents ensembles T , construits à l'état global réversible G, forment un ensemble de sauts réversibles noté pleap R (G).</p><p>Nous donnons dans ce qui suit la définition formelle de l'ensemble des sauts réversibles pleap R . Definition 4 (calcul de l'ensemble pleap R ). Soit G un état global réversible. On définit l'ensemble des entités qui disposent d'une transition potentiellement et réversiblement exécutable à l'état G par :</p><formula xml:id="formula_13">W ait R (G) = {i ∈ I/X R i (G) =⇒ P R i (G) = }. L'ensemble pleap R (G) est calculé comme suite : pleap R (G) = i / ∈W ait R (G) X R i (G) si W ait R (G) ⊂ I {t} /t ∈ X R (G) sinon<label>(2)</label></formula><p>Avant de calculer l'ensemble pleap R (G), on doit calculer l'ensemble W ait R (G) pour identifier les entités qui disposent de transitions potentiellement et réversiblement exécutables. Si toutes les entités appartiennent à l'ensemble W ait R (G) ça veut dire qu'il n'y a pas de saut réversible à exécuter à partir de G, et dans ce cas la, on exécute chaque transition de X R (G) indépendamment des autres (simple transition). Si l'ensemble W ait R (G) est inclut dans I, l'ensemble de sauts réversibles pleap R (G) sera le produit cartésien des ensembles de transitions réversiblement exécutables de chaque entité</p><formula xml:id="formula_14">(X R i (G)), i.e pleap R (G) = { i / ∈W ait R (G) {X R i (G)}}.</formula><p>Definition 5 (transition de saut réversible). Une transition de saut réversible, est une relation binaire → R sur un ensemble d'états globaux réversibles. Pour deux états globaux réversibles G1 = (&lt; s</p><formula xml:id="formula_15">G1 i &gt; i∈I , &lt; c G1 ij &gt; (i,j)∈L ) et G2 = (&lt; s G2 i &gt; i∈I , &lt; c G2 ij &gt; (i,j)∈L ), G1→ R G2</formula><p>existe, ssi il existe un ensemble de transitions réversiblement exécutables T ∈ pleap R (G1), tel que l'exécution des transitions de T à partir de G1 donne l'état global G2. La relation de transition G1 → R G2 signifie que l'état global G2 est obtenu d'une manière réversible directe depuis l'état global G1. Soit → R * la fermeture transitive et réflexive de → R , on dit que l'état G2 est accessible par saut réversible de puis G1, ssi G1 → R * G2. Le chemin qui relie G1 vers G2 est alors appelé : chemin de sauts réversibles de G1 vers G2.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.3">Traitement des erreurs d'interblocage</head><p>Dans cette section, nous expliquons l'utilisation des sauts réversibles pour la détection des erreurs d'interblocage. Definition 6 (état suspect d'interblocage <ref type="bibr" target="#b11">[5]</ref>).</p><formula xml:id="formula_16">Un état global G = (&lt; s G i &gt; i∈I , &lt; c G ij &gt; (i,j)∈L ) est dit un possible état d'interblocage ssi, ∀(i, j) ∈ L : c G ij = ε et s G i</formula><p>est un état de réception de message pour tout i ∈ I.</p><p>Definition 7 (état d'interblocage <ref type="bibr" target="#b14">[8]</ref>). Un état global G = (&lt; s G i &gt; i∈I , &lt; c G ij &gt; (i,j)∈L ) est dit état d'interblocage ssi :</p><p>1. ∀(i, j) ∈ L : c G ij = ε et s G i est un état de réception de message pour tout i ∈ I ; 2. L'état global G est accessible par sauts à partir de G0.</p><p>Un état global est dit état d'interblocage lorsque tous les canaux de communications dans cet état sont vides et toutes les entités du protocole sont dans un état de réception de messages.</p><p>Nous donnons ci-dessous, le théorème principal de notre proposition, qui nous permettra d'utiliser les chemins de sauts réversibles afin de détecter les erreurs logiques de type interblocage.</p><p>Theorem 1. Soit P i = (P, L) un protocole et soit GS un état global suspect d'interblocage. L'état suspect d'inter blocage GS, est confirmé comme état d'inter blocage ssi, l'état global initial du protocole G0 est accessible par un chemin de sauts réversibles à partir de l'état suspect GS.</p><p>On se basant sur le théorème 1, la détection des états d'interblocage, peut être faite par une vérification de l'accessibilité par sauts réversibles de l'état initial du système en partant d'un état suspect.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="3.4">Algorithme</head><p>Dans cette section, nous donnons l'algorithme de notre approche de validation. Pour des raisons de simplifications, nous traitons des protocoles de communication entre deux entités seulement. Notre algorithme peut être facilement généralisé sur une communication entre plusieurs entités.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Détection des états suspects (Phase1).</head><p>Les états suspects d'interblocage sont obtenus par une combinaison, des états locaux de réception de messages, des différentes entités communicantes du protocole (Définition 6). Cette phase est implémentée par l'Algorithme 1 du calcul d'états suspects.</p><p>Le test de la ligne 4 de l'algorithme sert à écarter les états locaux qui sont finaux car un état global final ne peur être état d'interblocage.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head>Confirmation des états d'interblocage (Phase2).</head><p>Afin de confirmer l'existence d'une erreur dans un état suspect GS, l'algorithme effectue une recherche d'un chemin de sauts réversibles vers l'état initial du protocole. Cette phase est donnée sur l'Algorithme 2. L'ensemble Explored est utilisé pour marquer les états globaux qui sont déjà traités (vérifiés). Chaque nouvel état global n'appartenant pas à Explored, sera mis dans Open afin de le traiter dans la prochaine itération (ligne 20-21-22). A partir de chaque état global G (non traité), nous calculons tous les ensembles des transitions simultanément exécutable (T ) de cet état global, par l'utilisation de la définition 4 (ligne 18).</p><p>Pour chaque T obtenu et qui est un saut réversible, nous générons un nouvel état global. L'algorithme continue son exécution jusqu'à ce que soit l'état initial est atteint, et dans ce cas la l'erreur logique est confirmée dans l'état suspect GS, soit il ne reste plus d'état à explorer et donc l'erreur logique est écartée. Les lignes de code de 7 à 16 permettent d'identifier le type de l'erreur détectée (simple, hybride ou complexe), selon la nature des états locaux composant l'état de l'erreur.</p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="4">Résultas d'expérimentation</head><p>Pour montrer l'efficacité de notre technique, nous avons choisi de la comparer avec une technique de la même famille, c'est-à-dire une technique qui utilise le principe <ref type="bibr">de</ref>  </p></div>
<div xmlns="http://www.tei-c.org/ns/1.0"><head n="5">Conclusion</head><p>Dans cet article, nous avons proposé une technique de validation de protocoles basée sur une approche de validation avec retour arrière. Pour rendre l'analyse plus efficace, nous avons optimisé l'opération de construction des chemins de retour arrière. Cette optimisation est obtenue par l'utilisation de la technique de construction des graphes de sauts(LRA). L'utilisation de LRA nous a permet d'éviter de parcourir des états qui ne sont pas utiles dans l'analyse, ce qui nous a permet de réduire considérablement la taille du graphe d'accessibilité.</p></div><figure xmlns="http://www.tei-c.org/ns/1.0" xml:id="fig_0"><head>Definition 3 (</head><label>3</label><figDesc>état global réversible<ref type="bibr" target="#b11">[5]</ref>). Lorsque on parcourt un graphe d'accessibilité d'une manière réversible, l'ensemble des états construit par cette opération est appelé ensemble d'états globaux réversibles. Un état global réversible d'un protocoleΠ est noté G = (&lt; s G i &gt; i∈I , &lt; c G ij &gt; (i,j)∈L ) où sG i est l'état local de l'entité P i et c G ij est la séquence de messages désirés sur le canal C ij .</figDesc></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_0"><head></head><label></label><figDesc>L), où P = {P i /i ∈ I} est l'ensemble des n entités communicantes du protocole et L ⊆ I × I est la relation d'incidence non réflexive qui identifie un ensemble non vide de canaux de communication {C ij /(i, j) ∈ L}. Chaque canal C ij est une file FIFO, bornée et sans erreurs reliant l'entité P i à l'entité P j . Chaque entité P i est un automate d'états finis : (S i ,S0 i ,Ef i ,M i , i ) (simple ou complexe), composé d'un ensemble d'états S i , d'un ensemble d'états finaux Ef i ,d'un alphabet de messages M i ,d'un ensemble de transitions i et d'un état initial S0 i . L'ensemble des états S i comprend des états simples et des états complexes. Chaque état complexe doit être défini par un AEF. Le contenu du canal C ij , noté c ij , est une suite de messages de M i , i.e. c ij ∈ M * i . Chaque canal peut contenir un nombre maximum de K (entier positif) messages. Une entité P i envoie des messages sur son canal de sortie C ij (i, j ∈ I ∧ i = j) et reçoit des messages sur ses canaux d'entrées C ji (i, j ∈ I ∧ i = j). La relation de transition i est définie par : i:S i × M i → S i . Une transition t = (s i , µ, s i ) ∈ ∆ i ,définie à l'état local s i de l'entité P i , est dite transition d'envoi de message lorsque µ = −x, indiquant un envoi d'un message x (x ∈ M i ) par l'entité Pi sur le canal C ij . t est dite transition de réception de message lorsque µ = +y, indiquant une réception d'un message y (y ∈ M i ) par l'entité P i depuis le canal C ji . Les signes -et + indiquent respectivement un envoi et une réception de message. Dans le cas où s i est un état complexe (représente un AEF interne), le résultat de la transition va mettre l'automate interne sur sont état initial, si s i et aussi un état complexe, la transition ne peut être exécutée que si l'automate lui correspondant atteint sont état final. Un état global G du protocole Π est représenté par une paire (&lt; s</figDesc><table><row><cell>rentrent dans la composition d'un état complexe sont appelés états internes. Le</cell></row><row><cell>développement des différents AEF internes donne un AEF aplati, qui est un</cell></row><row><cell>AEF ordinaire.</cell></row><row><cell>Soit I = {1, 2, ..., n} un ensemble fini d'indices, avec cardinal(I)≥2. Dans un</cell></row><row><cell>modèle de Communication d'automate d'états finis, un protocole Π est une</cell></row><row><cell>paire (P,</cell></row><row><cell>). Les états qui</cell></row></table></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_1"><head></head><label></label><figDesc>Transitions simultanément exécutables. Pour calculer les transitions simultanément exécutables qui rentrent dans la construction d'un graphe de sauts, nous avons besoin d'abord de définir les notions de transitions exécutables et transitions potentiellement exécutables. Transitions exécutables : Une transition t = (s i , µ, s i ) d'une entité communicante P i est dite exécutable à l'état global G, ssi s i = s G i (i.e s i est l'état local de l'entité P i à l'état global G) et t vérifie une des deux conditions suivantes : 1. t est une transition d'envoi de message et le contenu du canal C ij est inférieure à K, i.e. |C</figDesc><table /><note>ij | &lt; K. ou, 2. t est une transition de réception de message tel que µ = +y avec y ∈ M i et F ront(c G ji ) = y . Autrement dit, t peut recevoir le message qui est en tête du canal c ji .</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_2"><head></head><label></label><figDesc>Transition réversiblement exécutable : transition t = (s i , µ, s i ) ∈ i , est dite réversiblement exécutable à l'état global réversible G, ssi s i = s local de P i à l'état global G) , et t est sous une des deux formes suivantes : 1. t est une transition d'envoi de message tel que µ = −x avec x ∈ M i et F ront(c</figDesc><table><row><cell>G i (s i est G</cell></row><row><cell>l'état</cell></row></table><note>G ij ) = x.ou, 2. t est une transition de réception de message et le contenu du canal c ji est inférieure à K, i.e. |C ji | &lt;K. L'ensemble des transitions d'envoi et de réception de messages, qui sont réversiblement exécutables à l'état global réversible</note></figure>
<figure xmlns="http://www.tei-c.org/ns/1.0" type="table" xml:id="tab_3"><head></head><label></label><figDesc>retour arrière. La technique choisie est l'analyse d'accessibilité réversible (Reverse Reachability analysis) RRA. Cette technique a prouvée son efficacité par rapport à plusieurs d'autres techniques de validation. La comparaison se fait sur la taille du graphe d'accessibilité généré afin de valider le protocole. La taille d'un graphe d'accessibilité est mesurée par rapport au nombre d'états globaux générés et par rapport au nombre de transitions exécutées pour sa construction. Nous avons fait notre comparaison sur le même ensemble d'exemples utilisé pour valider la technique RRA. Le Tableau 1 montre la réduction apportée par notre technique sur l'ensemble des exemples de comparaison selon la variation en taille des canaux de communication. Réduction apportée par la technique RLRA par rapport à la technique RRA</figDesc><table><row><cell></cell><cell cols="2">Réduction sur la taille du graphe d'accessibilité : RLRA/RRA</cell></row><row><cell>Capacité des canaux</cell><cell></cell><cell></cell></row><row><cell>C12=C21</cell><cell>Nombre d'états explorés</cell><cell>Nombre de transitions exécutées</cell></row><row><cell>1</cell><cell>11,11%</cell><cell>20,54%</cell></row><row><cell>2</cell><cell>21,42%</cell><cell>32,20%</cell></row><row><cell>3</cell><cell>4%</cell><cell>12,68%</cell></row><row><cell>4</cell><cell>2,17%</cell><cell>6,06%</cell></row><row><cell>5</cell><cell>6,42%</cell><cell>7,38%</cell></row><row><cell>Tab. 1.</cell><cell></cell><cell></cell></row></table></figure>
			<note xmlns="http://www.tei-c.org/ns/1.0" place="foot" n="3" xml:id="foot_0">LRA :Leaping Reachability Analysis.</note>
		</body>
		<back>
			<div type="references">

				<listBibl>

<biblStruct xml:id="b0">
	<monogr>
		<title level="m">Phase de détection des états suspects Require: Entrées :protocole Π</title>
				<imprint>
			<date>P1. P2</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b1">
	<monogr>
		<title/>
		<author>
			<persName><surname>Pi=(si</surname></persName>
		</author>
		<author>
			<persName><surname>S0i</surname></persName>
		</author>
		<author>
			<persName><surname>Efi</surname></persName>
		</author>
		<author>
			<persName><forename type="first">I</forename><surname>Mi</surname></persName>
		</author>
		<imprint>
			<date>2}</date>
			<biblScope unit="volume">1</biblScope>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b2">
	<analytic>
		<title level="a" type="main">pour chaque état de réception de message s2 dans S2 faire 4: si s1 et s2 sont des états non finaux alors</title>
	</analytic>
	<monogr>
		<title level="m">Sortie :Suspect ;//ensemble des états suspects 1: Suspect=∅ ; 2: pour chaque état de réception de message s1 dans S1 faire 3</title>
				<imprint>
			<biblScope unit="volume">5</biblScope>
		</imprint>
	</monogr>
	<note>= (s1, s2, ε, ε)</note>
</biblStruct>

<biblStruct xml:id="b3">
	<monogr>
		<title level="m">Suspect = Suspect ∪ {GS} ; 7: finsi 8: fin pour 9: fin pour Algorithm 2 Phase de confirmation des états d&apos;interblocage Require: Entrées :protocole Π</title>
				<imprint>
			<date>P1. P2</date>
		</imprint>
	</monogr>
	<note>générer un état suspect 6</note>
</biblStruct>

<biblStruct xml:id="b4">
	<analytic>
		<author>
			<persName><surname>Pi=(si</surname></persName>
		</author>
		<author>
			<persName><surname>S0i</surname></persName>
		</author>
		<author>
			<persName><surname>Efi</surname></persName>
		</author>
		<author>
			<persName><surname>Mi</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">S2 Sortie :Confirmation ou non de l&apos;erreur dans l&apos;état suspect GS ; 1: Explored = ∅ ; 2: Open = {GS} ; 3: tantque Open = Ø faire 4: Prendre un état global G de Open</title>
				<imprint>
			<biblScope unit="volume">5</biblScope>
		</imprint>
	</monogr>
	<note>Open = Open − {G}</note>
</biblStruct>

<biblStruct xml:id="b5">
	<analytic>
		<title level="a" type="main">.s2 est complexe alors 12: retourne : GS est confirmé comme erreur d&apos;interblocage hybride ; 13: sinon 14: retourne : GS est confirmé comme erreur</title>
	</analytic>
	<monogr>
		<title level="m">Explored = Explored ∪ {G} ; 7: si G = S0 alors 8</title>
				<imprint>
			<biblScope unit="volume">10</biblScope>
			<biblScope unit="page">18</biblScope>
		</imprint>
	</monogr>
	<note>sinon. calculer pleap R (G</note>
</biblStruct>

<biblStruct xml:id="b6">
	<analytic>
		<title level="a" type="main">// calcul des sauts réversibles à partir de G 19: pour tout T dans pleap R (G) faire 20: Générer un état G par l&apos;exécution simultané des transitions de T ; 21: si G / ∈ Explored alors 22</title>
	</analytic>
	<monogr>
		<title level="m">Open = Open ∪ G 23: finsi 24: fin pour 25: finsi 26: fin tantque 27: retourne :GS n&apos;est pas une erreur de protocole</title>
				<imprint/>
	</monogr>
</biblStruct>

<biblStruct xml:id="b7">
	<monogr>
		<title level="m" type="main">A structured approach to the analysis and design of finite state protocols</title>
		<author>
			<persName><forename type="first">T</forename><forename type="middle">Y</forename><surname>Choi</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1983">1983</date>
		</imprint>
		<respStmt>
			<orgName>School of Electrical Engineering, Georgia Institute of Technology</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Ph.D.Thesis</note>
</biblStruct>

<biblStruct xml:id="b8">
	<analytic>
		<title level="a" type="main">Protocol validation by maximal progress state exploration</title>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">G</forename><surname>Gouda</surname></persName>
		</author>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">T</forename><surname>Yu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="m">Proceedings of ACM SIGCOMM</title>
				<meeting>ACM SIGCOMM</meeting>
		<imprint>
			<date type="published" when="1983">1983</date>
			<biblScope unit="page" from="68" to="75" />
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b9">
	<analytic>
		<title level="a" type="main">Protocol verification using reachability analysis : the state space explosion problem and relief strategies</title>
		<author>
			<persName><forename type="first">F</forename><forename type="middle">J</forename><surname>Lin</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><forename type="middle">M</forename><surname>Chu</surname></persName>
		</author>
		<author>
			<persName><forename type="first">M</forename><forename type="middle">T</forename><surname>Liu</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer communications Review</title>
		<imprint>
			<biblScope unit="volume">17</biblScope>
			<biblScope unit="issue">5</biblScope>
			<biblScope unit="page" from="126" to="143" />
			<date type="published" when="1987">1987</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b10">
	<analytic>
		<title level="a" type="main">Data flow analysis of communicating finite state machines</title>
		<author>
			<persName><forename type="first">W</forename><surname>Peng</surname></persName>
		</author>
		<author>
			<persName><forename type="first">S</forename><surname>Purushothaman</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">ACM Transactions on Programming Languages and Systems</title>
		<imprint>
			<biblScope unit="volume">13</biblScope>
			<biblScope unit="issue">3</biblScope>
			<biblScope unit="page" from="399" to="442" />
			<date type="published" when="1991-07">July 1991</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b11">
	<analytic>
		<title level="a" type="main">Reverse reachability analysis : a new technique for deadlock detection on communicating finite state machines</title>
		<author>
			<persName><forename type="first">Y</forename><forename type="middle">C</forename><surname>Hung</surname></persName>
		</author>
		<author>
			<persName><forename type="first">G</forename><forename type="middle">H</forename><surname>Chen</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Softwar Practice and Experience</title>
		<imprint>
			<biblScope unit="volume">23</biblScope>
			<biblScope unit="issue">9</biblScope>
			<biblScope unit="page" from="88" to="93" />
			<date type="published" when="1993-09">September. 1993</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b12">
	<monogr>
		<title level="m" type="main">Verifying the safety properties of concurrent systems via simultaneous reachability</title>
		<author>
			<persName><forename type="first">K</forename><surname>Ozdemir</surname></persName>
		</author>
		<imprint>
			<date type="published" when="1995">1995</date>
		</imprint>
		<respStmt>
			<orgName>Department of CSI, University of Ottawa</orgName>
		</respStmt>
	</monogr>
	<note type="report_type">Ph.D. Thesis</note>
</biblStruct>

<biblStruct xml:id="b13">
	<monogr>
		<title level="m" type="main">A uniform approach to tackle state explosion in verifying progress properties for networks of CFSMs</title>
		<author>
			<persName><forename type="first">V</forename><forename type="middle">S</forename><surname>Hans</surname></persName>
		</author>
		<author>
			<persName><forename type="first">U</forename><surname>Hasan</surname></persName>
		</author>
		<idno>TR-96-13</idno>
		<imprint>
			<date type="published" when="1996-11">November 1996</date>
		</imprint>
		<respStmt>
			<orgName>Department of Computer Science, University of Ottawa</orgName>
		</respStmt>
	</monogr>
</biblStruct>

<biblStruct xml:id="b14">
	<analytic>
		<title level="a" type="main">Protocol validation by simultaneous reachability analysis</title>
		<author>
			<persName><forename type="first">K</forename><surname>Ozdemir</surname></persName>
		</author>
		<author>
			<persName><forename type="first">H</forename><surname>Ural</surname></persName>
		</author>
	</analytic>
	<monogr>
		<title level="j">Computer Communications</title>
		<imprint>
			<biblScope unit="volume">20</biblScope>
			<biblScope unit="issue">9</biblScope>
			<biblScope unit="page" from="772" to="788" />
			<date type="published" when="1997">1997</date>
		</imprint>
	</monogr>
</biblStruct>

<biblStruct xml:id="b15">
	<monogr>
		<title level="m" type="main">A Communication Protocol Validation Approach based on Partial Exploration of Complex State Machines</title>
		<author>
			<persName><forename type="first">Z</forename><surname>Tari</surname></persName>
		</author>
		<author>
			<persName><forename type="first">P</forename><surname>Arora</surname></persName>
		</author>
		<imprint>
			<date type="published" when="2007">2007</date>
			<publisher>ICDCIT</publisher>
		</imprint>
	</monogr>
</biblStruct>

				</listBibl>
			</div>
		</back>
	</text>
</TEI>
