Vérification de la compatibilité des services web pour une composition

publicité
République Algérienne Démocratique et Populaire
Ministère de l’Enseignement Supérieur et de la Recherche Scientifique
Université Constantine2
Faculté des Nouvelles Technologies de l’Information
Information et de la Communication
N° d’Ordre :
Série :
Thèse
Pour l’Obtention du Diplôme de
Magister en Informatique
Vérification de la Compatibilité
ompatibilité
des Services
ervices Web pour une Composition
omposition
Présenté par : KHELLAF Radhia
Devant le Jury :
•
•
•
•
MAAMRI Ramdane
ZEGHIB Nadia
BELALA Faiza
SAIDOUNI Djamel-eddine
eddine
Professeur
MCA
Professeur
Professeur
Université Constantine 2
Université Constantine 2
Université Constantine 2
Université Constantine2
Date de Soutenance le …./ …./ 2014
Président
Rapporteur
Examinateur
Examinateur
Remerciements
Tout d'abord, je remercie mon Dieu de m'avoir donné la santé, la patience, la volonté et
le courage pour terminer cette thèse sous cette forme satisfaisante.
Nombreux sont ceux qui m’ont aidé, encouragé, réconforté, soulagé, tout au long de ces
années et je ne saurais leur exprimer mes remerciements autant que je le souhaiterais ; leurs
discussions, leurs conseils, leur présence, me furent éminemment précieux.
Tout d'abord, je tiens à exprimer ma gratitude à monencadreur Mme ZAGHIB Nadia maître
de conférence à l’université de constantine2 pour m’avoir proposé ce sujet très intéressant et
m’avoir dirigé au cours de ce travail, pour sa confiance et son soutien total tout au long de
l'élaboration de ce travail.
Mes plus sincères remerciements vont également aux membres du jury qui m’ont fait
l’honneur d’avoir accepté d’examiner et de juger ce travail dans des délais plus que limités.Je
souhaite mentionner : M. MAAMRI Ramdane professeur à l’université de constantine2de
m’avoir fait l’honneur de présider le jury de ma soutenance. Mme BELALA Faiza professeur
à l’université de constantine2 ainsi le professeur SAIDOUNI Djamel-eddine de l’université de
constantine2pour l’intérêt qu’ils ont porté à ce travail en acceptant d’être examinateurs.
Mes remerciements à mes amies houda, imen, nadia et nessrine pour leur soutien
C'est un énorme remerciement que j'adresse vers les êtres qui mes sont le plus chers, qui ont
eu un rôle essentiel et continu pendant ma réussite, et qui sans eux aucune réussite n’aurait été
possible.
J’adresse de tout mon cœur mes remerciements à ma chère mère qui fut toujours mon seul
exemple, je suis infiniment reconnaissant pour son soutien, son amour et la confiance qu’elle
m’a offerte tout au long de ces années. Un très grand merci à mon père que Dieu le plus
puissant m’aide pour lui rendre un minimum de ce que je lui dois.
Je veux leurs dire que leurs soutien a été toujours ma source d’espoir et m’a incité toujours à
penser à s’améliorer chaque lendemain. Qu’ils trouvent dans ce travail le fruit de leur travail.
Un grand merci à mes sœurs et frères, pour leur encouragement, leur aide et leur amour
depuis ma tendre enfance.
Je ne pourrais clôturer ces remerciements sans adresser un remerciement particulier et
chaleureux à mon époux BOUOUDEN Hakim pour son encouragement, sa patience et son
aide dans tous les moments de ce mémoire.
KHELLAF Radhia
6
Résumé
Le travail présenté dans cette thèse rejoint les travaux qui explorent le domaine vaste de la
composition des services Web. Celle-ci se réfère au processus de création d’un service
composite offrant une nouvelle fonctionnalité, à partir de services Web existants plus
simples, par le processus de découverte dynamique, d’intégration et d’exécution de ces
services dans un ordre bien défini afin de satisfaire un besoin bien déterminé.
Cette thèse étudie en particulier les incompatibilités qui peuvent surgir lors de la composition
des services Web. Ces incompatibilités peuvent concerner les aspects syntaxiques,
sémantiques, comportementaux ou de qualité de service. Pour chacun de ces types
d’incompatibilité, nous proposons une approche de vérification dans un cadre formel
approprié.
Mots clés : Service Web, Composition, Compatibilité.
Abstract
The work presented in this thesis joins the works exploring the vast domain of Web service
composition. This refers to the process of creating a composite service offering a new
functionality, from simpler existing Web services, with the dynamic discovery process,
integration and execution of these services in a defined order in the aim to satisfy a definite
need.
This thesis examines in particular the incompatibilities that may arise during the composition
of Web services. These incompatibilities may be syntactic, semantic, behavioral, or on quality
of service. For each of these incompatibility types, we propose a verification approach in an
appropriate formal framework.
Keywords: Web Service, Composition, Compatibility.
‫ملخـــص‬
‫ ھذا يشير إلى عملية‬.‫العمل المقدم في ھذه األطروحة انضم إلى األعمال الخاصة بالميدان الواسع لتركيب خدمات الويب‬
،‫ باستعمال عملية االكتشاف الديناميكية‬،‫ و ذلك من خالل أبسط خدمات الواب القائمة‬،‫إنشاء خدمة مركبة ذات ميزة جديدة‬
.‫التكامل وتنفيذ ھذه الخدمات في ترتيب محدد جيدا لتلبية حاجة محددة‬
،‫ أوجه عدم التوافق ھذه قد تتعلق بالجوانب النحوية‬.‫يتناول ھذا البحث عدم التوافق الذي قد ينشأ أثناء تكوين خدمات الواب‬
.‫ نقترح منھج تحقق في إطار منھجي مناسبة‬،‫ لكل من ھذه األنواع من عدم التوافق‬.‫الداللية والسلوكية أو نوعية الخدمة‬
.‫ توافق‬،‫ تركيب‬،‫خدمة الواب‬: ‫الكلمات المفاتيح‬
7
Table des figures
1.1: Modèle Fonctionnel de l’architecture SOA…………………………………11
1.2: Principe de Fonctionnement des Services Web……………………………..14
1.3 : Exemple de document XML………………………………………………..15
1.4 : Structure d’un message SOAP……………………………………………..17
1.5 : Spécification d’un service Web avec WSDL………………………………18
2.1 : Etapes de réalisation d’une composition de services………………………23
2.2 : Orchestration et chorégraphie des services web……………………………25
3.1 : Exemples de services web syntaxiquement incompatibles…………………35
3.2 : Compatibilité sémantique..............................................................................36
3.3 : Exemple d’incompatibilité de comportement entre services……………….37
3.4 : C faiblement compatible mais n’est pas compatible……………………….38
4.1 : Exemples de compatibilité/incompatibilité syntaxique…………………….45
4.2 : Modélisation d’un service de réservation des billets de vol en ligne
à l’aide des LTS………………………………………………………...…..49
4.3 : Ajout d’une opération dans une séquence………………………………….50
4.4 : Suppression d’une opération dans une séquence…………………………...51
4.5 : Exemples de (in)compatibilité des types de données………………………53
4.6 : Principe d’un médiateur……………………………………………………55
4.7 : Adaptation structurelle……………………………………………………..55
4.8 : Adaptation de type de données……………………………………………..56
5.1 : Les classes supérieures d’une ontologie OWL-S…………………………..60
5.2 : Correspondance sémantique entre deux services web……………………...61
5.3 : Correspondances identique et de généralisation entre les paramètres des services
Web………………………………………………………………………………...63
6.1 : Incompatibilité due à l’hétérogénéité des comportements……………….…67
6.2 : Modélisation de services Web à l’aide des SWN…………………………..70
6.3 : Siphons dans un Réseau composite…………………………………………73
7.1 : Gestion de QdS dans l’architecture des services Web………………………82
7.2 : Fonctions d’agrégation pour le calcul de la qualité de service selon
la structure du composite…………………………………………………….83
7.3 : Exemple d’utilisation de la fonction d’agrégation sur une composition
de services Web………………………………………………….…………..84
8.1 : Représentation schématique du scénario…………………………………….88
8.2 : Architecture systématique du scénario………………………………………90
8.3 : Représentation du processus de vérification…………………………………91
8.4 : Compatibilité syntaxique entre les deux interfaces………………………….92
8.5 : Incompatibilité syntaxique entre les deux interfaces………………………...92
8.6 : Illustration d’un cas incompatible……………………………………………94
8.7 : Réseaux de Petri de la composition du scénario de la Figure 8.6……………94
8.8 : Exemple sur la composition de l’agence de voiture……………………….…95
8
Table des matières
Introduction
Contexte..…………………….……………………….……………………………..………...6
Problématique…..………………….….……………………………………………...………..7
Objectif…………………………………….……………………………………………..…....8
Organisation de la thèse………………………………………………………………...……...8
Partie1 : Composition et Compatibilité dans les Services Web
Chapitre 1 : Généralités sur les services Web
1. Introduction…………………………………………..…………………….………...10
2. Architecture orienté service(SOA)…….… ………….………………….…….…..…..10
2.1 Notion de Service…………………...........…………………………….……......10
2.2 Modèle fonctionnel du SOA………………………………….……………......11
3. Service Web………………………………………………….………….………...…...12
3.1 Définition……………….………………………………………….…...…........12
3.2 Propriétés d’un service Web…………………………………...………...….......13
4. Principe de fonctionnement des services Web..……….………………………….......13
5. Principaux standards des services Web ……...………………….……………….......15
5.1 XML (« Extensible Marckup Language ») ..…………………………...…........15
5.2 SOAP (« Simple Object Acces Protocol ») …..…………………...…................16
5.3 WSDL (« Web Service Description Language ») ………………………….......17
5.4 UDDI (« Universal Description Discovery and Integration ») ……….………...19
6. Conclusion……………………………………………………………………………..20
Chapitre 2 : Composition des Services Web
1. Introduction……………………………………………………………………………22
2. Définition…………...………………………………….………………….…………...22
3. Types de composition des services Web………………….…………………...………24
3.1- Orchestration/Chorégraphie………………………………..……………………..24
3.2- Composition Statique/Dynamique……………..……..…..………………………25
4. Degré d’automatisation d’une composition des services ….……..…………...………27
4.1- Composition Manuelle…………………………….…………..………………….27
4.2- Composition Semi-automatique……………………………….…………………27
9
4.3- Composition automatique…………………….…………………..………………27
5. Techniques de composition des services web…….……………….….……..……..…..27
5.1 Composition par Workflow………..…………………….………………….….28
5.2 Composition orientée intelligence artificielle…………………………….…….29
6. Langages de composition des services Web………………………………………....31
7. Conclusion……………………………………………………………………………32
Chapitre 3 : Compatibilité des Services Web dans une Composition
1. Introduction …………………………………………..………….………………….34
2. Notion de compatibilité dans une composition………..………….…………………34
3. Types de compatibilité……………………………………...……………………….35
3.1 Compatibilité Syntaxique………………………………..……………………...35
3.2 Compatibilité Sémantique……………………..……………………………..…36
3.3 Compatibilité Comportementale…………….…………………………………..36
a- Compatibilité Faible/Forte………………………….…………………………37
b- Compatibilité Totale/Partielle…………..……………………………………..38
3.4 Compatibilité de QdS………………………………….……………………….39
4. Conclusion…………….………..……………………………………………………40
Partie2 : Vérification de compatibilité des services Web
Chapitre 4 : Vérification de la compatibilité Syntaxique
1.Introduction…… ……………………………………………………………….….43
2. Définition Informelle………………….….………....………………………….….44
3. Exemples………………..………………….………...……….………………….…44
4. Approches de vérification existantes…………………...…..……………………….45
5. Approche proposée…………………………………...…….…….…………………46
5.1. Vérification de la compatibilité structurelle…………….…..………………….46
5.1.1 Cadre formel………..……………………………….……………………..47
5.1.2. Exemple……………………….…………………….…………………….48
5.1.3. Définition formelle : (Compatibilité structurelle)……………..…………50
5.1.4 Principe de vérification……………………………...…………………….50
5.1.5. Algorithme de vérification………………………………………..……….51
5.2. Vérification de la compatibilité des types des données……………….………..52
5.2.1. Définition formelle : (Compatibilité des types de données)…..…………..53
5.2.2. Exemple….…………………………...……………………………………53
5.2.3. Principe de vérification…………………………………………..………..53
5.2.4. Algorithme de vérification………………………………………………...54
6. Génération d’adaptateur………………………………………………………….…55
7. Conclusion…………………………………………………………………………..56
10
Chapitre 5 : Vérification de la compatibilité Sémantique
1.
2.
3.
4.
Introduction………………………………………………………………………58
Définition informelle……………………………………………...………………58
Approches de vérification existantes…………………………………………...…58
Approche proposée………………………………………………………………..59
4.1 Cadre formel……………………………………………………………..……59
4.2 Définition formelle………………………………………………………..…..60
4.3 Principe de vérification…………………………………………….………….61
4.4 Algorithme de vérification…………………………………………………….62
4.5 Exemple……………………………………………………………………….63
5. Conclusion…………………………………………………………………...……64
Chapitre 6 : Vérification de la compatibilité Comportementale
1. Introduction………………………………………………………………..……..66
2.
3.
4.
5.
Définition informelle (compatibilité comportementale)………………………….66
Exemple…………………………………………………………………………..67
Approches de vérification existantes……………………………………….…….67
Approche proposée…………………………………………………………...…..68
5.1 Cadre formel………………………………………………………………….68
5.2 Exemple………………………………………………………………………70
5.3 Définition formelle (compatibilité comportementale)………………………..71
5.4 Algorithme de vérification……………………………………………....……75
6. Conclusion………………………………………………………………….…….76
Chapitre 7 : Vérification de la compatibilité de QdS
1. Introduction…………………………………………………………….…….…78
2. Définition informelle…………………………….……………………….……...79
3. Approches de vérification existantes………….……………………….……..…79
4. Approche proposée…………………………………………… ;……….….……80
4.1 Critères de qualité pour services élémentaires………………………....……80
4.2 Critères de qualité pour service composite……………….…………..……..82
4.3 Exemple………………………………………………………….…….……84
4.4 Algorithme de vérification………………………………………..…..……..86
11
5. Conclusion……………………………………………………………………….86
Partie3 : Etude de cas
Chapitre 8 : Etude de Cas
1.
2.
3.
4.
Introduction…………………………………………………..………………..88
Description……………………………………………………………….…….88
Déroulement du processus de vérification………………………………..……91
Conclusion………………………………………………………………....…..96
Conclusion générale
Références Bibliographiques
97
99
12
Introduction
1.
Contexte......................................................................................................................................... 14
2.
Problématique................................................................................................................................ 10
3.
Objectif .......................................................................................................................................... 11
4.
Organisation de la thèse................................................................................................................. 11
13
1. Contexte
De nos jours, les systèmes logiciels sont devenus indispensables dans de nombreux domaines.
La taille et la complexité des logiciels est en croissance continue. Les systèmes informatiques
sont devenus de plus en plus complexes et hétérogènes avec un marché toujours plus exigeant
et évolué en matière de performance, d’efficacité, d’innovation, de compétitivité et de
productivité. Les développeurs doivent ainsi faire face à de nouveaux défis tels que:
L’évolution qui s’exprime comme une combinaison de plusieurs facteurs : l’évolution des
plates-formes d’exploitation et d’exécution,
l’évolution des technologies
d’implémentation des logiciels, l’évolution des outils de développement, et l’évolution des
exigences des utilisateurs (qui désirent que les logiciels soient de plus en plus évolutifs et
que ces évolutions soit réalisées le plus rapidement possible).
La complexité des logiciels liée, en général, aux besoins propres des domaines applicatifs
et à la complexité des plateformes technologiques.
La Diversité et hétérogénéité qui peut être sur plusieurs axes tels que les outils, les
technologies d’implémentation, et les composants logiciels à intégrer.
L’intégration qui permet de réduire le coût de développement des logiciels en réutilisant le
plus possible les différents artéfacts dont ils disposent ( logiciels, sources de données, ou
des bases de données déjà créées,…).
Face à ces besoins, l’approche orientée services [1] est apparue comme une solution
efficace. Elle propose de construire des applications à partir d’entités logicielles qui peuvent
être fournies par des organisations différentes. Ces entités sont nommées services. Un service
fournit une fonctionnalité qui, pour être mise à disposition, est spécifiée, de façon syntaxique
et/ou sémantique, par une description de services. La description des services permet aux
éventuels clients de rechercher, découvrir et par la suite appeler un service. De manière idéale,
ce protocole (découverte, sélection, invocation) peut être réalisé à l’exécution, cela donnant
lieu à la création d’applications dynamiques utilisant des services disponibles à un moment.
Les principes de l’approche orientée service ont été promus essentiellement avec le
développement des services Web [2] [3]. Ces derniers ont pour vocation de favoriser une
architecture orientée services SOA (« Service Oriented Architecture ») [1] pour l’intégration
des applications et les interactions dans un environnement hétérogène et versatile qui est le
Web.
14
La notion de « service web » désigne essentiellement une application (un programme) mise à
disposition sur Internet par un fournisseur de service. Leurs particularités par rapport aux
autres technologies de l'informatique répartie est l’utilisation de la technologie Internet
comme infrastructure pour la communication entre eux.
Dans le but de fournir des fonctionnalités de plus en plus élaborées, la composition [4] des
services Web joue un rôle primordial et constitue une évolution naturelle de cette technologie.
En particulier, si aucun service Web simple ne peut satisfaire une requête d’un client, il
devrait y avoir une possibilité de combiner (composer) un ensemble de services Web existants
pour accomplir cette requête.
La composition des services permet donc de créer des applications et des processus en
fonction d’une requête d’un client à l'aide de services issus d'environnements hétérogènes,
quelque soient les détails et les différences de ces environnements. Du coté du client, cette
composition semblera un unique service. La composition sera transparente au client, même si
elle met en jeu la combinaison de plusieurs services Web. A titre d’exemple, nous pouvons
modéliser le service de planification de voyage d’une agence de voyages comme la
composition de plusieurs services Web atomiques (basiques) appartenant à des
organisations différentes : réservation de vol, réservation d’hôtel et location de véhicules.
2. Problématique
Malgré les efforts de recherche et de développement autour de la composition des services,
elle reste une tâche hautement complexe et pose un certain nombre de défis. Sa complexité
provient généralement des sources suivantes :
• L’augmentation dramatique du nombre des services sur le Web rend très difficile la
recherche et la sélection des services pouvant répondre à un besoin donné.
• Les services sont créés et mis à jour de façon hautement dynamique.
• Les services Web sont d’habitude développés par différentes organisations qui
utilisent différents modèles conceptuels pour décrire leurs caractéristiques.
• La modularité constitue une caractéristique importante des services Web, par
conséquent, les services Web composites doivent garder récursivement les mêmes
caractéristiques que les services Web basiques à savoir auto-descriptifs, interopérables,
et facilement intégrables.
La coopération entre les services pour offrir un nouveau service composite, peut s’avérer une
tâche dure puisque l’opération de composition est souvent confrontée à des problèmes
d’incompatibilité entre les services. Ces incompatibilités sont dues au fait que les services
Web sont développés indépendamment les uns des autres et dans différentes parties du
monde.
Ces incompatibilités peuvent être de différents types :
•
•
•
•
Elles peuvent concerner la structure des interfaces des services (nombre et types de ports
d’entrées/sortie).
Elles peuvent être dues à des différences syntaxiques et/ou sémantiques des données
échangées entre les services.
Elles peuvent être d’ordre comportemental où la coopération des services composés
donne un comportement anormal de l’ensemble (tel que l’inter-blocage).
Elles peuvent concerner des aspects de qualité de service (QdS) où la composition fournit
un service composite de qualités non satisfaisante.
Ces incompatibilités entre services Web peuvent avoir des conséquences néfastes sur la
composition telle que le blocage lors de l’exécution. Il est donc nécessaire de vérifier la
compatibilité entre les services Web pour promouvoir la correction et la cohérence des
interactions.
3. Objectif
Dans le cadre de cette thèse, nous nous focalisons sur la vérification de la compatibilité des services
Web en vue d’une composition. Pour cela, les problèmes auxquels il faut répondre et les aspects
auxquels nous nous intéressons sont multiples :
•
•
•
Une première étape consiste à étudier les principaux types d’incompatibilités qui peuvent
surgir lors d’une composition.
Ensuite nous présentons un état de l’art des approches de vérification existantes pour chaque type
de compatibilité.
Enfin nous proposons une approche de vérification pour chacun de ces types d’incompatibilité.
Chacune des approches de vérification proposées sera basée sur un cadre formel approprié (s’il
existe) car certains types de compatibilité sont plus simples à vérifier dans un formalisme
que dans un autre.
•
Notre contribution sera illustrée par une étude de cas.
4. Organisation de la thèse
Cette thèse est divisée en trois parties.
La première partie, est consacrée à la présentation du domaine de notre étude et les
principaux concepts utilisés dans cette thèse. Elle contient trois chapitres :
•
Chapitre 1 présente une introduction au domaine des services Web, leur architecture ainsi
que leurs différents standards XML, SOAP, WSDL, UDDI.
•
Chapitre 2 donne un aperçu sur la composition des services Web. Il décrit l’approche de
composition, et cite ses différents types. Il évoque également les différentes techniques et
les principaux langages de la composition des services Web.
11
•
Chapitre 3 s’intéresse aux différents aspects de la compatibilité ( compatibilité
syntaxique, sémantique, comportementale et QdS ) des services Web pour s'assurer que
les interactions réciproques entre eux ne conduisent pas à des conflits ou à des blocages.
La deuxième partie est consacrée à notre contribution et se focalise en particulier sur la
vérification de la compatibilité entre les services Web. Elle est divisée en quatre chapitres,
chacun d’eux traitant un type de compatibilité.
•
Chapitre 4 est consacré à la compatibilité syntaxique. Il présente l’état de l’art dans ce
domaine. Ensuite il détaille l’approche que nous proposons avec le cadre formel pour la
vérification de ce type de compatibilité.
•
Chapitre 5 est destiné à la compatibilité sémantique. Il évoque les principaux travaux
correspondants, et présente notre approche de vérification de cette compatibilité.
•
Chapitre 6 est dédié à la compatibilité comportementale des services Web. Il évoque les
principales investigations entreprises dans ce domaine et présente notre approche de
vérification avec son cadre formel.
•
Chapitre 7 s’intéresse à la compatibilité au niveau qualité de service. Il survole quelques
travaux du domaine et donne une présentation de notre approche de vérification de ce
type de compatibilité.
La dernière partie est réservée pour une étude de cas pour mieux illustrer notre contribution.
12
Chapitre 1
Généralités sur les services Web
1.
Introduction ................................................................................................................................... 14
2.
Architecture orientée service (SOA) ............................................................................................. 14
3.
2.1
Notion de Service .................................................................................................................. 14
2.2
Modèle fonctionnel du SOA.................................................................................................. 15
Service Web .................................................................................................................................. 16
3.1
Définition............................................................................................................................... 16
3.2
Propriétés d’un service Web .................................................................................................. 17
4
Principe de fonctionnement des services Web .............................................................................. 17
5.
Principaux standards des services Web ......................................................................................... 19
5.1. XML (« Extensible Marckup Language »)................................................................................. 19
5.2. SOAP (« Simple Object Access Protocol») .............................................................................. 20
5.3. WSDL (« Web Service Description Language ») ...................................................................... 22
5.4 UDDI («Universal Description, Discovery and Integration»).................................................... 23
6.
Conclusion ..................................................................................................................................... 24
[1] [2] [3] [4]
13
1. Introduction
Les services Web poursuivent un vieux rêve de l'informatique distribuée où les applications
pourraient inter-opérer à travers le réseau, indépendamment de leur plate-forme et de leur
langage d'implémentation. Ils sont considérés comme étant l´évolution naturelle du Web où
on peut distinguer trois phases de développement [5]:
•
•
•
Les Documents Web, le phénomène Internet originel, utilisé principalement par des
organisations et des particuliers pour publier des informations sur leur travail, leurs
produits, …etc.
Les applications Web, le progrès grâce auquel les entreprises ont commencé à utiliser
le Web à des fins commerciales. Les sites Internet sont devenus plus interactifs, et
plus complexes, gérés par des serveurs d’applications, capables de distribuer leur
charge avec d’autres serveurs, en fonction des besoins.
Les Services Web est la phase émergente, dans laquelle les serveurs d’applications
précédents communiquent désormais entre eux. Cette évolution a été poussée par le
désir de pouvoir réaliser des échanges interentreprises dans un environnement
automatisé et ouvert tel qu’Internet.
De nos jours, les services Web sont devenus un domaine de recherche à part entière. Ils
suscitent beaucoup d’intérêt de la part de chercheurs dans des communautés très variées. On
peut citer à titre d’exemple, le génie logiciel, les bases de données, la modélisation des
entreprises et la représentation des connaissances ou les multi-agents.
Dans ce chapitre, nous allons présenter l’architecture orientée service et les concepts généraux
des services Web. Nous présenterons la pile des technologies des services Web tout en
mettant en relief la multitude de standards et de technologies existants.
2. Architecture orientée service (SOA)
L’architecture orientée service désignée par le vocable de SOA (« Service Oriented
Architecture »), est un style d’architecture [1] permettant de construire des systèmes
informatiques évolutifs et adaptables, en améliorant leur qualité et en simplifiant leur
intégration dans l’infrastructure informatique de l’entreprise, par recours à des composants
réutilisables appelés services. Dans ce qui suit, nous présentons les concepts sur lesquels
repose l’architecture SOA.
2.1
Notion de Service
Le terme de service est un terme clef du SOA. Il est inspiré des services simples et
réutilisables du monde réel tel que le service de distribution de billets automatique. Au sens
14
SOA, un service est un programme autonome, réutilisable, qui peut être invoqué par un
utilisateur ou un autre service.
Plus précisément, un service expose donc un ensemble d’opérations (fonctionnalités) mises à
disposition par un fournisseur à l’attention d’un(ou de plusieurs) client(s) selon un ou des
contrats prédéfinis.
2.2
Modèle fonctionnel du SOA
Le modèle SOA est un modèle (abstrait) qui définit un système par un ensemble de
composants logiciels distribués qui collaborent afin de réaliser une fonctionnalité globale
préalablement établie. Ce modèle permet de répondre aux problèmes d'intégration dans les
architectures logicielles en facilitant l’ajout et la suppression d’un module sans remettre en
cause toute l'architecture [6].
L'architecture SOA vise trois objectifs importants [7]:
(i)
(ii)
(iii)
Identification des composants fonctionnels,
Définition des relations entre ces composants et
Etablissement d’un ensemble de contraintes sur chaque composant de manière à
garantir les propriétés globales de l’architecture.
Cette architecture s’articule autour d’un « médiateur » central qui garantie la publication des
services proposés par des fournisseurs au profit des futurs clients. Les trois opérations de base
de cette architecture sont la publication de la description, la découverte du service suite au
déclenchement de la recherche et l’interaction entre le client et le fournisseur par invocation.
La Figure 1.1 montre le modèle fonctionnel de l’architecture SOA.
Client
3. invocation
2. Recherche
Fournisseur de Service
1. Publication
L'annuaire
de service
Figure 1.1: Modèle Fonctionnel de l’architecture SOA.
L'architecture SOA comprend trois acteurs : [8]
Le fournisseur du service : il désigne l'entité propriétaire du service. D'un point de
vu technique, un fournisseur est constitué par la plate-forme d’accueil du service.
15
Le client ou demandeur du service : C’est le consommateur de service. D’un point
de vue technique, le service client est constitué de l’application qui va rechercher et
invoquer un service.
L'annuaire de service : Correspond à un registre de descriptions de services offrant
des facilités de publication de services à l’intention des fournisseurs ; et des facilités
de recherche de services à l’intention des clients. En d'autres termes, l'annuaire joue le
rôle d'intermédiaire entre les clients et les fournisseurs de services.
3. Service Web
L’approche la plus répandue pour mettre en œuvre une architecture SOA est l’utilisation de
services Web. Les services Web visent à la transposition des SOA dans le cadre du Web.
Le terme « service Web » désigne essentiellement une application (un programme) mise à
disposition sur Internet par un fournisseur de service, et accessible par les clients à travers des
protocoles Internet standards [9] [10].
3.1
Définition
Il y a actuellement autant de définitions des Services Web que de sociétés qui en proposent.
La définition communément admise, d’un point de vue technique, définit un Service Web
comme :
« un composant logiciel implémenté dans n'importe quel langage, déployé sur n'importe
quelle plate-forme et enveloppé dans une couche de standards dérivés du XML(« eXtensible
Markup Language »). Il doit pouvoir être découvert et invoqué dynamiquement par d'autres
services » [10].
Un service Web est donc un composant logiciel qui offre des services à travers une interface
standardisée. La particularité des services Web réside dans le fait qu’ils utilisent la
technologie Internet comme infrastructure pour la communication entre les composants
logiciels (les services Web) et ceci en mettant en place un cadre de travail basé sur un
ensemble de standards.
L'avantage de ce modèle tient du fait qu’il est possible de présenter ces services comme des
"boîtes noires". En fait, les entrées-sorties d'un service sont gérées au sein de messages dont
on connaît le format grâce à des interfaces clairement exposées mais sur lesquels
l'implémentation interne du traitement n'influe pas au niveau de la structure. Ceci permet un
haut niveau de modularité et d'interopérabilité. L'avantage du modèle est qu'il permet de
s'abstraire de l'architecture, du langage ou encore de la plate-forme qui va supporter le
16
service: il suffit juste que le message respecte une structure donnée pour qu'il puisse être
utilisé.
L’objectif ultime de l’approche service Web est de transformer le Web en un dispositif
distribué de calcul où les programmes (services) peuvent interagir de manière intelligente en
étant capables de se découvrir automatiquement, de négocier entre eux et de se composer en
des services plus complexes [10] [11] [12].
3.2
Propriétés d’un service Web
Le consortium W3C1 [7] définit un service Web comme étant une application ou un
composant logiciel qui vérifie les propriétés suivantes :
•
•
•
•
Les services Web peuvent être définis, décrits et découverts à travers le Web qui
permet une accessibilité facile. Non seulement les utilisateurs de services Web
peuvent localiser les services appropriés, mais les services eux-mêmes peuvent se
décrire et s’annoncer de sorte qu’il leur soit possible d’interagir entre eux.
Un service Web est complètement indépendant des langages de programmation et des
systèmes d’exploitation.
Un service Web est localisé automatiquement via un mécanisme de recherche simple.
Les services Web sont décrits par des langages standards basés sur XML. Bien que les
services Web puissent être implémentés par différents langages de programmation,
leurs interfaces sont décrites par des langages XML standards.
Les services Web répondent à une double demande : celle d’un échange sûr et celle d’un
échange ouvert. Il s’agit de donner les moyens à deux applications de s’échanger simplement.
L’échange ouvert est permis, puisqu’un serveur ne doit pas nécessairement connaître à
l’avance son client pour offrir son service vers l’extérieur [2]
Pour les avantages évoqués ci-dessus, les services Web sont aujourd’hui de plus en plus
employés dans les entreprises pour construire des applications orientées Business ou Web.
Grace à cette technologie les entreprises peuvent faire communiquer leurs systèmes
d’informations avec ceux de leurs clients ou partenaires, via Internet.
Principe de fonctionnement des services Web
Le principe de fonctionnement des services Web est représenté dans la Figure 1.2. Il est fondé
sur le model fonctionnel du SOA et sur des standards basés sur XML.
17
Client
5. Réponse à l’Invocation
• Recherche/Localisation
• Lier (bind)/Connecter
• Invocation
4. Invocation (SOAP)
Fournisseur de services
• Implémentation
• Déploiement
• Description et publication
service/méthodes
2. Recherche WSDL
WSDL
1. Publication
3. Réponse à la Recherche
Annuaire
de
Services
UDDI
Figure 1.2: Principe de Fonctionnement des Services Web
Les interactions dans lesquelles les trois acteurs (fournisseur, client, annuaire) peuvent
s’engager sont décrites par les cinq opérations suivantes [3] :
a). Publication: le fournisseur de services déploie le SW sur un serveur et génère une
description du service (WSDL :Web Service Description Language). Il doit la publier
dans l’annuaire de services (UDDI : Universal Description, Discovery and
Integration) afin de permettre aux futurs utilisateurs de prendre connaissance des
caractéristiques du service. Cette opération consiste en la fourniture des informations
concernant le fournisseur (Information commerciales), relatives au service lui-même
(les fonctions assurées) ainsi que les informations techniques (méthode d’invocation,
adresse…etc.).
b). Recherche du service : le client du service Web lance une recherche auprès de
l’annuaire (UDDI) qui peut être public ou privé par l’envoi d’une requête encapsulée
dans une enveloppe SOAP (Simple Object Access Protocol) afin de rechercher le(s)
service (s) répondant à ses besoins. Dans le cas de plusieurs réponses, des techniques
de sélection de services sont offertes (premier trouvé, aléatoirement) ou sur la base de
paramètres techniques telle que la Qualité de service (QdS) (Contraintes non
fonctionnelles).
18
c). Réponse à la recherche: Le résultat de la recherche dans l’annuaire est un fichier
WSDL qui sera transmis, dans un message SOAP, au client demandeur. Ce fichier
contient la description du service et les informations techniques nécessaires pour son
invocation.
d). Invocation: Le client utilise la description du service qui existe dans le fichier WSDL,
et interagit directement avec le fournisseur du service. Il envoie un message SOAP,
contenant en plus du (des) nom(s) de(s) l’opération(s) à exécuter et de ses paramètres,
l’adresse (URI) et le type de protocole de communication (HTTP). Techniquement,
cette invocation est basée sur un appel de procédure à distance (RPC).
e). Réponse à l’invocation: Le fournisseur réagit à la réception du message d’invocation
de la part du client en envoyant au client la réponse résultant de l’exécution de la
procédure. Cette réponse est transmise sous la forme d’un document XML via SOAP.
5. Principaux standards des services Web
f).
Une caractéristique qui a permis un grand succès de la technologie des services Web est
qu’elle est construite sur un certain nombre de technologies standards de l’industrie. En
commençant par XML, comme langage de base commun ensuite les trois principaux
standards qui sont : SOAP, WSDL et UDDI que nous détaillons ci-dessous.
5.1. XML (« Extensible Marckup Language »)
XML [13] est un langage de balisage, il a été soumis auprès du W3C [14] en 1998. XML est
inspiré du langage SGML (Standard Generalized Markup Language) et de l’expérience
d’utilisation de http pour aboutir à une technologie infiniment plus flexible et plus simple à
utiliser. De ce fait, XML est alors flexible et extensible, et est devenu rapidement le standard
de représentation et d’échange de documents sur Internet. Sa simplicité, sa portabilité sur
différentes plate-formes, son auto-description ainsi que son extensibilité ont conduit à sa
grande popularité et son adoption comme standard d’échange à travers le Web.
Un document XML est un arbre composé d’un ensemble d’éléments structurés sous forme de
balises. Cette structuration hiérarchisée ouvre la voie au traitement automatique du document
pour l’extraction d’information de leur structure aussi bien que de leur contenu.
19
<personne>
<nom>
<prenom>Mohamed</prenom>
<nomdefamille>Khalil</nomdefamille>
</nom>
<adresse>
<numero>28</numero>
<rue> rue des martyres</rue>
<ville>Constantine</ville>
<pays>Algérie</pays>
</adresse>
</personne>
Figure 1.3 : Exemple de document XML.
Il existe une panoplie d’outils permettant l’exploitation des documents XML. Parmi celles-ci
nous pouvons citer [14] :
• XPath: pour définir la manière d’adresser des parties d’un document XML.
• XQuery: s’intéresse à la structure logique abstraite d’un document XML.
• XSL : pour définir la présentation de document XML.
Un ensemble de standards basés sur XML et traitants des différents aspects inhérents au
déploiement des services Web s’est développé et se développe encore. Ces spécifications
émanant de constructeurs et consortium divers permettent de construire des services Web,
d’assurer l’interopérabilité entre composants applicatifs et de garantir des conditions
opérationnelles d’exploitation réelles de manière à:
• Assurer le fonctionnement et le déploiement des services Web: SOAP, WSDL,
UDDI…
• Effectuer l’échange de données dans un contexte de commerce interentreprises: xCBL
RosettaNet, …Etc.
• Assurer l’intégration de processus collaboratifs sur le Web (Workflow): BPML,
XLANG, BPEL …
• Fournir des mécanismes de sécurité: XKMS …
Nous détaillerons dans ce qui suit les 03 standards de base: SOAP, WSDL et UDDI.
5.2. SOAP (« Simple Object Access Protocol»)
SOAP est un standard proposé par W3C [15]. C’est un protocole à la fois simple et léger
destiné à l'échange d'informations. SOAP est un protocole de type RPC (Remote Procedure
Call) d’échange de messages entre Web services, standard ouvert et entièrement basé sur le
langage XML pour assurer l’interopérabilité entre composants et les appels de procédures
20
distantes (RPC). Ce protocole ne requiert aucune plate-forme spécifique, ni d’exigence
particulière en ce qui concerne l’implémentation de l’application. Au contraire, ce mécanisme
fournit une sémantique tout à fait indépendante des contraintes techniques et, de fait,
compréhensible par tous. Dans la pratique, le transfert est le plus souvent assuré via le
protocole HTTP. SOAP peut cependant reposer sur d’autres protocoles de transport comme
par exemple SMTP ou JMS (Java Message Service) mais HTTP est le plus populaire.
Un message SOAP est un document XML encapsulé dans une enveloppe permettant
d’organiser les informations d’une manière qu’elles puissent être échangées entre partenaires.
Il existe deux types de messages SOAP [16] :
• Request : il inclut le nom de la méthode à invoquer et la liste de ses paramètres.
• Response : il inclut le résultat de la méthode invoquée dans le message Request.
Un message SOAP est structuré comme le montre la Figure 1.4 [16] où :
<Envelope> : c’est l’en-tête de tous les messages SOAP dans lequel on distingue entre
les différentes versions existantes, (1.1, 1.2).
<Body> : c’est le corps du message SOAP dans lequel le type de message est spécifié,
soit il s’agit d’un message Request ou Response.
<Header> : optionnel, il indique que le message SOAP doit être traité par plusieurs
intermédiaires.
SOAP Enveloppe
SOAP Header
Attributs
SOAP Body
Appels de méthodes et
données
Figure 1.4: Structure d’un message SOAP.
SOAP a pour objectif de [3] :
• Offrir un format de message pour les communications entre partenaires, décrivant
comment les informations à échanger sont structurées dans un document XML.
21
•
Définir les conventions nécessaires à l’appel de procédures à distance pour invoquer
un service par un client, en envoyant un message SOAP, et comment le service répond
par un autre message SOAP.
• Décrire comment un message SOAP doit être transporté au dessus de HTTP ou
SMTP.
Il s’agit, donc, d’un mécanisme fondamental pour assurer l’interaction et le dialogue entre
applications distribuées dans un environnement services Web, du moment que clients et
fournisseurs peuvent formuler, transmettre et comprendre les messages SOAP échangés.
5.3. WSDL (« Web Service Description Language »)
WSDL décrit les services Web et, particulièrement, leur interface dans le format XML. En
plus de la spécification des opérations offertes par le service, WSDL décrit les mécanismes
pour l’accès aux services Web (Protocole de communication) et sa localisation (URI), afin de
préciser où envoyer les messages SOAP. Un document WSDL décrit essentiellement le nom
de la méthode utilisée, son nombre de paramètres, et leur type, ce qu'un service Web offre, où
il est hebergé et comment on peut l'invoquer.
Les objectifs de WSDL[17] sont:
• Décrire les interfaces des services en précisant les opérations offertes et leur signature
(Paramètres d’Entrée/Sorties et types). Ces interfaces constituent les contrats que les
clients doivent respecter pour pouvoir interagir avec le service.
• Préciser le (s) protocole (s) d’accès au service (HTTP, SMTP…).
• Fournir la localisation du service où il peut être invoqué (URI).
• Définir une description de la sémantique du service par la fourniture des informations
permettant, éventuellement, aux développeurs de traiter la sémantique des services.
La structure globale d’un document WSDL est représentée par la Figure 1.5.
Spécification WSDL
Partie abstraite
Partie concrète
Types
Messages
Opérations
Liaisons (binding)
Services et ports
Types port
Figure 1.5: Spécification d’un service Web avec WSDL.
22
Dans une spécification WSDL, on décrit chaque service Web nouvellement créé par six
éléments [16] :
• Types : définit le type de données échangées entre le client et le fournisseur du service
sous la forme d’un schéma XML.
• Message : Par l'intermédiaire de cette section, on définit le format des messages
échangés. Un message correspond aux données qui seront véhiculées selon les
méthodes invoquées. Chaque méthode du service possède deux éléments message :
Request : inclut les paramètres du message.
Response : inclut les valeurs retournées du message.
Un message à un nom et potentiellement des parties qui font référence à des
paramètres et des valeurs de retour.
• Type de port (portType) : combine plusieurs messages pour former une opération. Il
y a quatre types d’opération : one-way, request-response, solicit-response et
notification. Le document WSDL est constitué d’autant d’élément portType que le
service contient de groupe de méthodes.
• Opération : décrit les opérations invoquées à l’aide des messages reçus, émis par le
service et éventuellement des messages d’erreur.
• Port : est un point d’accès au service identifié de manière unique par la combinaison
d’un binding et d’une adresse internet.
• Rattachement (binding): spécifie le protocole de communication (le plus souvent
HTTP, mais aussi SMTP, FTP, etc.) et le format d’encodage des données (encodage
RPC, Literal Document, etc.) pour les opérations et messages définis par un type de
port donné. Il est possible grâce à des extensions internes de WSDL de définir des
binding SOAP.
• Service : regroupe un ensemble de ports. Chaque port offre une alternative (différents
protocoles, etc.) pour accéder au service.
Ainsi, la spécification WSDL joue un rôle important dans l'interopérabilité des services Web.
Moyennant cette spécification, WSDL permet aux services de définir ce qui est nécessaire à
leur invocation et à la réception de leur résultat. La spécification WSDL sépare la définition
abstraite du service (échange de messages) de ses mécanismes de liaison (définition des
protocoles applicatifs). Cette dernière caractéristique permet au service d'interagir même si
l'application a été modifiée ce qui est un point important pour assurer l'interopérabilité des
services.
5.4 UDDI («Universal Description, Discovery and Integration»)
Un troisième standard a été conçu pour réduire l’écart entre les applications clientes et les
services Web, appelé UDDI [18]
Contrairement à SOAP et WSDL, UDDI n’est pas supporté par le W3C mais par le
consortium OASIS [19]. UDDI est un annuaire mondial d’entreprises s’appuyant sur le réseau
Internet. Il permet d’automatiser les communications entre prestataires, clients, … etc.
23
UDDI est une spécification qui définit les mécanismes qui permettent aux entreprises de
publier leurs services et de découvrir et interagir avec d'autres services via le Web. UDDI se
comporte lui-même comme un Web service dont les méthodes sont appelées via le protocole
SOAP. Les opérations pouvant être effectuées concernent la recherche, la navigation, l’ajout
et la suppression de services. UDDI permet aux développeurs de découvrir les détails
techniques d’un service Web (le WSDL) ainsi que les informations orientées métier. Par
exemple, en utilisant UDDI, il devient possible de répertorier tous les services Web reliés aux
informations boursières, implémentés sur HTTP, et qui sont gratuits d’utilisation. De plus,
UDDI permet de fournir un niveau d’indirection permettant un couplage faible entre les
services d’une composition. Concrètement un répertoire UDDI est un fichier XML qui décrit
un business et les services qu’il offre.
Les objectifs de l’annuaire UDDI sont [20]
• Offrir un cadre pour la description et la découverte des services Web, en fournissant
des structures de données et des API (Application Programming Interfaces), pour la
publication des descriptions des services dans le registre et pour la découverte de ces
publications pour les clients.
• Soutenir les développeurs dans la recherche des informations concernant le service
afin qu’ils puissent réaliser des clients pour interagir avec ces services.
• Permettre les liens (Binding) dynamiques en offrant aux clients la possibilité
d’interroger le registre UDDI et récupérer les références des services (description
WSDL..) qui les intéressent.
6. Conclusion
L'architecture orientée service (SOA) a été mise en avant afin de faciliter les interactions entre
applications. Cette architecture est construite autour de la notion de service, qui est
matérialisée par un composant logiciel assurant une fonctionnalité particulière et accessible
via son interface.
Le développement rapide des systèmes distribués, et tout particulièrement la « vulgarisation »
de l'accès à Internet a permet l’émergence des services Web qui sont actuellement largement
utilisés et particulièrement promus par, entre autres, Sun, Oracle, HP, Microsoft et IBM.
L'essor incontestable des services Web a permis la naissance d'une nouvelle génération de
systèmes caractérisés par une meilleure intégration d'applications hétérogènes et une
meilleure communication entre ses différents composants.
Les services Web regroupent tout un ensemble de technologies bâties sur des standards
(SOAP, WSDL, UDDI, XML). Ils permettent de créer des composants logiciels distribués, de
décrire leur interface et de les utiliser indépendamment de la plate-forme sur laquelle ils sont
implémentés. La recherche dans ce domaine est très active et s'intéresse entre autres à la
composition, l'orchestration, la sécurité, la sémantique des services Web...etc.
24
Aux termes de ce chapitre, nous avons introduit le domaine des services Web en présentant
leur architecture, leur principe de fonctionnement et leurs standards de base.
Dans le chapitre suivant nous aborderons le concept de composition des services Web.
25
Chapitre 2
Composition des Services Web
1. Introduction ....................................................................................................................................... 27
2. Définition........................................................................................................................................... 27
3. Types de composition des services Web .......................................................................................... 29
3.1- Orchestration/Chorégraphie ....................................................................................................... 29
3.2- Composition Statique/Dynamique ............................................................................................. 30
4. Degré d’automatisation d’une composition des services .................................................................. 32
4.1- Composition Manuelle ............................................................................................................... 32
4.2- Composition Semi-automatique ................................................................................................. 32
4.3- Composition automatique .......................................................................................................... 32
5. Techniques de composition des services web ................................................................................... 32
5.1 Composition par Workflow ........................................................................................................ 33
5.2 Composition orientée intelligence artificielle ............................................................................ 34
6. Langages de composition des services Web .................................................................................... 36
7. Conclusion ......................................................................................................................................... 37
[1] [2] [3] [4] [5] [6] [7] [8] (Fensel, Bussler, & Maedche, Semantic Web Enabled Web
Services, 2002)
26
1. Introduction
Les services Web commencent à se proliférer sur le Web et sont déjà présents dans plusieurs
secteurs d’activité. En effet, plusieurs entreprises exposent leurs services Web aux partenaires
et clients. Cependant, chaque service Web, pris individuellement, ne fournit qu’une
fonctionnalité limitée. Alors que pour réaliser leurs activités réelles, les clients n’invoquent
pas de simples opérations. Ils réalisent, plutôt, des activités complexes ou «processus
métiers». Il devient, alors, opportun de rechercher l’ensemble des services Web disponibles,
de sélectionner les plus satisfaisants et de les combiner pour répondre à la requête du client.
L’application cliente obtenue, peut à son tour être exposée comme service Web. C’est le
principe de la composition des services. Le problème de la composition de services Web se
réfère à la construction des nouveaux services Web « services Web composite » à partir des
services individuels existants. Par exemple, un service de planification de voyage peut être
développé en combinant plusieurs services élémentaires tels que la réservation d’hôtel,
l’achat d’un billet d’avion, location de voiture, … etc.
Dans ce chapitre nous présentons le concept de composition des services Web. Nous citerons
les principaux types de compositions : orchestration/chorégraphie, statique/dynamique. Nous
mettons en relief le fait qu’une composition peut être manuelle ou (semi)automatique. Ensuite
nous montrons que les différentes techniques de la composition peuvent être regroupées en
deux sous familles : les techniques utilisant une approche basée sur les workflows (processus
métier),et celles basées sur les concepts d’intelligence artificielle. Nous évoquerons
également quelques langages et outils de composition.
2. Définition
La composition de services est le mécanisme qui permet l’intégration des services dans une
application [15]. Le résultat de la composition de services peut être un nouveau service,
appelé service composite. Dans ce cas, la composition est dite composition hiérarchique.
La composition de services est aujourd’hui un sujet de grand intérêt autant pour le monde de
la recherche que pour le monde industriel. De nombreuses recherches visent à développer des
modèles de composition de services et à fournir les outils nécessaires pour la composition de
services.
La réalisation d’une application par composition de services comporte plusieurs étapes (voir
la Figure 2.1) qui permettent le passage incrémental d’une spécification abstraite vers une
composition concrète de services, c’est à dire une composition prête à être exécutée [16].
27
1. Définition abstraite
Identification des services abstraits
Liaisons
2. Planification
Identification des fournisseurs
des services disponibles
Services candidats
3. Construction
Sélection des services utilisés
Adaptation
Configuration
Interroge fournisseurs
disponibles
Registre
des services
Publie description
de services
Récupère services concrets
Dépôt de
composants
services
Application
4. Exécution
Invocation des services
Figure 2.1 : Etapes de réalisation d’une composition de services
1. La définition abstraite de la composition de services a comme point de départ
l’identification des fonctionnalités qui doivent être remplies par l’application ainsi créée.
Elle demande l’identification des fonctionnalités abstraites que les différents participants
doivent fournir ainsi que celle des interactions qui auront lieu entre ces participants.
2. La planification identifie les fournisseurs mettant à disposition des services compatibles
avec les besoins fonctionnels identifiés au préalable. Les fournisseurs ainsi identifiés
représentent des candidats pour la réalisation de la composition concrète de services.
3. La construction sélectionne, selon une stratégie donnée, les fournisseurs qui mettent à
disposition les fonctionnalités nécessaires parmi les candidats précédemment identifiés.
Cette étape prépare pour l’exécution les services concrets correspondants : les services sont
configurés et d’éventuelles adaptations sont réalisées. Dans le cas d’un service composite,
la description du service ainsi réalisée est publiée dans un ou plusieurs registres de services
4. La phase d’exécution de l’application ainsi obtenue qui réalise l’invocation des services
préparés au préalable
Malgré son organisation en étapes facilitant une mise en place effective, la réalisation d’une
composition de services reste une activité complexe. Chaque étape est composée d’une ou
plusieurs tâches que les développeurs exécutent parfois manuellement. De plus, de nombreux
28
problèmes d’incompatibilité peuvent survenir à chaque étape de la composition. A titre
d’exemples :
• Lors de la planification, les services sélectionnés ne fournissent pas toujours la
fonctionnalité correspondant aux besoins de la composition. Par exemple, une requête de
fonctionnalité demandant un service Web de < vente d’avions > peut renvoyer comme
résultat aussi bien des services proposant la vente d’avions grandeur nature que d’avions
miniatures pour enfants.
• Lors de la construction, de nombreuses incompatibilités peuvent apparaître entre les
fonctionnements des services Web. Ces derniers peuvent suivre des types d’interactions
différents (requête simple, requête avec réponse, réponse simple, réponse avec accusé de
réception), ou échanger les données selon différentes séquences d’échanges de messages,
• Lors de l'exécution, les données échangées entre les services peuvent présenter des
différences de structure et de signification.
Les développeurs se retrouvent rarement dans la situation idéale où tous les services
nécessaires à la réalisation d’une composition de services sont compatibles. Dans la majorité
des cas, afin de remplir correctement leur tâche, ils doivent résoudre les différentes
incompatibilités des services participants.
3. Types de composition des services Web
Les services Web sont composés quand une requête du client ne peut pas être satisfaite par un
seul service disponible, mais par un service composite obtenu en combinant d’autres services
disponibles. Le problème de la composition de services Web est de synthétiser un nouveau
service composé qui réalise la requête du client, donc de spécifier comment coordonner les
services Web disponibles pour réaliser cette requête. Cette coordination est décrite par un
processus métier (workflow).
3.1-
Orchestration/Chorégraphie
Dans la littérature sur les Services Web, les termes “orchestration” et “chorégraphie” sont
utilisés pour décrire la composition de services dans un flot de processus métier. Elles
constituent une des classifications les plus évoquées en ce qui concerne les types de
composition des services Web.
a). Orchestration
L’orchestration décrit l’interaction des services Web au niveau de messages, incluant la
logique métier et l’ordre d’exécution des interactions. Les services Web impliqués dans cette
orchestration n’ont pas de connaissance (et n’ont pas besoin de l’avoir) d’être mêlés dans une
composition d’un processus métier. Seulement, le coordinateur de l’orchestration (dit aussi
orchestrateur ou moteur d’orchestration) a besoin de cette connaissance.
29
La coordination d'une orchestration d'un service est un processus centralisé qui contrôle et qui
coordonne l'ordre et l'exécution des interactions du service avec les partenaires impliqués dans
la composition.
Une orchestration de Services Web est vue donc comme un « orchestre », où un processus
particulier joue le rôle de chef d’orchestre. Celui-ci coordonne l’exécution des autres services.
Il s’agit d’un point de vue individualiste : les services, à l’exception de l’orchestrateur, n’ont
pas besoin de savoir qu’ils sont mêlés à une composition. Il y a un seul document de haut
niveau représentant les étapes du processus et ce document est seulement connu et traité par
l’orchestrateur. La Figure 2.2(a) illustre ce type de composition.
Service
web1
Service web
coordinateur
Service
web1
Service
web2
(a) Orchestration
Service
web2
Service
web3
(b) Chorégraphie
Figure 2.2 : Orchestration et chorégraphie des services web
b). Chorégraphie
Contrairement à la l’orchestration, la chorégraphie ne nécessite pas de coordinateur central.
Chaque service Web impliqué dans la composition connaît exactement quand ses opérations
doivent être exécutées et avec qui l’interaction doit avoir lieu.
La chorégraphie est de nature plus collaborative, chaque participant impliqué dans le
processus décrit le rôle qu'il joue dans le processus.
Dans une chorégraphie, les services sont vus comme des « danseurs » qui savent exactement
quoi faire et de quelle manière interagir avec leurs partenaires. Il s’agit d’une approche
collaborative où chacun des participants a besoin d’un document dans lequel l’interaction est
décrite. Ces documents mettent l’accent sur l’échange de messages. La Figure2.2 (b) illustre
ce type de composition.
3.2-
Composition Statique/Dynamique
Nous pouvons également classer les types de compositions en deux grandes familles : les
techniques de composition dites « statiques », ou « dynamiques » selon que cette composition
a lieu avant ou pendant l’exécution des services Web.
30
a). Composition statique
Ce type de composition peut être appliqué dans des environnements « stables » où les services
Web participants sont toujours disponibles et où le comportement du service composite est le
même pour tous les clients. La composition des services web prend place durant la période de
conception. Les composants sont choisis, reliés entre eux et enfin compilés et déployés. Le
service composite ainsi obtenu fonctionnera bien tant que son environnement et les services
qui le composent ne changent pas ou ne changent que rarement. Les stratégies de récupération
en cas d’échec des services, tel que substitution du service ou la gestion des erreurs, sont
prédéfinis. Microsoft BizTalk et Bea WebLogic sont des exemples de moteurs de
compositions statiques [18] [17]. Cependant, l'environnement des services Web est un
environnement fortement flexible et dynamique, de nouveaux services deviennent disponibles
et leurs fonctionnalités peuvent changer fréquemment, ainsi que le nombre de fournisseurs de
service progresse constamment.
Des problèmes peuvent survenir si un fournisseur actualise un service ou si l’un d’entre eux
est substitué par un autre. Dans cette situation il est inévitable de changer l’architecture
logicielle, et dans le pire des cas changer la définition du processus et reconcevoir le système.
Dans ce cas, la composition statique peut être trop restrictive et les composants doivent
s’adapter automatiquement aux changements inattendus ainsi qu’aux exigences du client avec
l'intervention minimale de l'utilisateur. La composition statique considère que les fonctions du
service ne changent pas et que les services sont toujours disponibles. Pour cela de nouveaux
types de compositions ont été considérés.
b). Composition dynamique
Dans ce type de composition, les services Web à composer sont déterminés lors de
l’exécution de la requête d’un client. Ils peuvent être déterminés selon les contraintes de
chaque client, la disponibilité des services Web, …etc. La composition dynamique apparaît la
plus intéressante d’une part, elle promet d’être capable de faire face à un environnement très
dynamique dans lequel des services apparaissent et disparaissent de manière fréquente.
D’autre part, elle permet de mieux satisfaire les besoins de chaque client en minimisant son
intervention.
Le système de composition dynamique doit donc détecter et gérer ces changements. La
composition dynamique des services web implique : i) La découverte des « bons » services à
composer selon des contraintes et des besoins. ii) La dynamicité et la flexibilité dans la
composition de services Web. Dans ce contexte StarWSCoP (Star Web Services Composition
Plateform) [19] est l’une des plateformes de composition dynamique de services Web. Elle
inclut plusieurs modules: un système intelligent qui décompose les exigences de l'utilisateur
en des descriptions abstraites du service, un registre de service qui est un entrepôt du services
web; un moteur de découverte pour trouver des services adéquats qui satisfont les exigences
de l'utilisateur dans le registre de services, un moteur de composition qui supervise les
31
services composés afin qu’il soient exécutés dans le bon ordre, un adaptateur (wrapper) qui
assure l’ interopérabilité des services hétérogènes qui ont été développés séparément par des
fournisseurs différents, une bibliothèque qui stocke les traces d’informations sur l'exécution
des services composites, une estimation en temps réel des qualités de service du service
composite et un moniteur qui contrôle les événements et notifie le moteur de composition.
4. Degré d’automatisation d’une composition des services
Du point de vu degré d’automatisation, une composition est classée dans l’une des trois
catégories.
4.1-
Composition Manuelle
Cette classe suppose que le développeur génère la composition à la main via un éditeur de
texte par la sélection et la fusion des services à incorporer. Elle s’adapte aisément aux besoins
de l’utilisateur, car il peut tout définir à son goût depuis le début. Seulement, il ne dispose
d’aucun outil dédié et il est obligé de maîtriser les techniques de programmation.
4.2-
Composition Semi-automatique
Les techniques de composition semi-automatiques font des suggestions sémantiques aux
utilisateurs pour les aider à sélectionner les services impliqués dans le processus de
composition. L’utilisateur maintient certains contrôles sur le processus de composition, sans
avoir à maîtriser les techniques de programmation de bas niveau. Il dispose d’outils
graphiques de modélisation et de conception pour définir ses propres processus.
4.3-
Composition automatique
La composition totalement automatisée prend en charge tout le processus de composition et le
réalise automatiquement, sans qu’aucune intervention de l’utilisateur ne soit requise.
Le service Web composite est une boite noire inaccessible et dont la flexibilité est minimisée.
5. Techniques de composition des services web
Les différentes techniques existantes pour la composition de services Web peuvent être
regroupées en deux courants :
• Le premier se base sur le fait qu’un service Web composite est défini par un ensemble
de services atomiques et par la façon dont ils communiquent entre eux. Cette
définition est du même type que la manière dont est défini un processus métier
(workflow).
32
•
Dans le second courant, la composition est vue comme la génération automatique
d’un plan d’exécution des services Web. Les approches envisagées sont des
approches du domaine de l’intelligence artificielle et plus particulièrement de la
planification. Ces techniques sont basées sur le fait qu’un service Web peut être
spécifié par ses préconditions et ses effets.
5.1 Composition par Workflow
D’une certaine façon, un service composite est similaire à un processus métier [20]. Un
service composite inclut un ensemble de services atomiques ainsi que les contrôles et
échanges de données entre ces services. De la même façon, un processus métier est composé
d’un ensemble d’activités élémentaires structurées, ainsi que l’ordre d’exécution entre elles.
Un workflow statique signifie que le demandeur doit établir un modèle de processus abstrait
avant de commencer la composition. Ce processus abstrait inclut un ensemble de tâches et
leurs dépendances de données. Chaque tâche contient une clause de la requête qui est utilisée
pour chercher le bon service Web atomique afin d’accomplir cette tâche. Dans ce cas,
seulement la sélection [21]et les liens au service Web atomique sont faits par un programme
automatiquement.
Parmi les travaux qui investissent dans ce type de techniques de composition on peut évoquer
les travaux ci-dessous.
•
Casati présente EFlow, [22] [23]une plateforme pour la spécification, la création et la
gestion de services composites développée par HP. EFlow s’exécute au dessus des platesformes e-services (ESPs). Ces plates-formes permettent le développement, le déploiement
et la livraison sécurisée des e-services aux entreprises et clients. Les fournisseurs de
services peuvent enregistrer les descriptions des services qu’ils offrent et peuvent contrôler
et gérer l’exécution de services. Les services peuvent être découverts par les
consommateurs en spécifiant des critères de recherche. L’invocation de services est limitée
aux utilisateurs autorisés.
Dans EFlow, le service composite est décrit comme un schéma de processus qui compose
des services de base ou composites. Les services composites sont modélisés par un graphe
définissant les flux d’invocations de services semblable aux diagrammes d’activité
d’UML, qui est également traduit en une structure XML. Le graphe contient des nœuds
services, décisions et événements. Les nœuds services représentent l’invocation d’un
service atomique ou composite, les nœuds décisions spécifient les règles de contrôle du
flux d’exécution, et les nœuds événements permettent aux processus du service d’envoyer
et recevoir plusieurs types d’événements. Les arcs dans le graphe représentent les
dépendances d’exécution entre les nœuds.
33
•
Khalaf [24] propose de regarder les chorégraphies créées avec BPEL4WS en tant que
services Web, c.-à-d. créer des patrons de composition qui pourront être composés,
formant ainsi de nouveaux patrons de composition. Cette solution facilite la composition
par une intégration plus simple de patrons d’assemblage prédéfinis dans un nouveau
patron mais ne règle pas le problème de la dynamicité de la composition des services
Web.
•
Laukkanen et Helin [25] identifient deux solutions possibles pour composer
dynamiquement des processus métier : remplacer un service Web dans un processus
métier existant par un autre service ayant des fonctionnalités similaires, ou définir un
nouveau workflow à partir des services Web disponibles. Les auteurs proposent d’utiliser
les descriptions sémantiques des services Web pour pouvoir comparer les fonctionnalités
en utilisant les notions de préconditions et d’effets de OWL-S. La solution proposée peut
être résumée en 4 étapes :. identifier les fonctionnalités requises, trouver les services
adaptés grâce à leur description sémantique, créer ou modifier le workflow, et Exécuter le
workflow en vérifiant son exécution.
•
Dans le même esprit, Osman [26] propose de limiter les points négatifs des techniques de
composition de type workflow en utilisant les technologies du Web sémantique, plus
particulièrement OWL. Il ne s’agit pas directement de composition automatique mais le
but est de limiter le nombre de services Web disponibles afin de créer plus facilement des
workflows. Pour cela, les auteurs proposent de regrouper les services Web en domaines
spécifiques (e.g., domaine des services Web d’hôtels, de transports, etc.) Ainsi le choix
des services à utiliser est restreint au domaine des services ayant comme fonctionnalités
les objectifs du workflow.
• Yang et Papazoglou [27] proposent une approche pour la planification, la définition et
l’exécution de la composition en se basant sur le concept du composant Web dans le but
de rendre la composition de services flexible et extensible. Ce concept regroupe un
ensemble de services préexistant (atomiques ou composites) et présente leurs interfaces
et opérations d’une façon cohérente et unifiée sous forme de définitions de classes. Une
fois qu’une classe composant Web est définie, elle peut être réutilisée, spécialisée et
étendue. Un composant Web spécifie la logique de composition en termes de
constructions de dépendances de messages et de type de composition. Le composant est
spécifié dans le langage SCSL (Service Composition Spécification Langage) et enregistré
dans une bibliothèque.
5.2 Composition orientée intelligence artificielle
La composition dynamique de services Web par des techniques d’intelligence artificielle, et
plus particulièrement par des techniques de planification, est l’une des voies qui semblent
prometteuses [28] . En effet, les concepts de OWL-S sont très fortement inspirés de ceux de la
planification, les préconditions présentent les conditions qui doivent être satisfaites pour
34
garantir la bonne exécution d’un service Web. Les effets sont le résultat du succès de
l’exécution d’un service. Dans ce qui suit, nous présentons quelques axes de recherche actuels
concernant la composition par planification et par d’autres techniques d’intelligence
artificielle.
•
McIlraith et al. [29] [30] [31] proposent d’adapter et d’étendre le langage Golog pour la
construction automatique de services Web. Golog est un langage de programmation
logique qui sert à représenter des changements ou évolutions en termes de situations,
d’actions et d’objets. Le problème de la composition de services Web est abordé de la
façon suivante : la requête de l’utilisateur et les contraintes des services sont représentées
en termes de prédicats du premier ordre dans le langage de calcul situationnel. Les
services sont transformés en actions (atomiques ou complexes) dans le même langage.
Puis, à l’aide de règles de déduction et de contraintes, des modèles sont ainsi générés et
sont instanciés à l’exécution à partir des préférences utilisateur.
•
Waltinger [32] a élaboré une approche pour la composition de services par preuve de
théorèmes. Cette approche est basée sur la déduction automatique et la synthèse de
programmes. Les services disponibles et les requêtes utilisateur sont traduits dans un
langage du premier ordre. Puis, des preuves sont produites à partir d’un prouver de
théorèmes. La composition est obtenue à partir de preuves particulières. Dans le même
axe, Rao et al [33] ont introduit une méthode de composition automatique de services
Web sémantiques en utilisant des preuves de théorèmes de la logique linéaire.
•
Cheng et al [34] voient les services web comme des agents et proposent le langage
ASDL (Agent Service Description Language) pour décrire le comportement externe des
services Web. Une spécification ASDL décrit les messages compris par un service, ainsi
que les protocoles d’interactions utilisés. Puis, la composition est effectuée à l’aide du
langage ASCL (Agent Service Composition Language) qui permet de décrire la logique
avec laquelle un nouveau service est composé à partir de services existants. L’avantage
de ces travaux est de mettre l’accent sur les interactions entre services au sein de la
composition et d’adapter celle-ci en fonction des contraintes résultant des interactions.
Muller et Kowalczyk [35] travaillent aussi sur un système multi-agent pour la
composition de services basé sur la concurrence entre coalitions de services ; les agents
représentants les services se contactent les uns les autres pour proposer leurs services en
fonction de leurs capacités de raisonnement et ainsi former des coalitions d’agents
capables de résoudre les buts fournis par l’agent utilisateur.
•
Un intérêt croissant de la communauté planification pour la composition de services Web
peut être expliqué par la similarité entre les descriptions OWL-S et les représentations en
planification. En effet, la communauté du Web sémantique s’est fortement inspirée du
langage PDDL lors de la conception du langage de description OWL-S. Ainsi, une
description OWL-S peut être facilement traduite en une représentation PDDL : les
services Web sont représentés par des opérateurs ayant des préconditions et produisant
35
des effets. Puis, un planificateur peut alors être utilisé pour produire un plan qui
correspond à la composition des services Web. Carman et al. [36], mais également
Constantinescu et al [37] ont utilisé cette correspondance pour composer un ensemble de
services Web.
6. Langages de composition des services Web
De nombreux langages ont été proposés pour modéliser la composition de services: WSBPEL [38] qui est issue de XLANG [39] de Microsoft et WSFL [40] d’IBM, WSCI [41], WSCDL [42]. Certains de ces langages issus de l’industrie tels que WS-BPEL, modélisent la
composition sous forme d’un processus métier exécutable. D’autres langages tels que WSCDL définissent des opérateurs de construction simples permettant de décrire la collaboration
entre un ensemble de services.
Des initiatives ont été prises dans le but de fournir des plates-formes et des langages qui
offrent l’intégration des systèmes hétérogènes, tels que WSCI, WSCL, WSFL, BPEL4WS.
Dans cette partie, nous présenterons quelques standards ayant émergé dans le domaine de la
composition des services Web.
•
BPML (Business Process Modeling Language):
C’est un métalangage de modélisation des processus collaboratifs qu’engage l’entreprise avec
ses partenaires sur Internet. Il prend en compte aussi les aspects les plus complexes de la
gestion et de la coordination de ces processus, en abordant les transactions, la sécurité et la
liaison dynamique avec les services Web en cours d’exécution.
•
XLANG
XLANG de Microsoft, permet de décrire formellement les processus d’entreprises comme des
interactions entre participants. La description complète d’un processus consiste aussi bien à
définir le comportement de chaque participant, qu’à décrire la manière dont l’ensemble des
participants interagit pour produire le processus complet..
• WSFL (Web Service Flow Language)
C’est une approche IBM qui permet d’intégrer la composition de services Web comme un
processus métier statique. C’est un langage basé XML permettant de décrire des
orchestrations de services Web.
•
BPEL4WS (Business Process Execution Language For Web Services)
BPEL4WS est un langage de composition pour décrire les interactions entre les services Web
qui composent un processus métier, proposé par Microsoft, IBM, BEA et d’autres grands
acteurs du monde de l’informatique et de l’Internet pour palier le problème de composition
des SW. Il a remplacé les précédents langages XLANG (Microsoft) et WSFL (IBM).
BPEL4WS permet la coordination des services Web dans un fprocessus métier.
36
•
WSCL (Web Service Conversation Language)
WSCL a été proposé par le consortium W3C, il permet de définir les interfaces abstraites des
services Web, c-à-d les conversations au niveau métier soutenues par un service Web. Il
spécifie les documents XML à échanger et leur ordre.
.
• WSCI (Web Service Choregraphy Interface)
C’est un langage reposant sur XML et qui décrit le flux de messages échangés par un service
Web participant à une chorégraphie.WSCI fonctionne en conjonction avec WSDL pour
construire l’interface dynamique du service Web en réutilisant les opérations définies pour
l’interface statique.
7. Conclusion
La composition des services web est un point crucial qui a un grand impact sur plusieurs
domaines de recherches. De nombreux efforts ont été fourni afin de permettre une
composition utilisable et acceptable de services Web.
L’objectif de la composition de services est de répondre, justement, aux exigences des clients
en offrant des fonctionnalités à valeur ajoutée par articulations de fonctionnalités déjà offertes
par d’autres services Web.
La composition de services implique la capacité de sélectionner, d’articuler et de faire interopérer des services existants, pour réaliser cette activité. Contrairement aux Business Process
«traditionnels» qui sont exécutés d’une manière prévisible et répétitive dans un
environnement statique, les services Web composés s’exécutent dans un environnement
ouvert et versatile, où les services offerts sont diversifiés et évolutifs et où la forte compétition
engendrée par la multitude de fournisseurs oblige les entreprises à mieux adapter leurs
services pour répondre aux besoins croissants des clients et à moindre coût.
Cependant, pour permettre une telle composition, des abstractions, des outils et des
environnements sont nécessaires. Ils permettent de sélectionner les services impliqués dans la
composition, de spécifier l’ordre des opérations à invoquer, de gérer et de contrôler le flux de
données à travers les services à composer, ainsi que la gestion des transactions et des
situations d’exception.
Après une étude des services Web et de la composition de services, nous allons examiner dans
le prochain chapitre, Les différents types d'incompatibilité qui peuvent apparaître lors de la
création d’une composition.
37
Chapitre 3
Compatibilité des Services Web dans une
Composition
1. Introduction....................................................................................................................................... 39
2. Notion de compatibilité dans une composition ................................................................................ 39
3. Types de compatibilité ...................................................................................................................... 40
3.1-
Compatibilité Syntaxique ...................................................................................................... 40
3.2-
Compatibilité Sémantique ..................................................................................................... 41
3.3-
Compatibilité Comportementale .......................................................................................... 41
a-
Compatibilité Faible/Forte .................................................................................................... 42
b-
Compatibilité Totale/Partielle ............................................................................................... 43
3.4-
Compatibilité de QdS............................................................................................................. 44
4. Conclusion ......................................................................................................................................... 45
[1] [1] [2] [3] [4] [5] [6] [7] [8] (Fensel, Bussler, & Maedche, Semantic Web Enabled Web
Services, 2002) (Casati & Shan, Models and languages for describing and discovering eservices, 2001) [11] (Kellert & Toumani, 2003) [13] (Bray T. , Paoli, Sperberg-McQueen, &
Maler., 6 Octobre 2000) [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28]
[29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44]
38
1. Introduction
La technologie « Service Web » est la technologie clé permettant l’intégration des
applications via le web. Dans ce domaine, la composition de services web constitue l’un des
champs de recherche les plus actifs et l'une des principales motivations pour favoriser
l’utilisation de services Web et ainsi répondre aux exigences de plus en plus complexes.
Avant son exécution, une composition est spécifiée par un processus métier, qui orchestre les
échanges de données entre les services Web composés. Ces données sont représentées par les
paramètres d’entrée/sortie détaillées dans les descriptions des services. Ce sont
respectivement les données transmises au service Web et nécessaires à son exécution, et les
données émises par le service comme résultat de cette exécution. Du point de vue de la
composition, un échange de données entre deux services consiste à recevoir les données
envoyées par un service Web émetteur, et à transmettre des résultats à un service Web
destinataire.
Pendant l’étape d’exécution d’une composition, il est possible que des incompatibilités
provoquent l’inconsistance des échanges de données entre services Web. En effet, la syntaxe
et la sémantique associées aux données par le service émetteur peuvent, par exemple, être
différentes de celle attendue par le service destinataire. Ainsi, il est nécessaire de fournir des
méthodes pour déceler ces hétérogénéités pour permettre des échanges consistants, sur
différents niveaux entre des services Web participant à une composition.
Dans ce chapitre, nous discutons la notion de compatibilité entre les services Web d’une
composition. Cette notion permet de s'assurer, avant la mise en œuvre d'une application
complexe composée, du bon déroulement de la collaboration entre les services Web
composants.
Nous présentons d’abord quelques définitions, ensuite nous examinons une classification des
différentes incompatibilités qui peuvent apparaître lors de la création d’une composition.
2. Notion de compatibilité dans une composition
Un ensemble de services Web est dit compatible si les services peuvent collaborer
« correctement ». La collaboration se réalise par l'échange d'un ensemble de messages, i.e.,
par le biais de conversations. Une conversation durant laquelle aucun blocage n'apparaît, est
dite correcte. Les blocages qui peuvent surgir sont principalement dus à l'hétérogénéité des
services au niveau des types des messages, des types des données, des contraintes de données,
l'ordre dans lequel ces messages peuvent survenir ou bien être engendrés, par l'impact que
peuvent avoir les différentes contraintes temporelles et les diverses exigences imposées sur
l'ensemble des interactions des services Web.
39
En d’autres termes la vérification de la compatibilité consiste à vérifier si deux services
peuvent interagir correctement et engager des conversations entre eux, (si une conversation
peut être établie entre les services considérés) et chaque service peut se terminer
correctement.
3. Types de compatibilité
Il existe plusieurs types de (in)compatibilités. Dans ce qui suit, nous présentons celles les
plus évoquées dans la littérature [44] [45] [46] [47] où on distingue quatre aspects à vérifier
pour assurer la compatibilité entre les services Web participants à une composition. Ces
aspects concernent des propriétés syntaxiques, sémantiques, comportementales et les
propriétés de qualité de service (QdS) [44] [45] [46] [47].
3.1-
Compatibilité Syntaxique
La compatibilité syntaxique (dite aussi compatibilité d’interface) concerne la syntaxe et les
types des messages entre les services partenaires. Elle signifie que les interfaces structurelles
des services Web interactifs sont conformes, par exemple, les étiquettes et les types de
données des messages correspondants sont les mêmes. En effet, un message envoyé par un
service doit avoir la même structure que le message devant être reçu par le service partenaire.
Actuellement, le Web Service Description Language (WSDL) fournit une méthode
normalisée pour spécifier ces interfaces structurelles.
Il convient de rappeler que dans les services Web, la structure des messages qui transitent via
un port est définie par un schéma XML. Celui-ci est un arbre qui définit le nombre de
champs du message ainsi que leur organisation.
Deux service web ont des données syntaxiquement compatibles (en vue d’une composition) si
et seulement si chaque message commun (envoyé par l’un et devant être reçu par l’autre) a le
même schéma XML dans les deux services.
Exemple :
Les services Web de la Figure 3.1 ne sont pas compatibles car les schémas XML S-XML1 et
S-XML2 sont différents : S1 envoie un message Livre contenant deux informations (titre et
auteur) alors que S2 doit recevoir un message Livre contenant trois informations (titre, auteur
et éditeur)
S-XML1
Livre
titre auteur
S1
p
S-XML2
Livre
titre auteur éditeur
p
S2
40
Figure 3.1 : Exemples de services web syntaxiquement incompatibles.
3.2-
Compatibilité Sémantique
La compatibilité sémantique assure que les messages et leurs contenus sont correctement
interprétés. Ce type de compatibilité signifie que lors des interactions des services Web les
informations échangées sont comprises d'une manière cohérente et sans ambiguïté. En effet,
il est important de s’assurer que la signification d’une même donnée est identique dans
chacun des deux services en communication.
Exemple :
Bien que les deux services S1 et S2 de la Figure 3.2 soient syntaxiquement compatibles, le
sens de Id, Nom et Date dans chacun des deux services doit être le même. Si on suppose que
le Nom et Date envoyés par S1 sont le nom de l’entreprise et la date de sa création ; et que
pour le service S2 le Nom est celui du propriétaire et la Date est sa date de naissance, alors S1
et S2 ne sont pas sémantiquement compatibles.
S-XML1
Id
Nom
S1
S-XML2
Id
date
Nom
p
date
p
S2
Figure 3.2 : Compatibilité sémantique.
3.3-
Compatibilité Comportementale
La compatibilité du comportement signifie que les services Web partenaires (dans une
composition) sont en accord sur ce à quoi s'attendre de l'autre en termes d'opérations à
exécuter, de résultats à livrer, et de messages à envoyer et à recevoir. Le comportement réfère
41
ici à des séquences possibles de messages que les services Web s’échangent mutuellement en
réponse à des déclencheurs ou des dépendances commerciales. En effet, en plus de la
compatibilité syntaxique et sémantique, la composition des services doit garantir le bon
fonctionnement du composite résultant de la composition : les services composés doivent
accomplir leur tâches de façon cohérente sans qu’aucun d’eux ne perturbe (ou bloque)
l’exécution d’un autre.
Exemple :
Soient les deux services S1 et S2 représentés par la Figure 3.3. Le service S1 modélise le
comportement d’un client qui s’installe (PLACE), passe une commande (command) et attend
d’être servi (Repas), puis mange, avant de payer la facture (Argent). Par contre le service S2
prend la commande, attend le payement de la facture avant de servir le client. La composition
de ces deux services mène à une situation de blocage et par conséquent ils ont des
comportements incompatibles.
S1
S2
P5
P1
Command
PLACE
Accepter
Command
P2
P6
Repas
Repas
Recueillir de
l’argent
Manger
P3
P7
Payer
Faire cuire
P4
Argent
Argent
P8
Figure 3.3 : Exemple d’incompatibilité de comportement entre services.
Une compatibilité de comportement peut être d’une part faible/forte, ou d’autre part totale/
partielle. Nous précisons ci-dessous ces concepts.
a- Compatibilité Faible/Forte
Un service web composite C modélisé comme un réseau fermé est un service qui se compose
de la coordination de plusieurs services compatibles.
42
Nous nous concentrons sur ces trois exigences pour analyser cette compatibilité:
Faible-compatibilité : Un réseau fermé C est dite faiblement compatible si C est sans
interblocage. L’exemple illustré dans la Figure3.3, montre un composite C qui n'est
pas faiblement compatible. En effet, C se bloque car le service S1 de C attend le repas
pour exécuter l’action manger puis payer ; pendant que S2 attend l’argent pour servir
le repas.
Compatibilité : qui exclut non seulement les blocages, mais aussi les cycles non
productifs. Un réseau fermé C est dite compatible (comportement) si l’état initial (état
interne) est toujours accessible. L’exemple illustré sur la Figure 3.4 montre que le
réseau C est faiblement compatible mais C n’est pas compatible à cause des états qui
ne sont pas toujours accessibles. En effet, à la fin de l’exécution il est possible que les
messages envoyé par S2 vers S1 dans la place fichier ne soient pas consommés si S1
exécute l’action quitter la requête au lieu de l’action obtenir le fichier.
Forte-compatibilité : Un réseau fermé C est dit fortement compatible si C est
compatible et quasi-vivant (bonne fin, et aucune activité morte).
P8
P1
Ordre
P5
Requête
P11
Recevoir
Ordre
P2
Envoyer
identification
P3
Login
info
P9
P12
Accepter
login info
P6
Login
info
P13
P7
Fichier
Quitter la
requête
Retourner
Obtenir
le fichier
P10
Fichier
P14
P4
Figure 3.4 : C faiblement compatible mais n’est pas compatible
b- Compatibilité Totale/Partielle
Les conflits peuvent avoir un impact partiel ou total sur la collaboration de services Web. En
fonction de l'impact que peuvent avoir les conflits sur la collaboration de services Web. Nous
présentons ci-dessous, ces différentes classes de compatibilité.
Compatibilité totale :
43
Cette première classe de compatibilité regroupe des services Web qui peuvent coopérer sans
blocage. En effet, aucun type de blocage ne peut apparaître lors de l'interaction des deux
services. Donc toutes les exécutions des deux services peuvent interagir sans qu'un blocage ne
survienne.
Lors d'une coopération entre les services web, des messages peuvent être envoyés sans qu'ils
soient consommés. Pour cela, nous distinguons deux sous classes :
•
Compatibilité totale parfaite : On dit que les services Web d’une composition est
totalement et parfaitement compatible, si toutes les conversations ne contiennent
aucun blocage et tous les messages produits sont consommés.
•
Compatibilité totale non-parfaite : Lors de l'interaction des services web, aucun
blocage ne peut survenir, mais en même temps, certains messages produits au cours de
leurs conversations ne seraient pas consommés, c'est ce qu'on désigne par
compatibilité totale non-parfaite.
Compatibilité partielle ou (simple compatibilité) :
Les services web qui ne sont pas totalement compatibles mais peuvent introduire quelques
interactions correctes, sont des services partiellement compatibles. Donc deux services
peuvent mener correctement au moins une conversation et en même temps peuvent en
échouer en menant au moins une autre, sont des services partiellement compatibles.
Dans cette classe aussi, on distingue deux sous classes :
•
Compatibilité partielle parfaite :
Un ensemble de services Web est partiellement et parfaitement compatible, s'il existe
au moins une conversation menant à un blocage et en même temps, ils peuvent avoir
d'autres conversations correctes où tous les messages produits sont consommés.
•
Compatibilité partielle non-parfaite :
La compatibilité partielle non-parfaite concerne des services Web partiellement
compatibles où il existe au moins un message produit qui n'est pas consommé.
Incompatibilité totale
La dernière classe que nous proposons est l'incompatibilité totale. Cette classe rassemble
l'ensemble des services Web incapables d’avoir au moins une conversation correcte, i.e., les
services échouent dans toutes leurs conversations.
Le concept de compatibilité est très important pour les développeurs. D’un côté, les services
incompatibles (totalement ou partiellement) ne sont pas pris, en général, en considération
dans la phase de sélection. D’un autre coté, les développeurs doivent déterminer les
conversations permises dans le cas de compatibilité partielle.
3.4-
Compatibilité de QdS
44
La qualité de service (QdS) est un ensemble de propriétés et caractéristiques d'une entité ou
d’un service qui lui confèrent l'aptitude à satisfaire des besoins déclarés ou implicites [48].
Ces besoins peuvent être liés à des paramètres tels que l'accessibilité, la disponibilité, le temps
de réponse, le coût, la fiabilité, ... etc. Ces paramètres peuvent être alors considérés comme un
critère de choix lorsqu’on a affaire à sélectionner parmi plusieurs services web découverts
ceux qui respectent les contraintes imposées.
Exemple
Soient 2 services web S1 et S2 qui sont compatibles de chacun des points de vue syntaxique,
sémantique et comportemental. Si S1 n’est pas disponible la journée du Dimanche de
chaque semaine et S2 n’est pas disponible la journée du Vendredi de chaque semaine (pour
des raisons de week-end) ; la composition des deux services ne peut pas produire un service
composite disponible toute la semaine. Ainsi, si on considère le paramètre de qualité
disponibilité 7jours/7 (toute la semaine), les services S1 et S2 ne sont pas compatibles.
4. Conclusion
La composition de services Web offre la possibilité de faire coopérer plus d’un service pour
accomplir des tâches de plus en plus complexes. Cependant l’opération de composition est
confrontée à des problèmes d’incompatibilité entre services. En effet, quand un service fournit
des fonctionnalités qu'un autre service exige, il est peu probable que l’on puisse directement
composer les deux services s’ils ne sont pas programmés à l'avance pour collaborer.
Ce problème de la composition de services Web est en plein essor. Nous pouvons souligner
ici quelques sources de ces problèmes :
Un Web service n’est pas adaptable. Il est passif (non exécutable) jusqu’à ce qu’il
soit invoqué. Il a des connaissances de lui-même mais pas de ses applications ou de
ses utilisateurs clients ;
Puisque le nombre de services Web augmente jour après jour, il devient plus difficile
de trouver artificiellement le service Web qui soit à la fois compatible et qui peut
effectuer la tâche à accomplir.
Les services Web peuvent être créées et réactualisés. Par conséquent, deux services
compatibles aujourd’hui peuvent ne plus l’être demain. Ainsi, le schéma de la
composition devrait s’adapter en fonction des nouvelles informations.
Les services Web sont généralement établis par des organisations différentes qui
utilisent différents modèles conceptuels pour la présentation des caractéristiques des
services. Cela exige l’utilisation d’informations pertinentes pour faire correspondre
(matching) et composer les services web.
45
Dans ce chapitre, nous avons abordé la définition de la compatibilité entre les services web
dans une composition. Ensuite nous avons évoqué les différents types d’incompatibilité
possibles entre les services web.
La définition formelle de chaque type de compatibilité dépend du formalisme considéré pour
la modélisation des services Web.
Dans les chapitres suivants, nous allons présenter pour chaque type de compatibilité, un cadre
approprié pour représenter les services web et pour permettre la vérification de compatibilité.
46
Chapitre 4
Vérification de la compatibilité
Syntaxique
1. Introduction....................................................................................................................................... 71
2. Définition Informelle ......................................................................................................................... 72
3. Exemples............................................................................................................................................ 72
4. Approches de vérification existantes ................................................................................................ 73
5. Approche proposée ........................................................................................................................... 74
5.1. Vérification de la compatibilité structurelle............................................................................... 74
5.1.1 Cadre formel ......................................................................................................................... 74
5.1.2. Exemple ............................................................................................................................... 76
5.1.3. Définition formelle : (Compatibilité structurelle) ............................................................... 78
5.1.4 Principe de vérification......................................................................................................... 78
5.1.5. Algorithme de vérification................................................................................................... 79
5.2. Vérification de la compatibilité des types des données............................................................. 81
5.2.1. Définition formelle : (Compatibilité des types de données) ............................................... 81
5.2.2. Exemple : ............................................................................................................................. 81
5.2.3. Principe de vérification........................................................................................................ 82
5.2.4. Algorithme de vérification................................................................................................... 82
6.
Génération d’adaptateur............................................................................................................... 83
7.
Conclusion ..................................................................................................................................... 84
[1] [1] [2] [3] [4] [5]
47
1. Introduction
Etant donné que différents services Web écrits dans différents langages, par différents
fournisseurs et sur différentes plateformes, peuvent être utilisés dans la même application, des
outils d'analyse sont devenus cruciaux. Le but de ces outils est de vérifier que les interactions
des différents services sont correctes, i.e., les services Web peuvent mener leurs conversations
sans blocage. Ces vérifications sont très importantes, du fait qu'une mauvaise interaction (une
interaction qui n'est pas correcte) peut avoir des conséquences néfastes. En effet, les services
Web sont de nos jours utilisés dans plusieurs domaines, notamment dans des domaines
critiques, tels que le domaine médical et le domaine économique. Par conséquent, assurer que
les interactions sont correctes est primordial.
Du point de vue syntaxique, on doit pouvoir vérifier la compatibilité au niveau structurel ainsi
qu’au niveau des types de données échangées entre les services.
Au niveau structurel, l’ensemble des interactions n’est possible que s’il y a au moins des
échanges (envoi/réception de messages) possibles. Ceci suppose l’existence d’une
correspondance entre les ports d’entrée d’un service, et les ports de sortie du service
partenaire.
Au niveau types de données échangées, la vérification concerne chaque couple de ports (port
de sortie d’un service et le port d’entrées correspondant dans le service partenaire). Les
données envoyées via un port de sorties d’un service doivent avoir des types compatibles avec
ceux des données reçues par le port correspondant du service partenaire.
La compatibilité syntaxique est souvent dite compatibilité d’interface car elle consiste à
comparer les interfaces des deux services à composer. L’ensemble des interactions réalisées
entre un client et un service est appelé conversation. Selon que l’on se réfère à l’interface
qu’un service existant est capable de fournir, ou à l’interface qu’un service est censé fournir,
et donc attendue par les clients, on parle d’interface fournie ou d’interface requise.
L’interface fournie comprend donc les opérations par lesquelles un service Web fournit ses
fonctionnalités à d’autres services. L’interface requise inclut les opérations qu’un service web
a besoin pour mettre en œuvre sa fonctionnalité.
Lorsqu’il s’avère que suite à des modifications l’interface fournie d’un service ne correspond
plus à l’interface que ses partenaires requièrent, que ce soit par une comparaison, ou par un
test de conformité parce qu’une conversation a échoué, il y a deux solutions :
(1) Adapter l’interface requise comme interface fournie et modifier le service en
conséquence ;
48
(2) Introduire un adaptateur qui réconcilie l’interface fournie avec celle requise par les
partenaires.
La première solution est en général non utilisée car le même service peut interagir avec
plusieurs autres services partenaires qui considèrent son interface d’origine. Ce qui conduit à
la situation où le même service peut participer à diverses collaborations qui nécessitent
différentes interfaces fournies. La seconde solution remédie à ce défaut par la fourniture d’un
adaptateur ou d’un médiateur.
Dans ce chapitre nous examinons la compatibilité syntaxique entre deux services web et
nous proposons une approche de vérification de détection des incompatibilités syntaxiques qui
peuvent exister dans une composition de services web.
2. Définition Informelle (compatibilité syntaxique)
Deux services sont déclarés syntaxiquement compatibles si les deux processus sont disjoints
et pour chaque point d’entrée/sortie en commun, l’entrée de l’un correspond à une sortie de
l’autre et vise versa.
La compatibilité syntaxique exige donc que pour chaque opération de l’interface requise
d’une composition de service web, il ya au moins une opération portant le même nom dans
l’interface fournie d’un des services web élémentaires qui correspond en nombre de
séquence et types de paramètres.
3. Exemples
Afin d’illustrer ce type d’incompatibilité lors d'une collaboration, nous présentons des
exemples dans la Figure 4.1. Dans ces exemples, nous considérons deux services S1 et S2. Les
messages sortants sont notés par +m et les messages entrants par –m, un message contenant
des données est noté par m (d1, d2,.., dn). La notation m1&m2 dénote une agrégation (un
message composé) des messages m1 et m2.
S1
+m1 (d1)
-m1 (d1)
-m2 (d2)
+m2 (d2)
S2
49
(a) : Une composition de services web compatibles
+m1&m2
-m1
S1
-m2
S2
(b) : Incompatibilité syntaxique due à un incompatibilité structurelle
S1
+m1 (d0)
-m1 (d1)
-m2 (d2)
+m2 (d2)
S2
(c) : Incompatibilité syntaxique due à l’hétérogénéité des types de données
+m1 (d1)
S1
-m2 (d2)
-m0 (d1)
+m2 (d2)
S2
(d) : Incompatibilité syntaxique due à l’hétérogénéité des types des messages
Figure4.1 : Exemples de compatibilité/incompatibilité syntaxique
4. Approches de vérification existantes
Dans les approches à base de réseaux de Petri [49] [50] [51], les algorithmes de bissimilarité
sont utilisés pour détecter les incompatibilités structurelles entre l’interface fournie par le
service et celle attendue par le client. En cas d’incompatibilité, une trace des erreurs est
retournée au concepteur afin qu’il réajuste la définition de la structure du service. Ces
approches ne traitent pas la situation où, suite à une modification de l’interface fournie par le
service, celle-ci n’est plus compatible avec celle requise par ses clients. De ce fait, le service
fournisseur aussi bien que ses partenaires doivent adapter leurs interfaces structurelles à
chaque nouvelle modification.
Dans d’autres approches ont étudié les incompatibilités syntaxiques qui peuvent se produire
où les messages reçus ou envoyés n’ont pas la structure (type) attendue. La plupart de ces
50
travaux proposent des adaptateurs qui s’appuient sur des outils de transformation de données
tels que Xpath, XQuery, XSLT. Les approches étudient les incompatibilités structurelles
induites par les différents modes d’envois et de réceptions des messages (voir par exemple
[52] [53] [54]). Les adaptateurs sont construits de manière semi-automatique en se basant sur
des patrons d’incompatibilité identifiés ou en utilisant des opérateurs d’adaptation. Parmi ces
patrons d’incompatibilités structurelles, certains ont une influence sur le comportement,
comme par exemple l’envoi ou la réception de messages superflus, des envois multiples
versus une réception unique, un envoi unique versus des réceptions multiples. Les approches à
base de médiateurs (on parle de patrons de médiation dans [55]), suggèrent la définition de
fournisseurs virtuels qui transforment la structure des messages envoyés et reçus. Cependant,
ces propositions se limitent aux cas d’opérations optionnelles qui n’influent pas sur la logique
métier du service. Ici aussi, l’adaptation des interfaces est faite à la conception. Par suite, les
incompatibilités peuvent se produire à la suite des évolutions des interfaces. Ce qui oblige le
concepteur du service à redéfinir l’adaptateur à chaque évolution et pour chaque client.
Des approches sont proposées dans [56] [57] pour l'adaptation d'une interface WSDL de
service aux clients syntaxiquement incompatibles. Dans [57] les auteurs supposent que les
interfaces de tous les services qui fournissent des fonctionnalités similaires soient tirées d'une
interface de base commune à l'aide d'un certain nombre d'opérateurs de dérivation qui
permettent d'ajouter ou de retirer des paramètres de fonctionnement. Cependant, les noms
d'opérations et d'autres aspects de l'interface de service sont les mêmes.
Dans [56] , les auteurs proposent de définir des vues de service au dessus des interfaces
WSDL en modifiant les interfaces WSDL pour permettre les interactions avec les services
incompatibles. Toutefois, aucun soutien automatique à la production de vues n’est proposé.
5. Approche proposée
Dans le but le procéder à la vérification de la compatibilité syntaxique entre deux services
dans une composition, nous distinguons entre deux niveaux : le niveau structurel et le niveau
type de données.
5.1. Vérification de la compatibilité structurelle
Avant de procéder à la vérification il faut représenter les services web dans un contexte
formel commun. Puisqu’il existe différents types de compatibilité à vérifier, certain types de
compatibilité sont plus simples à vérifier dans un formalisme que dans un autre.
Il existe plusieurs formalismes pour la modélisation de la composition des services comme les
réseaux de Petri, la logique temporelle, l’algèbre de processus,...etc. Dans le contexte de notre
travail, nous allons utiliser la modélisation avec les systèmes de transitions étiquetées LTS
(Labled Transition Systems) pour vérifier la compatibilité syntaxique, puisqu’ils permettent
51
de décrire la structure du service et le
messages).
contrôle de son exécution (envoi/réception de
5.1.1 Cadre formel
Nous allons modéliser l’interface d’un service web par un système de transition étiquetées
(Labelled Transition Systems, LTS) qui fournit une représentation formelle des interfaces de
service permettant de comparer plus facilement les interfaces et de détecter leurs
incompatibilités structurelles.
Un système de transitions étiquetées (LTS) est un automate, représenté par un graphe orienté
où :
•
Les nœuds désignent les états possibles d’un système. On a trois types d’états : un état
initial, des états finaux (échec ou succès), et les états intermédiaires (traitement
interne).
• Les arcs désignent les transitions entre les états. Ces transitions sont déclenchées par
des événements. Chaque arc est étiqueté par l’évènement dont l’occurrence déclenche
le passage de l’état origine de la transition vers l’état destination. Autrement dit
l’étiquette est soit envoi de messages, réception de messages ou appels d’opération
interne.
Une condition (ou garde) sous forme d’expression booléenne peut être associée à une
transition et le système peut passer d'un état vers un autre en déclenchant la transition
seulement si la contrainte associée est satisfaite.
Definition (LTS)
Un LTS est décrit un 6-uplet P=(S, s0, A, T, F, M) où :
− S : est un ensemble fini d’états ;
− s0 : est l’état initial avec s0 ∈ S ;
− A : est un ensemble fini des évènements (actions) ;
− T : SxA →S est la fonction de transition qui associe à un état source si ∈ S et à un
évènement ak ∈ A , un état destination sj ∈ S noté par ( si, ak, sj) ou « si ak sj » ;
− F : est un ensemble non vide des états finaux avec F⊆ S ;
− M : est un ensemble des messages ;
Un message m peut être envoyé noté !m ou reçu ?m. Il contient une liste de paramètres
m(d1,d2,.., dn) noté m(d)
On a trois types de transitions :
a= !m, a= ?m, ou a= (d1, d2,.., dm ; d1’, d2’,.., dm’).
52
Une trace est une séquence de plusieurs transitions (un chemin) notée comme suit :
s0
α
α
α
→
s →
s ...→
sn
0
1
1
n−1
2
ou bien (s0,α0,s1) (s1,α1,s2) …..(sn-1,αn-1,sn)
On note :
− s• l’ensemble des transitions sortantes de l’état s
− •s l’ensemble des transitions entrantes dans l’état s
− t• l’état cible de la transition t
− •t l’état source de la transition t
Pour pouvoir vérifier la compatibilité syntaxique de deux services web, nous supposons
disposer de la modélisation de leurs interfaces par des LTS. Les deux interfaces à étudier sont
définies donc par deux LTSs P et P’ qui sont respectivement décrit par P=(S, s0, A, T, F, M)
et P’= (S’, s0’, A’, T’, F’, M’).
5.1.2. Exemple
La Figure 4.2 donne un exemple de modélisation par des LTS de deux services Web : le
service de réservation de billets et le service de paiement par carte de crédit (PCC).
Le demandeur spécifie la destination (ville) ainsi que la date du Voyage. Ensuite, le service de
réservation de billets propose une liste de description des billets. Le demandeur fait un choix,
et il fournit un numéro de carte de crédit (ncc) pour compléter la réservation. Ensuite, le
service de réservation de billets appelle le service (PCC) pour vérifier la validité du numéro
de la carte de crédit (ncc) afin de garantir le paiement.
Vu l’intérêt de l’analyse de compatibilité structurelle des services web dans une composition,
nous essayons dans cette partie, de détecter les différentes incompatibilités structurelles entre
deux interfaces de services.
53
? Description
de la demande
(ville, date)
Recherche de
billets (ville, date,
N°, prix, horaires)
S1
S0
! Liste de billets
(N°, prix, horaires)
? Billet choisi
S3
S2
S4
! Prix à
payer (prix)
? Billet payé
(prix, ncc)
! Réservation
confirmée (billet)
S9
S8
! Billet à payer
(prix, ncc)
S7
? Numéro de carte
de crédit (ncc)
S6
? Échec
(ncc erroné)
S5
? Réservation
abandonnée ()
S10
Service de réservation de billets
? Billet à payer
(prix, ncc)
t0
Vérifier ncc
(ncc, approuvé)
t1
Si approuvé=’ok’)
débiter (prix, ncc)
! Billet payé
(prix, ncc)
t3
t2
t5
Si approuvé≠’ok’)
? Échec (ncc erroné)
t4
Service de paiement par carte de crédit (PCC)
Figure 4.2 : Modélisation d’un service de réservation des
billets de vol en ligne à l’aide des LTS
54
5.1.3. Définition formelle : (Compatibilité structurelle)
Soient P= (S, s0, A, T, F, M) et P’= (S’, s0’, A’, T’, F’, M’), deux LTS modélisant les interfaces
de deux services Web. P et P’ sont compatibles pour une composition s’il existe une
conversation entre P et P’ (au moins un chemin d’exécution complet de P et supporté par P’).
Soit mi
le message à invoquer pour la transition courante mi(s1, a, s2) ∈ P
et mj (s1’, a’, s2’) ∈P’ , la compatibilité des messages mi et mj est vérifiée si :
•
•
•
Les noms des messages sont identiques ;
L’état cibles s2 correspond à l’état cible s2’
Les polarités (a, a’) se compensent ( !, ?).
Donc pour détecter les incompatibilités entre P et P’, il suffit d’identifier toutes les différences
qui font que P et P’ ne vérifient pas la définition ci-dessus.
5.1.4 Principe de vérification
Une conversation est incohérente entre deux services si l’interface fournie est différente de
l’interface requise. La détection de l’incompatibilité entre deux services Web repose sur
l’application de l’algorithme de détection des incompatibilités qui examine les LTSs P et P’
correspondant à leurs interfaces. A partir de leurs états initiaux respectifs, on compare les
transitions sortantes des états d’une paire d’états courante (s, s’) et on vérifie les
incompatibilités.
Parmi les incompatibilités structurelles des interfaces on trouve :
• Ajout d’opérations dans une séquence :
.
Une opération est dans les transitions sortantes de s’ (i.e appartient à s’ ) qui n’est
.
pas dans les transitions entrante de s (i.e. n’appartient pas à s)
Interface P
Interface P’
Ajout
S1
!a
S2
?b
S3
S’1
!c
S’2
?a
S’3
55
Figure4.3 : Ajout d’une opération dans une séquence.
•
Suppression d’une opération dans une séquence :
.
Une opération est dans s qui n’est pas dans s’
Interface P
Suppression
.
Interface P’
S1
?c ?b
S2
S3
!a
!a
S1’
!c
?d
!b
S2’
S5
S3’
?a
!a
S4
?a
S4’
Figure4.4 : Suppression d’une opération dans une séquence
•
•
•
P: {?c, ?b, ?d, !a}
P’: {!c, !b, ?a}
| {?c, ?b, ?d, !a} |-| S{!c, !b, ?a} | ≥1
S1 correspond à S1’
S2 correspond à S2’
S3 correspond à S3’
Redéfinition d’une séquence :
Le service requis sollicite une opération avant ou après une autre.
Ajout ou suppression d’une alternative
Modification d’une opération :
.
Une opération qui apparait dans s qui est modifiée par une autre opération dans s’
.
5.1.5. Algorithme de vérification
Début
Entrée : P=(S, s0, A, T, F, M) et P’= (S’, s0’, A’, T’, F’, M’); //Les LTSs modélisant les
//interfaces des deux services
Sortie : Décision sur la compatibilité structurelle des deux interfaces P et P’
56
1. Compatible := Vrai // Booléen Vrai si la compatibilité structurelle est vérifiée
2. Correspond :=∅
// ensemble de couples de chemins (c,c’) en correspondance
3. Pour tout état final sf∈F déterminer l’ensemble Cheminssf des chemins de s0 à sf
en faisant abstraction des transitions internes (τ)
4. Chemins-P= ∪ sf∈F Cheminssf
// Chemins-P est l’ensemble de tous les chemins
dans P allant de l’état initial vers un état final
5. Pour tout état final sf’∈F’ déterminer l’ensemble Cheminssf’ des chemins de s0 à sf’
en faisant abstraction des transitions internes (τ)
6. Chemins-P’= ∪ sf’∈F’ Cheminssf
// Chemins-P’est l’ensemble de tous les chemins
dans P allant de l’état initial vers un état final
7. Chemins := Chemins-P
8. Tant que (Compatible = Vrai) ∧ (Chemins ≠∅) Faire
9.
Prendre un chemin c∈ Chemins (c=(s0,a0,s1)….(si,ai,si+1)…(sn,an,sf))
10.
Si (∃c’∈ Chemins-P’) ∧ (c’=(s0’,a0’,s1’)….(si’,ai’,si+1’)…(sn’,an’,sf’))
∧∀i=1..n ( (ai= !m∧ ai’= ?m) ∨ (ai= ?m)∧( ai’=!m) )
11.
Alors Chemins :=Chemins –{c} ;
12.
Correspond := Correspond ∪ {(c,c’)}
13.
Sinon Compatible := Faux
14.
Finsi
15. Fin tant que
16. Chemins := Chemins-P’
17. Tant que (Compatible = Vrai) ∧ (Chemins ≠∅) Faire
18.
Prendre un chemin c’∈ Chemins (c’=(s0’,a0’,s1’)….(si’,ai’,si+1’)…(sn’,an’,sf’))
19.
Si (∃c∈ Chemins-P) ∧ (c=(s0,a0,s1)….(si,ai,si+1)…(sn,an,sf))
∧∀i=1..n ( (ai= !m∧ ai’= ?m) ∨ (ai= ?m)∧( ai’=!m) )
20.
Alors Chemins :=Chemins –{c} ;
21.
Correspond := Correspond ∪ {(c,c’)}
22.
Sinon Compatible := Faux
23.
Finsi
24. Fin tant que
25. Imprimer (« Compatibilité structurelle : », Compatible)
Fin
57
5.2. Vérification de la compatibilité des types des données
Pour prendre en compte l’aspect compatibilité des types de données échangées dans la
compatibilité syntaxique, nous proposons la définition suivante.
5.2.1. Définition formelle : (Compatibilité des types de données)
Soient :
− Deux services S1 et S2 (structurellement compatibles) ayant respectivement les
ensembles de ports d’entrée In1={in11,in12,…..in1k1} et In2={in21,in22,..in2k2} ; et les
ensembles ports de sortie Out1={out11,out12,…..in1k3}et Out2= ={out21,out22,..in2k4}
− Une relation de correspondance (liaison) L⊆ Out1xIn2∪ Out2xIn1 entre les ports de
S1 et S2.
S2 et S2 sont compatibles au niveau types de données selon la correspondance L si et
seulement si :
∀(m1,m2)∈L (tm1= tm2) ∨ (tm1 < tm2)
Où
tm est le type du message m
t1 < t2 dénote la relation de sous-type (t1 est sous-type de t2)
On notera (S1 ≈ S2) le fait que deux services S1 et S2 sont syntaxiquement compatibles.
syn
5.2.2. Exemple :
Soit la composition de quatre services (S1, S2 , S3 et S4), les paramètres d’entrée et de sortie
sont indiqués à coté de chaque service. (Figure 4.5)
S1 et S2 sont syntaxiquement compatibles parce que le format des données de S1 (A : entier)
est un sous-type de celui du service S2 (A : réel).
S3 et S4 ne sont pas syntaxiquement compatibles car le type Réel n’est pas sous-type des
entiers.
S1
S3
A (entier)
A (réel)
B (entier)
B (entier)
C (Réel)
C (entier)
S2
S4
58
Figure4.5 : Exemples de (in)compatibilité des types de données
5.2.3. Principe de vérification
Le principe de la vérification de la compatibilité des types de données est simple. Il consiste à
comparer les types des ports de service S1 avec les types des de ports ceux de S2. Dans la
section précédente nous avons supposé que les ports en relation portent le même nom dans les
deux services, ce qui n’est pas le cas dans la réalité (vu que les services sont développés
indépendamment les uns des autres). Cette relation est définie par celui qui procède à la
composition des services. La vérification se résume à vérifier que chaque type d’un port de
sortie de l’un des deux services est égal ou est sous-type, du type du port d’entrée
correspondant dans l’autre service.
5.2.4. Algorithme de vérification
Début
Entrées :
t1: In1∪Out1→TYPE // Fonction typage des ports de S1
t2: In2∪Out2→TYPE // Fonction typage des ports de S2
L1⊆ Out1xIn2
// Correspondance entre ports de sortie de S1 et entrée de S2
L2⊆Out2xIn1S2
// Correspondance entre ports de sortie de S2 et entrée de S1
Sortie : Décision sur la compatibilité des types de données de S1 et S2
1. Compatible := Vrai
2. L :=L1
3. Tant que (Compatible=Vrai) ∧ (L ≠∅ ) faire
4.
Prendre (m1,m2)∈L
5.
Si t1m1 =t2m2 ∨ t1m1<t2m2
6.
Alors L := L-{(m1,m2)}
7.
Sinon Compatible :=Faux
8.
Finsi
9. Fin tanque
10. L :=L2
11. Tant que (Compatible=Vrai) ∧ (L ≠∅ ) faire
59
12.
Prendre (m2,m1)∈L
13.
Si t1m1 =t2m2 ∨ t2m2<t1m1
14.
Alors L := L-{(m2,m1)}
15.
Sinon Compatible :=Faux
16.
Finsi
17. Fin tant que
18. Imprimer (« Compatibilité structurelle : », Compatible)
Fin
Remarque :
La vérification des structures de données dans les compositions de services Web se ramène à
un problème de vérification du typage. Les informations de typage des ports des services sont
disponibles dans la description WSDL du service.
6. Génération d’adaptateur
Les incompatibilités syntaxiques sont assez fréquentes car les services sont développés par
différents fournisseurs. Certaines de ces incompatibilités peuvent être résolues grâce à
l’utilisation de médiateurs ou adaptateurs.
En effet, sur la base de types d’incompatibilité qui peuvent être détectés entre les LTSs, un
adaptateur pourra être généré automatiquement pour résoudre ces incompatibilités lors de
l’exécution.
En d’autres termes, si un client envoie un message vers un fournisseur, le message est dans un
premier temps reçu par le médiateur avant que ce dernier ne décide de le transmettre à son
destinataire après traitement si nécessaire. Le rôle de ce médiateur est de garantir la cohérence
des interactions entre deux services web c.à.d. de réconcilier la conversation initiée par un
service client selon l’interface qu’il requiert avec celle que le service fournisseur fournit.
Envoi et
réception de msg
SOAP
Service
fournisseur
msg
SOAP
Service
client1
⁞
Médiateur
⁞
Service
client2
Figure4.6: Principe d’un médiateur
60
Par exemple le médiateur peut résoudre certaines incompatibilités structurelles comme par
exemple celle représentée dans la Figure suivante :
+m1&m2
S1
Adaptateur
(split)
-m1
-m2
S2
Figure 4.7: Adaptation structurelle
Le médiateur peut également résoudre certaines incompatibilités de types de données. Par
exemple si le type de données envoyées par S1 est un couple (a,b) et S2 requiert le couple
(b,a), un médiateur peut également être conçu pour procéder à une telle transformation de
types de données.
+(a,b)
S1
Adaptateur
(de type)
-(b,a)
S2
Figure 4.8 : Adaptation de type de données
Cependant un médiateur ne peut pas résoudre toutes les incompatibilités syntaxiques
possibles.
7. Conclusion
Dans cette partie, nous avons abordé la définition de la compatibilité syntaxique entre les
services web dans une composition en l’illustrant par des exemples. Ensuite nous avons
évoqué les différentes approches de vérifications existantes.
Pour aboutir à une composition syntaxiquement correcte, nous avons divisé la vérification en
deux parties : une vérification de la structure de données et une vérification des types de
données.
Pour assurer une approche rigoureuse de vérification de la compatibilité syntaxique
(structurelle) nous avons utilisé les systèmes de transitions étiquetées comme formalisme. Sur
la base de ce modèle, nous analysons la compatibilité structurelle dans une composition et
nous avons élaboré un algorithme de détection de ces incompatibilités.
61
Pour la deuxième partie de la vérification concernant la compatibilité des types de données
échangées entre les services d’une composition nous avons proposé une méthode d’analyse et
de vérification.
Enfin nous avons montré que la génération de médiateur peut résoudre certaines
incompatibilités qui sont détectées entre les différents services lors d’une composition.
Le chapitre suivant est dédié à la vérification de l’incompatibilité sémantique entre les
services web d’une composition.
[1] [1] [2] [3] [4] [5] [6] [7] [8] (Fensel, Bussler, & Maedche, Semantic Web Enabled Web
Services, 2002) (Casati & Shan, Models and languages for describing and discovering eservices, 2001) [11] (Kellert & Toumani, 2003) [13] (Bray T. , Paoli, Sperberg-McQueen, &
Maler., 6 Octobre 2000) [15] [16] [17] [18] [19] [20] [21] [22] [23] [24] [25] [26] [27] [28]
[29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40] [41] [42] [43] [44] [45] [46][47]
[48]
62
Chapitre 5
Vérification de la compatibilité
Sémantique
1. Introduction....................................................................................................................................... 64
2. Définition informelle ......................................................................................................................... 64
3. Approches de vérification existantes ................................................................................................ 64
4. Approche proposée ........................................................................................................................... 65
4.1. Cadre formel ............................................................................................................................... 65
4.2. Définition formelle ..................................................................................................................... 66
4.3. Principe de vérification............................................................................................................... 67
4.4. Algorithme de vérification.......................................................................................................... 68
4. 5. Exemple ..................................................................................................................................... 70
5. Conclusion ......................................................................................................................................... 70
[1] [1] [2] [3] [4] [5] [6] [7] [8] (Fensel, Bussler, & Maedche, Semantic Web Enabled
Web Services, 2002) (Casati & Shan, Models and languages for describing and
discovering e-services, 2001) [11] (Kellert & Toumani, 2003) [13] (Bray T. , Paoli,
Sperberg-McQueen, & Maler., 6 Octobre 2000) [15] [16] [17] [18] [19] [20] [21] [22]
[23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40]
[41] [42] [43] [44] [45] [46][47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57]
63
1. Introduction
Comme mentionné dans le chapitre 3, les services web présentent des hétérogénéités au
niveau des données qu’ils échangent. La vérification de la compatibilité syntaxique
(structurelle et types de données) entre les services web composés n’est pas suffisante pour
assurer un échange cohérent des données. En effet la signification véhiculée par ces données
doit être la même dans ces services composés. La sémantique des paramètres est nécessaire à
reconnaitre si l’on considère que la sortie d’un service peut être associée à l’une des entrées
d’un autre service Web.
Dans ce contexte, l’utilisation des ontologies permet de fixer la signification des vocabulaires
utilisés.
Dans ce chapitre, nous nous concentrons sur les flux de données et la vérification de la
compatibilité sémantique entre eux dans une composition de services web.
2. Définition informelle (compatibilité sémantique)
La composition des services web nécessite de définir non seulement l’ordre dans lequel les
services doivent être appelés, mais aussi l’ensemble des paramètres en correspondance.
Chaque paire de paramètres est l’association d’une sortie de service web avec l’une des
entrées de service web suivant. Un tel couplage ne peut exister qu’entre les paramètres
sémantiquement compatibles.
Informellement, deux services web sont sémantiquement compatibles si et seulement si il
existe une correspondance sémantique entre les données émises par un service et celles reçues
par le service suivant.
La sémantique d’une composition de services web est le fait de prendre plusieurs services
web sémantiquement décrits et de les lier ensemble pour répondre aux besoins de l’utilisateur.
3. Approches de vérification existantes
Le problème de l'intégration des données n'est pas un nouveau problème. En particulier, on le
retrouve aussi dans les bases de données hétérogènes distribuées.
Quelques architectures efficaces avec une sémantique ont été développées [58]. Un grand
nombre de ces solutions sont basées sur le modèle relationnel. Ensuite, des méthodes basées
64
sur XML ont été développés [59] . Méthodes de correspondance (matching) de schéma ont été
explorées dans de nombreux ouvrages et en particulier dans [60] [61],
Cependant, dans de nombreux cas, l'approche de correspondance de schéma ne fournit pas
une solution facile pour générer des transformations correspondantes. Le système Clio [62]
fournit l'intégration de XML et des schémas relationnels dans des cadres communs et permet
la génération de transformations après une opération de correspondance (matching) de
schémas. Cependant Clio exige des interactions avec l'utilisateur. Ces interactions sont en
général nombreuses et donc pas toujours souhaitables.
L'intégration des données dans les services Web n’est pas encore bien maitrisée. Des travaux
tels que [63] [64] [65] explorent ce domaine pour trouver des solutions en présentant une
architecture d'intégration pour la composition de services.
Parmi les leaders du matching sémantique entre les services web d’une composition on trouve :
OWLSUDDI [66], RACER [67], le SDS [68], MAMA [69], HotBlu [70] et [71], OWLS-MX [72].
La majorité d'entre eux comparent le profil des services sur la base (entrée/sortie) à la demande
en utilisant le test de subsomption des logiques de description. D'autres approches proposent un
modèle de processus de matching (d’appariement) de service [73]. Dans [74] les auteurs
développent un point à point à la découverte de services Web. Bansal et Vidal [75] utilisent
l'appariement des arbres récursifs pour atteindre le problème de la récupération.
Dans [76] on propose un ensemble de médiateurs pour faire une découverte sémantique de
services web basés WSMO. L'approche METEOR-S [77] améliore la norme WSDL, avec des
descripteurs sémantiques afin de faire une recherche efficace. LARKS [78] et OWLS-MX [85]
proposent une recherche hybride, dans le sens où ils exploitent les deux sémantiques explicites et
implicites par des moyens complémentaires de logique à base et correspondance approximative.
OWLS-MX [79][85] propose quatre variantes de l'algorithme de matching. Le premier est
purement logique et les autres sont des hybrides (c'est à dire qu'ils combinent les contenus en
fonction des paramètres utilisés dans la recherche d'information ainsi que la subsomption
logique). Nous notons que chaque variante utilise un ensemble de filtres et produit sept partitions
de matching.
Dans ce qui suit nous allons proposer une approche de vérification de matching sémantique
entre les services d’une composition basée sur OWLS.
4. Approche proposée
4.1. Cadre formel
Nous nous concentrons sur l’utilisation des annotations sémantiques pour vérifier la
compatibilité des paramètres de services web dans un workflow où l’ordre d’exécution du
service web est déjà connu.
65
L’interprétation consistante des données échangées entre les services web composés est
gênée par les différences dans les représentations et dans les interprétations sémantiques.
Pour surmonter ce problème, le concept d’ontologie est introduit. OWLS (Ontology Web
Language Services) [80] fournit un cadre ontologique, ce qui permet une description abstraite
d'un service. OWL-S respecte une syntaxe XML et une sémantique de OWL qui est lui-même
inspiré de la logique de description. Il s'agit d'une ontologie de haut niveau dont la classe
racine est la classe de service qui correspond directement au service réel qui est décrit
sémantiquement à travers trois classes d’informations :
o ServiceProfile qui spécifie la fonctionnalité d'un service, et un ensemble d'attributs non
fonctionnels, il donne également une description informelle.
o ServiceModel spécifie comment invoquer le service et ce qui arrive quand le service est
exécuté.
o ServiceGrounding spécifie la façon selon laquelle le service doit être invoqué.
Service
profile
Ressources
Fournit
Présente
Service
Supports
Décrit par
Service
grounding
Service
model
Figure5.1 : Les classes supérieures d’une ontologie OWL-S
4.2. Définition formelle (compatibilité sémantique )
Deux services Si et Sj sont sémantiquement compatibles (pour une composition) noté par :
Si ≈ Sj si et seulement si les sorties (pas nécessairement tous) d’un service s’apparient
sémantiquement avec les entrées de l’autre.
Une composition Si ⊕ Sj est définie entre Si et Sj si et seulement si il y a une similarité
sémantique entre Osi et Isj, où :
o Osi (Output of Si) est l’ensemble des sorties du service Si
o Isj (Inputs of Sj) est l’ensemble des entrées du service Sj.
Les paramètres (par exemple : entrée et sortie) de service web font référence à des concepts
dans une ontologie δ où le profile OWL-S [81] peut être utilisé pour les décrire.
66
Lors de chaque passage d’un service web à l’autre, nous examinons toutes les combinaisons
possibles d’une sortie du premier service web avec une entrée du suivant.
4.3. Principe de vérification
Supposons une interaction de deux services Web. Tous d’abord, nous effectuons un matching
sémantique entre les paramètres de ces services au moyen d’une ontologie de domaine et son
raisonneur. Cela donne un jumelage entre les paramètres.
Nous vérifions que la correspondance entre l’entrée (sortie, respectivement) de l'interface du
premier service à la sortie (l’entrée, respectivement) dans l'interface du deuxième service.
La mise en correspondance sémantique est un mécanisme qui vise à trouver les similarités
sémantiques entre deux information. Quatre situations peuvent se présenter :
1) Correspondance identique (exacte) : l’entrée et la sortie ont exactement le même
genre ; formellement, δ→ OSi ≡ ISj
2) Correspondance de généralisation : l’entrée est plus générale que la sortie du service
antérieur ; formellement, δ→ OSi ⊆ ISj
3) Correspondance de spécialisation : l'entrée est plus spécifique que la sortie du service
précédent. Il appartient à l'utilisateur de s'assurer que les conditions d'utilisation du
premier service seront toujours des résultats qui sont sémantiquement compatibles
avec l'entrée du service suivant; formellement, δ→ ISj ⊆ OSi
4) Incompatibilité: l'entrée ne peut pas être conciliée avec la sortie du service précédent.
C'est soit parce que le couplage doit être exclu, ou parce que l'ontologie est
incomplète.
O0Si I0Sj
I0Si
ISi
InSi
Service
Si
OSi
OnSi
ISj
O0Sj
Service
Sj
OSj
InSj
OnSj
La correspondance
entre (OSi et ISj)
Figure5.2 : Correspondance sémantique entre deux services web
67
Nous notons qu’un service web sémantique possède un document OWLS avec un «profil:
hasinput» et un «profil: hasoutput» éléments.
4.4. Algorithme de vérification
Etant donnés deux services Si et Sj, la vérification de la compatibilité sémantique entre des
deux interfaces de Si et Sj revient à vérifier la correspondance entre Out_si et In_sj où Out_si
est un paramètre de sortie du service si , et In_sj est un paramètre d’entrée du service sj
Début
Entrée : C
// ensemble des correspondances entre paramètre de Si et Sj
Sortie : Compatibilité
// booléen Vrai si compatibilité sémantique vérifiée
Compatibilité :=Vrai
Pour chaque correspondance (Out_si, In_sj) ∈ C faire
// Out_si est un paramètre de sortie du service si
// In_sj est un paramètre d’entrée du service sj
Si Out_si ≡ In_sj
alors (Out_si, In_sj) est une correspondance identique ;
Sinon Si Out_si ⊆ In_sj
alors (Out_si, In_sj) est une correspondance de généralisation ;
Sinon Si In_sj ⊆ Out_si
alors (Out_si, In_sj) est une correspondance de spécialisation ;
Sinon si disjoint (Out_si, In_sj)
alors (Out_si, In_sj) est une correspondance incompatible ;
Compatible :=Faux
Finsi
Finsi
Finsi
Finsi
Si ((Out_si, In_sj) est une correspondance identique ou de
généralisation) ∧
(Out_si sémantiquement compatible avec In_sj ) ∧
(aucune correspondance de spécialisation n’a été détectée)
alors Le bon couplage peut être généré automatiquement ;
Sinon
Si ((Out_si, In_sj) est une correspondance identique ou de
généralisation) ∧
(Out_si sémantiquement compatible avec In_sj) ∧
( au moins une correspondance de spécialisation a également été détectée)
68
alors L'appariement sémantiquement compatible est probablement le bon mais d'autre(s)
alternative (s) peut être présentées à l'utilisateur;
Sinon
Si ( (Out_si, In_sj) n’est pas une correspondance identique ou de
généralisation) ∧
(Out_si n’est pas sémantiquement compatible avec In_sj ) ∧
( au moins une correspondance de spécialisation a été détecté)
Alors L'utilisateur doit vérifier laquelle (le cas échéant) de ces alternatives est correcte;
Sinon
Si ((Out_si, In_sj) n’est pas une correspondance identique ou de généralisation) ∧
( Out_si n’est pas sémantiquement compatible avec In_sj ) ∧
( aucune correspondance de spécialisation n’a été détectée)
alors La situation ne peut pas être résolue automatiquement et l'utilisateur doit décider
si le problème réside dans le workflow lui-même ou dans l'ontologie utilisée pour
décrire les paramètres ;
Finsi
Finsi
Finsi
Finsi
Fin Pour
Fin
Remarque :
De la correspondance de données générées, l’utilisateur final peut alors valider, modifier ou
rejeter la correspondance de données suggérées.
69
4. 5. Exemple
Dans notre exemple nous avons trois services Web, le premier service prend un auteur comme
entrée et donne un livre scientifique comme résultat (Figure 5.3). Le deuxième service Web
renvoie l’éditeur d’un certain livre scientifique. Le troisième service Web renvoie l’éditeur
d’un livre donné.
Livre
scientifique
Editeur
S2
Correspondance
identique
Auteur
S1
Livre
scientifique
Correspondance
de généralisation
Livre
Editeur
S3
Figure5.3 : Correspondances identique et de généralisation entre les paramètres des services Web
Notre algorithme cherche s’il ya une correspondance entre ces service Web. Dans ce cas, le
premier service et le deuxième service peuvent être combinés parce qu’il ya une
correspondance exacte (livre scientifique en commun).
De plus, lors de l’application de l’algorithme de vérification entre le premier et le troisième
service on trouve que la sortie du premier service correspond a l’entrée du troisième service
de sorte que la connexion est possible par une correspondance de généralisation (un livre est
la classe supérieure du livre scientifique).
Enfin, grâce à notre approche, nous obtenons des workflow avec une compatibilité
sémantique définie entre les entrées et les sorties des services.
5. Conclusion
Cette partie confirme que la vérification de la compatibilité sémantique est possible en
utilisant les technologies existantes. D’abord, nous avons défini la compatibilité sémantique,
Ensuite, nous avons cité quelques approches existantes. Enfin, nous avons proposé une
approche de vérification de la compatibilité sémantique dans une composition de services web
basé sur les ontologies pour améliorer les descriptions sémantique.
Le prochain chapitre est consacré pour la vérification et la détection du blocage dû à
l’incompatibilité comportementale dans une composition.
70
1. Introduction
Etant donné que différents services Web écrits dans différents langages, par différents
fournisseurs et sur différentes plateformes, peuvent être utilisés dans la même application, des
outils d'analyse sont devenus cruciaux. Le but de ces outils est de vérifier que les interactions
des différents services sont correctes, i.e., les services Web peuvent mener leurs conversations
sans blocage. Ces vérifications sont très importantes, du fait qu'une mauvaise interaction (une
interaction qui n'est pas correcte) peut avoir des conséquences néfastes. En effet, les services
Web sont de nos jours utilisés dans plusieurs domaines, notamment dans des domaines
critiques, tels que le domaine médical et le domaine économique. Par conséquent, assurer que
les interactions sont correctes est primordial.
Du point de vue syntaxique, on doit pouvoir vérifier la compatibilité au niveau structurel ainsi
qu’au niveau des types de données échangées entre les services.
Au niveau structurel, l’ensemble des interactions n’est possible que s’il y a au moins des
échanges (envoi/réception de messages) possibles. Ceci suppose l’existence d’une
correspondance entre les ports d’entrée d’un service, et les ports de sortie du service
partenaire.
Au niveau types de données échangées, la vérification concerne chaque couple de ports (port
de sortie d’un service et le port d’entrées correspondant dans le service partenaire). Les
données envoyées via un port de sorties d’un service doivent avoir des types compatibles avec
ceux des données reçues par le port correspondant du service partenaire.
La compatibilité syntaxique est souvent dite compatibilité d’interface car elle consiste à
comparer les interfaces des deux services à composer. L’ensemble des interactions réalisées
entre un client et un service est appelé conversation. Selon que l’on se réfère à l’interface
qu’un service existant est capable de fournir, ou à l’interface qu’un service est censé fournir,
et donc attendue par les clients, on parle d’interface fournie ou d’interface requise.
L’interface fournie comprend donc les opérations par lesquelles un service Web fournit ses
fonctionnalités à d’autres services. L’interface requise inclut les opérations qu’un service web
a besoin pour mettre en œuvre sa fonctionnalité.
Lorsqu’il s’avère que suite à des modifications l’interface fournie d’un service ne correspond
plus à l’interface que ses partenaires requièrent, que ce soit par une comparaison, ou par un
test de conformité parce qu’une conversation a échoué, il y a deux solutions :
(3) Adapter l’interface requise comme interface fournie et modifier le service en
conséquence ;
71
(4) Introduire un adaptateur qui réconcilie l’interface fournie avec celle requise par les
partenaires.
La première solution est en général non utilisée car le même service peut interagir avec
plusieurs autres services partenaires qui considèrent son interface d’origine. Ce qui conduit à
la situation où le même service peut participer à diverses collaborations qui nécessitent
différentes interfaces fournies. La seconde solution remédie à ce défaut par la fourniture d’un
adaptateur ou d’un médiateur.
Dans ce chapitre nous examinons la compatibilité syntaxique entre deux services web et
nous proposons une approche de vérification de détection des incompatibilités syntaxiques qui
peuvent exister dans une composition de services web.
2. Définition Informelle (compatibilité syntaxique)
Deux services sont déclarés syntaxiquement compatibles si les deux processus sont disjoints
et pour chaque point d’entrée/sortie en commun, l’entrée de l’un correspond à une sortie de
l’autre et vise versa.
La compatibilité syntaxique exige donc que pour chaque opération de l’interface requise
d’une composition de service web, il ya au moins une opération portant le même nom dans
l’interface fournie d’un des services web élémentaires qui correspond en nombre de
séquence et types de paramètres.
3. Exemples
Afin d’illustrer ce type d’incompatibilité lors d'une collaboration, nous présentons des
exemples dans la Figure 4.1. Dans ces exemples, nous considérons deux services S1 et S2. Les
messages sortants sont notés par +m et les messages entrants par –m, un message contenant
des données est noté par m (d1, d2,.., dn). La notation m1&m2 dénote une agrégation (un
message composé) des messages m1 et m2.
S1
+m1 (d1)
-m1 (d1)
-m2 (d2)
+m2 (d2)
S2
(c) : Une composition de services web compatibles
+m1&m2
S1
-m1
-m2
S2
(d) : Incompatibilité syntaxique due à un incompatibilité structurelle
72
S1
+m1 (d0)
-m1 (d1)
-m2 (d2)
+m2 (d2)
S2
(c) : Incompatibilité syntaxique due à l’hétérogénéité des types de données
+m1 (d1)
S1
-m2 (d2)
-m0 (d1)
+m2 (d2)
S2
(d) : Incompatibilité syntaxique due à l’hétérogénéité des types des messages
Figure4.1 : Exemples de compatibilité/incompatibilité syntaxique
4. Approches de vérification existantes
Dans les approches à base de réseaux de Petri [49] [50] [51], les algorithmes de bissimilarité
sont utilisés pour détecter les incompatibilités structurelles entre l’interface fournie par le
service et celle attendue par le client. En cas d’incompatibilité, une trace des erreurs est
retournée au concepteur afin qu’il réajuste la définition de la structure du service. Ces
approches ne traitent pas la situation où, suite à une modification de l’interface fournie par le
service, celle-ci n’est plus compatible avec celle requise par ses clients. De ce fait, le service
fournisseur aussi bien que ses partenaires doivent adapter leurs interfaces structurelles à
chaque nouvelle modification.
Dans d’autres approches ont étudié les incompatibilités syntaxiques qui peuvent se produire
où les messages reçus ou envoyés n’ont pas la structure (type) attendue. La plupart de ces
travaux proposent des adaptateurs qui s’appuient sur des outils de transformation de données
tels que Xpath, XQuery, XSLT. Les approches étudient les incompatibilités structurelles
induites par les différents modes d’envois et de réceptions des messages (voir par exemple
[52] [53] [54]). Les adaptateurs sont construits de manière semi-automatique en se basant sur
des patrons d’incompatibilité identifiés ou en utilisant des opérateurs d’adaptation. Parmi ces
patrons d’incompatibilités structurelles, certains ont une influence sur le comportement,
comme par exemple l’envoi ou la réception de messages superflus, des envois multiples
versus une réception unique, un envoi unique versus des réceptions multiples. Les approches à
base de médiateurs (on parle de patrons de médiation dans [55]), suggèrent la définition de
fournisseurs virtuels qui transforment la structure des messages envoyés et reçus. Cependant,
ces propositions se limitent aux cas d’opérations optionnelles qui n’influent pas sur la logique
73
métier du service. Ici aussi, l’adaptation des interfaces est faite à la conception. Par suite, les
incompatibilités peuvent se produire à la suite des évolutions des interfaces. Ce qui oblige le
concepteur du service à redéfinir l’adaptateur à chaque évolution et pour chaque client.
Des approches sont proposées dans [56] [57] pour l'adaptation d'une interface WSDL de
service aux clients syntaxiquement incompatibles. Dans [57] les auteurs supposent que les
interfaces de tous les services qui fournissent des fonctionnalités similaires soient tirées d'une
interface de base commune à l'aide d'un certain nombre d'opérateurs de dérivation qui
permettent d'ajouter ou de retirer des paramètres de fonctionnement. Cependant, les noms
d'opérations et d'autres aspects de l'interface de service sont les mêmes.
Dans [56] , les auteurs proposent de définir des vues de service au dessus des interfaces
WSDL en modifiant les interfaces WSDL pour permettre les interactions avec les services
incompatibles. Toutefois, aucun soutien automatique à la production de vues n’est proposé.
5. Approche proposée
Dans le but le procéder à la vérification de la compatibilité syntaxique entre deux services
dans une composition, nous distinguons entre deux niveaux : le niveau structurel et le niveau
type de données.
5.1. Vérification de la compatibilité structurelle
Avant de procéder à la vérification il faut représenter les services web dans un contexte
formel commun. Puisqu’il existe différents types de compatibilité à vérifier, certain types de
compatibilité sont plus simples à vérifier dans un formalisme que dans un autre.
Il existe plusieurs formalismes pour la modélisation de la composition des services comme les
réseaux de Petri, la logique temporelle, l’algèbre de processus,...etc. Dans le contexte de notre
travail, nous allons utiliser la modélisation avec les systèmes de transitions étiquetées LTS
(Labled Transition Systems) pour vérifier la compatibilité syntaxique, puisqu’ils permettent
de décrire la structure du service et le contrôle de son exécution (envoi/réception de
messages).
5.1.1 Cadre formel
Nous allons modéliser l’interface d’un service web par un système de transition étiquetées
(Labelled Transition Systems, LTS) qui fournit une représentation formelle des interfaces de
74
service permettant de comparer plus facilement les interfaces et de détecter leurs
incompatibilités structurelles.
Un système de transitions étiquetées (LTS) est un automate, représenté par un graphe orienté
où :
•
Les nœuds désignent les états possibles d’un système. On a trois types d’états : un état
initial, des états finaux (échec ou succès), et les états intermédiaires (traitement
interne).
• Les arcs désignent les transitions entre les états. Ces transitions sont déclenchées par
des événements. Chaque arc est étiqueté par l’évènement dont l’occurrence déclenche
le passage de l’état origine de la transition vers l’état destination. Autrement dit
l’étiquette est soit envoi de messages, réception de messages ou appels d’opération
interne.
Une condition (ou garde) sous forme d’expression booléenne peut être associée à une
transition et le système peut passer d'un état vers un autre en déclenchant la transition
seulement si la contrainte associée est satisfaite.
Definition (LTS)
Un LTS est décrit un 6-uplet P=(S, s0, A, T, F, M) où :
− S : est un ensemble fini d’états ;
− s0 : est l’état initial avec s0 ∈ S ;
− A : est un ensemble fini des évènements (actions) ;
− T : SxA →S est la fonction de transition qui associe à un état source si ∈ S et à un
évènement ak ∈ A , un état destination sj ∈ S noté par ( si, ak, sj) ou « si ak sj » ;
− F : est un ensemble non vide des états finaux avec F⊆ S ;
− M : est un ensemble des messages ;
Un message m peut être envoyé noté !m ou reçu ?m. Il contient une liste de paramètres
m(d1,d2,.., dn) noté m(d)
On a trois types de transitions :
a= !m, a= ?m, ou a= (d1, d2,.., dm ; d1’, d2’,.., dm’).
Une trace est une séquence de plusieurs transitions (un chemin) notée comme suit :
s0
α
α
α
→
s →
s ...→
sn
0
1
1
n−1
2
ou bien (s0,α0,s1) (s1,α1,s2) …..(sn-1,αn-1,sn)
On note :
− s• l’ensemble des transitions sortantes de l’état s
75
− •s l’ensemble des transitions entrantes dans l’état s
− t• l’état cible de la transition t
− •t l’état source de la transition t
Pour pouvoir vérifier la compatibilité syntaxique de deux services web, nous supposons
disposer de la modélisation de leurs interfaces par des LTS. Les deux interfaces à étudier sont
définies donc par deux LTSs P et P’ qui sont respectivement décrit par P=(S, s0, A, T, F, M)
et P’= (S’, s0’, A’, T’, F’, M’).
5.1.2. Exemple
La Figure 4.2 donne un exemple de modélisation par des LTS de deux services Web : le
service de réservation de billets et le service de paiement par carte de crédit (PCC).
Le demandeur spécifie la destination (ville) ainsi que la date du Voyage. Ensuite, le service de
réservation de billets propose une liste de description des billets. Le demandeur fait un choix,
et il fournit un numéro de carte de crédit (ncc) pour compléter la réservation. Ensuite, le
service de réservation de billets appelle le service (PCC) pour vérifier la validité du numéro
de la carte de crédit (ncc) afin de garantir le paiement.
Vu l’intérêt de l’analyse de compatibilité structurelle des services web dans une composition,
nous essayons dans cette partie, de détecter les différentes incompatibilités structurelles entre
deux interfaces de services.
76
? Description
de la demande
(ville, date)
Recherche de
billets (ville, date,
N°, prix, horaires)
S1
S0
! Liste de billets
(N°, prix, horaires)
? Billet choisi
S3
S2
S4
! Prix à
payer (prix)
? Billet payé
(prix, ncc)
! Réservation
confirmée (billet)
S9
S8
! Billet à payer
(prix, ncc)
S7
? Numéro de carte
de crédit (ncc)
S6
? Échec
(ncc erroné)
S5
? Réservation
abandonnée ()
S10
Service de réservation de billets
? Billet à payer
(prix, ncc)
t0
Vérifier ncc
(ncc, approuvé)
t1
Si approuvé=’ok’)
débiter (prix, ncc)
! Billet payé
(prix, ncc)
t3
t2
t5
Si approuvé≠’ok’)
? Échec (ncc erroné)
t4
Service de paiement par carte de crédit (PCC)
Figure 4.2 : Modélisation d’un service de réservation des
billets de vol en ligne à l’aide des LTS
77
5.1.3. Définition formelle : (Compatibilité structurelle)
Soient P= (S, s0, A, T, F, M) et P’= (S’, s0’, A’, T’, F’, M’), deux LTS modélisant les interfaces
de deux services Web. P et P’ sont compatibles pour une composition s’il existe une
conversation entre P et P’ (au moins un chemin d’exécution complet de P et supporté par P’).
Soit mi
le message à invoquer pour la transition courante mi(s1, a, s2) ∈ P
et mj (s1’, a’, s2’) ∈P’ , la compatibilité des messages mi et mj est vérifiée si :
•
•
•
Les noms des messages sont identiques ;
L’état cibles s2 correspond à l’état cible s2’
Les polarités (a, a’) se compensent ( !, ?).
Donc pour détecter les incompatibilités entre P et P’, il suffit d’identifier toutes les différences
qui font que P et P’ ne vérifient pas la définition ci-dessus.
5.1.4 Principe de vérification
Une conversation est incohérente entre deux services si l’interface fournie est différente de
l’interface requise. La détection de l’incompatibilité entre deux services Web repose sur
l’application de l’algorithme de détection des incompatibilités qui examine les LTSs P et P’
correspondant à leurs interfaces. A partir de leurs états initiaux respectifs, on compare les
transitions sortantes des états d’une paire d’états courante (s, s’) et on vérifie les
incompatibilités.
Parmi les incompatibilités structurelles des interfaces on trouve :
• Ajout d’opérations dans une séquence :
.
Une opération est dans les transitions sortantes de s’ (i.e appartient à s’ ) qui n’est
.
pas dans les transitions entrante de s (i.e. n’appartient pas à s)
Interface P
Interface P’
Ajout
S1
!a
S2
?b
S3
S’1
!c
S’2
?a
S’3
78
Figure4.3 : Ajout d’une opération dans une séquence.
•
Suppression d’une opération dans une séquence :
.
Une opération est dans s qui n’est pas dans s’
Interface P
Suppression
.
Interface P’
S1
?c ?b
S2
S3
!a
!a
S1’
!c
?d
!b
S2’
S5
S3’
?a
!a
S4
?a
S4’
Figure4.4 : Suppression d’une opération dans une séquence
•
•
•
P: {?c, ?b, ?d, !a}
P’: {!c, !b, ?a}
| {?c, ?b, ?d, !a} |-| S{!c, !b, ?a} | ≥1
S1 correspond à S1’
S2 correspond à S2’
S3 correspond à S3’
Redéfinition d’une séquence :
Le service requis sollicite une opération avant ou après une autre.
Ajout ou suppression d’une alternative
Modification d’une opération :
.
Une opération qui apparait dans s qui est modifiée par une autre opération dans s’
.
5.1.5. Algorithme de vérification
Début
Entrée : P=(S, s0, A, T, F, M) et P’= (S’, s0’, A’, T’, F’, M’); //Les LTSs modélisant les
//interfaces des deux services
Sortie : Décision sur la compatibilité structurelle des deux interfaces P et P’
26. Compatible := Vrai // Booléen Vrai si la compatibilité structurelle est vérifiée
79
27.
Correspond :=∅
// ensemble de couples de chemins (c,c’) en
correspondance
28. Pour tout état final sf∈F déterminer l’ensemble Cheminssf des chemins de s0 à sf
en faisant abstraction des transitions internes (τ)
29. Chemins-P= ∪ sf∈F Cheminssf
// Chemins-P est l’ensemble de tous les chemins
dans P allant de l’état initial vers un état final
30. Pour tout état final sf’∈F’ déterminer l’ensemble Cheminssf’ des chemins de s0 à sf’
en faisant abstraction des transitions internes (τ)
31. Chemins-P’= ∪ sf’∈F’ Cheminssf
// Chemins-P’est l’ensemble de tous les chemins
dans P allant de l’état initial vers un état final
32. Chemins := Chemins-P
33. Tant que (Compatible = Vrai) ∧ (Chemins ≠∅) Faire
34.
Prendre un chemin c∈ Chemins (c=(s0,a0,s1)….(si,ai,si+1)…(sn,an,sf))
35.
Si (∃c’∈ Chemins-P’) ∧ (c’=(s0’,a0’,s1’)….(si’,ai’,si+1’)…(sn’,an’,sf’))
∧∀i=1..n ( (ai= !m∧ ai’= ?m) ∨ (ai= ?m)∧( ai’=!m) )
36.
Alors Chemins :=Chemins –{c} ;
37.
Correspond := Correspond ∪ {(c,c’)}
38.
Sinon Compatible := Faux
39.
Finsi
40. Fin tant que
41. Chemins := Chemins-P’
42. Tant que (Compatible = Vrai) ∧ (Chemins ≠∅) Faire
43.
Prendre un chemin c’∈ Chemins (c’=(s0’,a0’,s1’)….(si’,ai’,si+1’)…(sn’,an’,sf’))
44.
Si (∃c∈ Chemins-P) ∧ (c=(s0,a0,s1)….(si,ai,si+1)…(sn,an,sf))
∧∀i=1..n ( (ai= !m∧ ai’= ?m) ∨ (ai= ?m)∧( ai’=!m) )
45.
Alors Chemins :=Chemins –{c} ;
46.
Correspond := Correspond ∪ {(c,c’)}
47.
Sinon Compatible := Faux
48.
Finsi
49. Fin tant que
50. Imprimer (« Compatibilité structurelle : », Compatible)
Fin
80
5.2. Vérification de la compatibilité des types des données
Pour prendre en compte l’aspect compatibilité des types de données échangées dans la
compatibilité syntaxique, nous proposons la définition suivante.
5.2.1. Définition formelle : (Compatibilité des types de données)
Soient :
− Deux services S1 et S2 (structurellement compatibles) ayant respectivement les
ensembles de ports d’entrée In1={in11,in12,…..in1k1} et In2={in21,in22,..in2k2} ; et les
ensembles ports de sortie Out1={out11,out12,…..in1k3}et Out2= ={out21,out22,..in2k4}
− Une relation de correspondance (liaison) L⊆ Out1xIn2∪ Out2xIn1 entre les ports de
S1 et S2.
S2 et S2 sont compatibles au niveau types de données selon la correspondance L si et
seulement si :
∀(m1,m2)∈L (tm1= tm2) ∨ (tm1 < tm2)
Où
tm est le type du message m
t1 < t2 dénote la relation de sous-type (t1 est sous-type de t2)
On notera (S1 ≈ S2) le fait que deux services S1 et S2 sont syntaxiquement compatibles.
syn
5.2.2. Exemple :
Soit la composition de quatre services (S1, S2 , S3 et S4), les paramètres d’entrée et de sortie
sont indiqués à coté de chaque service. (Figure 4.5)
S1 et S2 sont syntaxiquement compatibles parce que le format des données de S1 (A : entier)
est un sous-type de celui du service S2 (A : réel).
S3 et S4 ne sont pas syntaxiquement compatibles car le type Réel n’est pas sous-type des
entiers.
S1
S3
A (entier)
A (réel)
B (entier)
B (entier)
C (Réel)
C (entier)
S2
S4
81
Figure4.5 : Exemples de (in)compatibilité des types de données
5.2.3. Principe de vérification
Le principe de la vérification de la compatibilité des types de données est simple. Il consiste à
comparer les types des ports de service S1 avec les types des de ports ceux de S2. Dans la
section précédente nous avons supposé que les ports en relation portent le même nom dans les
deux services, ce qui n’est pas le cas dans la réalité (vu que les services sont développés
indépendamment les uns des autres). Cette relation est définie par celui qui procède à la
composition des services. La vérification se résume à vérifier que chaque type d’un port de
sortie de l’un des deux services est égal ou est sous-type, du type du port d’entrée
correspondant dans l’autre service.
5.2.4. Algorithme de vérification
Début
Entrées :
t1: In1∪Out1→TYPE // Fonction typage des ports de S1
t2: In2∪Out2→TYPE // Fonction typage des ports de S2
L1⊆ Out1xIn2
// Correspondance entre ports de sortie de S1 et entrée de S2
L2⊆Out2xIn1S2
// Correspondance entre ports de sortie de S2 et entrée de S1
Sortie : Décision sur la compatibilité des types de données de S1 et S2
19. Compatible := Vrai
20. L :=L1
21. Tant que (Compatible=Vrai) ∧ (L ≠∅ ) faire
22.
Prendre (m1,m2)∈L
23.
Si t1m1 =t2m2 ∨ t1m1<t2m2
24.
Alors L := L-{(m1,m2)}
25.
Sinon Compatible :=Faux
26.
Finsi
27. Fin tanque
28. L :=L2
29. Tant que (Compatible=Vrai) ∧ (L ≠∅ ) faire
82
30.
Prendre (m2,m1)∈L
31.
Si t1m1 =t2m2 ∨ t2m2<t1m1
32.
Alors L := L-{(m2,m1)}
33.
Sinon Compatible :=Faux
34.
Finsi
35. Fin tant que
36. Imprimer (« Compatibilité structurelle : », Compatible)
Fin
Remarque :
La vérification des structures de données dans les compositions de services Web se ramène à
un problème de vérification du typage. Les informations de typage des ports des services sont
disponibles dans la description WSDL du service.
8. Génération d’adaptateur
Les incompatibilités syntaxiques sont assez fréquentes car les services sont développés par
différents fournisseurs. Certaines de ces incompatibilités peuvent être résolues grâce à
l’utilisation de médiateurs ou adaptateurs.
En effet, sur la base de types d’incompatibilité qui peuvent être détectés entre les LTSs, un
adaptateur pourra être généré automatiquement pour résoudre ces incompatibilités lors de
l’exécution.
En d’autres termes, si un client envoie un message vers un fournisseur, le message est dans un
premier temps reçu par le médiateur avant que ce dernier ne décide de le transmettre à son
destinataire après traitement si nécessaire. Le rôle de ce médiateur est de garantir la cohérence
des interactions entre deux services web c.à.d. de réconcilier la conversation initiée par un
service client selon l’interface qu’il requiert avec celle que le service fournisseur fournit.
Envoi et
réception de msg
SOAP
Service
fournisseur
msg
SOAP
Service
client1
⁞
Médiateur
⁞
Service
client2
Figure4.6: Principe d’un médiateur
83
Par exemple le médiateur peut résoudre certaines incompatibilités structurelles comme par
exemple celle représentée dans la Figure suivante :
+m1&m2
S1
Adaptateur
(split)
-m1
-m2
S2
Figure 4.7: Adaptation structurelle
Le médiateur peut également résoudre certaines incompatibilités de types de données. Par
exemple si le type de données envoyées par S1 est un couple (a,b) et S2 requiert le couple
(b,a), un médiateur peut également être conçu pour procéder à une telle transformation de
types de données.
+(a,b)
S1
Adaptateur
(de type)
-(b,a)
S2
Figure 4.8 : Adaptation de type de données
Cependant un médiateur ne peut pas résoudre toutes les incompatibilités syntaxiques
possibles.
9. Conclusion
Dans cette partie, nous avons abordé la définition de la compatibilité syntaxique entre les
services web dans une composition en l’illustrant par des exemples. Ensuite nous avons
évoqué les différentes approches de vérifications existantes.
Pour aboutir à une composition syntaxiquement correcte, nous avons divisé la vérification en
deux parties : une vérification de la structure de données et une vérification des types de
données.
Pour assurer une approche rigoureuse de vérification de la compatibilité syntaxique
(structurelle) nous avons utilisé les systèmes de transitions étiquetées comme formalisme. Sur
la base de ce modèle, nous analysons la compatibilité structurelle dans une composition et
nous avons élaboré un algorithme de détection de ces incompatibilités.
84
Pour la deuxième partie de la vérification concernant la compatibilité des types de données
échangées entre les services d’une composition nous avons proposé une méthode d’analyse et
de vérification.
Enfin nous avons montré que la génération de médiateur peut résoudre certaines
incompatibilités qui sont détectées entre les différents services lors d’une composition.
Le chapitre suivant est dédié à la vérification de l’incompatibilité sémantique entre les
services web d’une composition.
85
Chapitre 6
Vérification de la compatibilité
Comportementale
1. Introduction....................................................................................................................................... 87
2. Définition informelle (compatibilité comportementale) .................................................................. 87
3. Exemple ............................................................................................................................................. 88
4. Approches de vérification existantes ................................................................................................ 88
5. Approche proposée ........................................................................................................................... 89
5.1. Cadre formel ............................................................................................................................... 89
5.2 Exemple ....................................................................................................................................... 92
5.3. Définition formelle (compatibilité comportementale) .............................................................. 92
5.4. Algorithme de vérification.......................................................................................................... 97
6. Conclusion ......................................................................................................................................... 98
[1] [1] [2] [3] [4] [5] [6] [7] [8] (Fensel, Bussler, & Maedche, Semantic Web Enabled
Web Services, 2002) (Casati & Shan, Models and languages for describing and
discovering e-services, 2001) [11] (Kellert & Toumani, 2003) [13] (Bray T. , Paoli,
Sperberg-McQueen, & Maler., 6 Octobre 2000) [15] [16] [17] [18] [19] [20] [21] [22]
[23] [24] [25] [26] [27] [28] [29] [30] [31] [32] [33] [34] [35] [36] [37] [38] [39] [40]
[41] [42] [43] [44] [45] [46][47] [48] [49] [50] [51] [52] [53] [54] [55] [56] [57] [58]
[59] [60] [61] (Miller, et al., 2001) [63] [64] [65] [66] [67] [68] [69] [70] [71] [72]
[73] [74] [75] [76] [77] [78] [79] [80] [81]
86
1. Introduction
A ce stade, nous supposons que la compatibilité au niveau syntaxique et sémantique sont
satisfaites, c'est à dire, les interfaces d'entrée et de sortie ont les mêmes types de ports,
opérations, types de messages et mêmes significations. Ce chapitre se concentre sur la
détection du blocage dû à l’incompatibilité comportementale dans une composition.
Une façon de traiter les problèmes de blocage est de modéliser une composition avec les
réseaux de Petri. Les réseaux de Petri ont été reconnus comme l'un des outils les plus
puissants pour décrire et analyser facilement le comportement d’une composition de services
Web. En raison des avantages tels que la nature graphique et la disponibilité des techniques
d’analyses mathématiques, de nombreux chercheurs adoptent des modèles de réseaux de Petri
comme formalisme pour le contrôle d’exécution de services et la détection rapide des interblocages et des cycles [82] [83] [84] [85] [86] [87].
Pour faire face à des blocages basés sur un formalisme des réseaux de Petri, quatre approches
différentes sont développées. La première est appelée évitement d'inter-blocage [88] [89] [90]
[91]. Une fois cette approche adoptée, certaines contraintes sont imposées sur les évolutions
du système de telle sorte qu'il soit toujours possible que le traitement de chaque tâche se
termine. La seconde est la détection de blocage et récupération. Elle permet de détecter le
blocage. Une fois le blocage détecté, certaines actions de récupération peuvent être
manuellement ou automatiquement prises [92] [93]. Cette approche est appropriée quand les
blocages sont rares dans un système et une procédure de détection et de récupération est mise
en place. Les deux dernières approches appartiennent à une approche de prévention de
blocage. La première consiste à utiliser une approche de synthèse de réseaux de Petri pour
construire des modèles avec des propriétés souhaitées telles que la vivacité.
Dans ce chapitre nous allons proposer une approche de vérification des incompatibilités
comportementales dans une composition basée sur les Réseaux de Petri.
2. Définition informelle (compatibilité comportementale)
La compatibilité du comportement signifie que les services Web en interaction sont d'accord
sur ce à quoi s'attendre de l'autre en termes d'opérations à exécuter, de résultats à fournir, et
les messages à envoyer et/ou recevoir.
87
Deux conditions doivent être vérifiées afin d’assurer la compatibilité du comportement dans
une composition des services Web: fin accessible et bonne terminaison [94]. Ceci signifie que
chaque service Web dans une composition peut atteindre un état terminal pour annoncer son
accomplissement.
Bonne terminaison signifie que tous les flux de contrôle du service Web doivent se terminer
lorsque la composition atteint un état terminal. Les deux conditions peuvent être utilisées pour
traiter l'adaptation comportementale des services Web.
Malheureusement, pour la vérification de terminaison correcte, il faut examiner tous les états
terminaux accessibles de la composition. Dans le cas d'un grand nombre d'états, l'examen
énumératif de ces états est très coûteux et fastidieux. Il est donc jugé opportun d'assouplir la
condition de terminaison appropriée de sorte que la complexité de la vérification de la
compatibilité peut être réduite. À cette fin, nous montrons que seule l'exigence de résiliation
accessible doit être satisfaite lors de la vérification de compatibilité comportementale des
services bien structurés
3. Exemple
Comme le montre la Figure 6.1, le service S1 doit recevoir le message m0 (d0) pour envoyer
le message m1 (d1) et en même temps, le service S2 doit recevoir le message m1 (d1) pour
envoyer le message m0 (d0). Ce cas de figure présente un interblocage.
-m0
(d0)
-m1 (d1)
S1
S2
+m1 (d1)
+m0 (d0)
Figure 6.1 : Incompatibilité due à l’hétérogénéité des comportements
Un certain nombre d'approches ont été proposées pour résoudre ces problèmes.
4. Approches de vérification existantes
Les méthodes actuelles suivent essentiellement deux étapes, à savoir, la modélisation et
l'analyse. Il existe une grande variété de méthodes de modélisation pour la vérification de
l'incompatibilité d'un comportement, par exemple, des machines à états abstraits [95],
machines à états finis [96] [97], le processus formel et approches fondées sur π-calcul [98].
Bordeaux et al. [99] utilisent les systèmes de transitions étiquetés pour formaliser le
comportement des services Web. Wohed et al. [100] proposent une analyse de BPEL en
termes d'un ensemble de modèles de workflow. Par extraction du message d'interaction,
Foster et al. [101] proposent une approche basée sur un modèle pour vérifier la composition
88
de services Web à l'aide de diagrammes de séquence de messages. Heckel et Mariani [102]
proposent une méthode basée sur les tests pour vérifier si un service Web par rapport à un
ensemble de règles de transformation de graphes peut satisfaire les opérations d'interaction.
Les réseaux de Petri sont également un outil de modélisation adéquat pour le comportement
de service Web comme il a été montré dans [103], où il est possible de définir et de vérifier
facilement la compatibilité et l'équivalence des services web. Les méthodes basées sur les
réseaux de Petri sont directement applicables à des exemples du monde réel. Presque tous les
formalismes ci-dessus couvrent les activités de base de BPEL.
Chu et Xie [104] ont proposé une méthode basée sur MIP pour détecter les blocages. Par leur
méthode, un siphon banalisé maximale peut être trouvé à un marquage donné. Sur la base des
résultats de Chu, Huang et al. [105] [106] ont proposé un algorithme d'extraction de siphon
minimal de telle sorte que l'énumération complète des siphons a été évitée avec succès.
Plus tard, Huang et al. [107] ont proposé des politiques de prévention de blocage itératifs
basés sur MIP. Dans leurs méthodes, deux types de lieux de contrôle appelés lieux de contrôle
ordinaires et lieux de contrôle pondérés ont été ajoutées au modèle d'origine pour éviter de
banaliser les siphons. Moody et al. [108] ont présenté une méthode basée sur les P-invariants.
Cette méthode a été utilisée par de nombreux chercheurs (Li et Zhou, [109]; Uzam et Zhou
[110]).
5. Approche proposée
5.1. Cadre formel
Les réseaux de Petri est un cadre théorique adéquat pour la vérification et l’analyse de la
composition des services Web. Ils constituent une approche bien fondée ayant une
sémantique formelle pour la modélisation des processus de composition. L’approche basée
sur les réseaux de Petri propose d’utiliser plusieurs opérateurs algébriques tels que: séquence,
choix alternatif, arbitraire.
Un réseau de Petri (RdP) est un graphe orienté, connexe et biparti dans lequel chaque nœud
est une place ou une transition. Les places représentent l’état du système (service) et les
transitions représentent les actions ou évènements dont l’occurrence change l’état du système.
Les réseaux de Petri possèdent une représentation graphique intuitive et très visuelle ainsi que
de nombreux outils de vérification. Des similitudes existent entre les concepts de services web
et celui des réseaux de Petri : les services web sont considérés ici comme un ensemble
d’opérations ordonnées et un ensemble d’états ; les opérations correspondent aux transitions
et les états sont décrits par les places.
À un moment donné, un service Web peut être dans l'un des états suivants : pas instancié,
prêt, en marche, suspendu ou terminé.
Définition 1 : un réseau de Petri (Petri Net) est défini par le tuple N= (P, T, W) où :
P est un ensemble fini de places
89
T est un ensemble fini de transitions (activités de service)
W ⊆ (PXT) U (TXP) est un ensemble d’arcs orientés (relation flux)
Un marquage est une fonction M :P → N + qui associe à chaque place un nombre de jetons
* Un réseau marqué est notée par (N, M).
* p est marquée par M ssi M(p)>0
.
* Une transition t est tirable (franchissable)ssi : ∀ p ∈ t : M(P)>0
noté M[t>
* Le tir d’une transition t dans un marquage M donne un nouveau marquage M’ tel que :
∀p∈P M’( p) = M(p)-1 si p∈ .t -t.
M’( p) = M(p)+1 si p∈ t.-.t
M’( p) = M(p) sinon
On note M[t>M’ le fait que le tir de la transition t dans le marquage M donne M’
* une séquence σ =(t1,t2,..tn) de transitions est tirable dans M0 ssi
M0 [t1>M1 [t2>…Mn-1[tn> M’
* Un marquage M’ est accessible à partir de M0 ssi il existe séquence σ =(t1,t2,..tn)
tirable à partir de M0.
*L’ensemble des marquages accessibles à partir de M0 est noté R(M0)
* Un réseau N est mort sous M0 ssi ∀ t ∈ T, (M0 [t>) i.e aucune transition n’est tirable à
l’état initial.
* Une transition t ∈ T est morte sous M0 si ∄M ∈ R ( M0) où t est franchissable.
L’intérêt de la vérification de la composition est d’offrir des services Web composites
corrects. Ceci est vital pour les entreprises. Un service Web qui contient des erreurs par
exemple des blocages («deadlock») peut causer une perte des clients. Un des avantages des
réseaux de Petri c’est qu’ils sont dotés d’un formalisme très rigoureux avec une disponibilité
d’outils de vérification (détection d’interblocage, et des situations d’erreur).
Un réseau de Petri qui modélise un service web présente quelques caractéristiques qu’il faut
mettre en évidence dans la modélisation. En effet, un service web a état initial d’exécution et
un (ou plusieurs) état(s) finaux. Il a également un état interne et un état interface (ports
d’entrée/sorties des messages). Par conséquent, des classes de réseaux de Petri ont été
définies pour capturer ces caractéristiques des services Web.
Définition 2 : un réseau workflow séquentiel simple (SSN : Simple Sequential workflow Net)
est un réseau N= (P U {i, o}, T, W, A, L) tel que :
• (P U {i, o}, T, W ) est un réseau de Petri
.
i est une place source i.e i= {t ∈T/ (t,i) ∈ W}=Ø
.
o est une place puit i.e o = {t ∈T/ (o,t) ∈ W}=Ø
.
.
• L’ajout d’une transition t qui connecte la place o avec i c.à.d. t = o et t = i, donne un
graphe fortement connexe.
90
•
•
•
•
A est un ensemble d’étiquettes tel que τ ∈ A
L est une fonction d’étiquetage L : T→A telle que τ est l’étiquette des transitions
internes (silencieuses)
A l’état initial, seule la place initial i est marquée : (M0 (i) =1) et ∀ p ≠ i M0 (p) =0
Dans un marquage final Mf ∈ R(M0) Mf (o) ≠ 0
Le comportement d’un SSN est correcte ssi pour tout marquage M accessible à partir de M0
il existe une séquence de transitions σ ∈ T*, qui mène de l’état M vers un marquage final Mf
i.e ∀M∈R(M0), ∃ σ ∈ T*, M[σ> Mf ∧ Mf ∈ F
On note F est l’ensemble de tous les marquages finaux.
Définition 3 : un réseau workflow de service (SWN : Service Workflow Net) est un réseau
de Petri étendu N= (P U PI U PO, T, W) où :
• Le sous réseau généré par P est un SSN correcte.
• PI est l’ensemble des places interface d’entrée
• PO est l’ensemble des places interface de sortie tel que :
(PI ∩PO)= Ø, (PI U PO) ∩ P= Ø
• M0(i)=1 et M0(p) =0 ; ∀ p ≠ i (le marquage initial d’un SWN suit celui de son SSN)
Les places interfaces PI U PO sont représentées par des cercles en pointillés.
91
5.2 Exemple
S1
P0
S2
.
M
q0
t0
.
t’0
P1
M
Y
q1
t1
t’1
P2
Y
q2
t2
t’2
D
P3
P4
X
q3
X
A
D
t3
t4
t’3
K
P5
P6
q4
t5
P7
t’4
t’5
A
B
q5
Figure 6.2 : Modélisation de services Web à l’aide des SWN.
5.3. Définition formelle (compatibilité comportementale)
Définition 4 :
Soient deux services SWN Nj= (Pj U PIj U POj, Tj, Wj ), j ∈ {1, 2}
N1 et N2 sont composables noté N1 ≈ N2 ssi :
• P1∩ P2= Ø ∧ T1 ∩T2= Ø
92
Téléchargement