Une approche formelle pour la composition des services web

Transcription

Une approche formelle pour la composition des services web
N° d’ordre :
N° de série :
République Algérienne Démocratique et Populaire
Ministère de l’Enseignement Supérieur et de
la Recherche Scientifique
UNIVERSITÉ ECHAHID HAMMA LAKHDAR - EL-OUED
FACULTÉ DES SCIENCES ET TECHNOLOGIE
Mémoire de fin d’étude
Présenté pour d’obtention du diplôme de
MASTER ACADEMIQUE
Domaine : Mathématique et Informatique
Filière : Informatique
Spécialité : Système Distribué et Intelligence
Artificielle
Présenté par


Melle DAHA Hanane
Melle LIFA Siham
Thème
Une approche formelle pour la composition
des services web
Soutenue en juin 2015 devant le jury :
Mr
Kerthiou Ismail
Président
Mr
Meklid AbdEssalam
Examinateur
Mr
Meftah Mohammed Charaf Eddine
Encadreur
Année universitaire : 2014-2015
Remerciements
Nous remercions Allah le tout puissant, qui nous a donné la force et la
patience pour l’accomplissement de ce travail.
Nous adressons nos vifs remerciements à notre encadreur Mr Meftah.
qui nous a aidé tout la durée de notre travail et par patience et les
précieux conseils dont Il nous a entouré.
Nous adressons également nos remerciements, à tous nos enseignants
D’universitaire Echahide Hamma Lakhdhar d'El-Oued,
Surtout Mr.Messoud Abbas pour leurs aides inestimables.
Nous adressons également nos remerciements,
à l'enseignants Amrane Leila et Zaiz Toufik.
On remercie également tous les étudiants de Master 2 (SD &IA) de la
promotion 2014-2015pour leur soutien et leurs précieux encouragements,
Enfin, pour finir et pour être sûre de n’oublier personne,
Nous remercions tout le monde.
i
Dédicaces
Je dédie ce mémoire :
Tout d’abord à mes parents qui m’ont apportés tout le confort
et les moyens pour avoir le meilleur parcours possible tout en
me soutenant tout au long de mon cursus universitaire en me
poussant à donner le maximum de moi-même
A tous mes frères, mes sœurs et toute ma famille
A tous mes amies sans exception
A tous mes collègues de travail dans
CFPA KOUININE
A tous mes stagiaires
A tous ceux qui me sont chers…..
Je dédie ce modeste travail
Avec tout mon amour et tendresse.
Siham
ii
Dédicaces
Louange à Dieu, le seul et unique.
A mes très chers parents
Témoignage d’affection et de grande reconnaissance,
Que Dieu les garde pour moi.
A mes chers frères Ahmed Choukri et sa marie Radja et sa fille
Bouchra, Ben Salem, Nour Eddine
A ma sœur Amel et Son mari Abdellatif et ses filles Rania et
Salsabile.
A mon fiancé Belgacem.
A tous mes proches grands et petits.
À mon binôme Siham que j'estime beaucoup.
A tous mes amies surtout Afaf,
Yousra,Salima,Sara,Besma,Ahlem,Rowa,Intissar et Hadia.
A tous ceux que j’aime.
Je dédie ce modeste travail.
Hanane
iii
Résumé
De nos jours, les services web sont devenus très utilisés notamment par
les entreprises pour rendre accessible leurs métiers et leurs données via le Web.
La composition des services web est un sujet qui suscite l’intérêt des chercheurs,
elle offre la possibilité de traitement de problèmes complexes même avec des
services simples existants tout en coopérant entre eux. Toutefois, cette tâche reste
très complexe et nécessite pour son accomplissement des techniques formelles
[SOF ,14] .
L’objectif principal de notre travail est présente une approche formelle
pour la modélisation de langages de compositions de Services Web et du langage
BPEL4SW en particulier. Ce langage est l’un des standards les plus populaires
pour les orchestrations de Services Web. Nous utilisons ainsi un formalisme que
nous appelons la méthode B et qui est conçu autour des caractéristiques les plus
importantes de BPEL4SW.
Mots-clés : service web, composition de services web, BPEL4SW, Méthode B.
iv
Abstract
In our days, web services have become very used mainly by the
companies to make available their business and data via the Web. The web
services composition is a topic that attracts the interest of researchers. It offers
complex problems process ability even with simple existing web services while
cooperating with each other. However, this task remains highly complex and
requires modeling tools and formal techniques for its completion [SOF ,14] .
In this work, we are presented an approach to formal approach to model
languages for Web Services compositions and BPEL4SW in particular that is one
of the most popular standard for Web Services orchestrations. We propose a
language, called the B method, that is designed around most important BPEL4SW
specific features and that aims to be a formal presentation of this standard.
Keywords: web service, web service composition, BPEL4SW, B method.
v
‫ملخص‬
‫في أيامنا هذه أصبحت خدمات الويب كثيرة االستخدام خصوصا من قبل الشركات وذلك من أجل‬
‫عرض أعمالهم وبياناتهم عبر شبكة االنترنت‪ .‬تعتبر عملية تركيب خدمات الويب من أكثر المواضيع التي‬
‫جلبت اهتمام الباحثين ‪،‬حيث أنها تمكن من معالجة المشاكل المعقدة باالعتماد على خدمات ويب بسيطة‬
‫أخرى وذلك من خالل التعاون فيما بينهم‪ ،‬غير أن هذه العملية معقدة جدا وتتطلب استعمال تقنيات منهجية‬
‫من أجل استعماله ]‪. [SOF ,14‬‬
‫في هذه المذكرة ركزنا اهتمامنا على نماذج للغات تركيب خدمات الويب على وجه الخصوص لغة‬
‫‪، BPEL4SW‬هذه األخيرة التي تعتبر من أكثر المعايير شيوعا بالنسبة لخدمات الويب القياسية ومن‬
‫أجل التنفيذ الصحيح لتركيب خدمات الويب نستخدم نموذج يدعى األسلوب ‪ B‬تم تصميمه حول أهم مالمح‬
‫‪.BPEL4SW‬‬
‫الكلمات الرئيسية ‪ :‬خدمة ويب ‪ ،‬تركيب الخدمات ‪ ، BPEL4SW ،‬األسلوب ‪. B‬‬
‫‪vi‬‬
Glossaire
BPEL4WS: Business Process Execution Language for Web Services;
HTTP: Hypertext Transfer Protocol
LOTOS: Language Of Temporal Ordered Systems;
QoS: Quality of Service;
RdP: Réseau de Petri ;
SOA: Service-Oriented Architecture;
SOAP: Simple Object Access Protocol;
UDDI: Universal Description Discovery and Integration;
UML: Unified Modeling Language;
W3C: World Wide Web Consortium;
Ws: Service Web;
WSCI: Web Services Choreography Interface;
WSCL : Web Service Conversation Language ;
WSDL : Web Services Description Language
WSDL: Web Service Description Language;
WSFL: Web Service Flow Language;
XLANG: Web Services for Business Process Design;
XML: eXtensible Markup Language ;
vii
Table Des Matières
Remerciements ..................................................................................................................................... i
Dédicaces................................................................................................................................................ii
Résumé ..................................................................................................................................................iv
Abstract ..................................................................................................................................................v
‫ ملخص‬.......................................................................................................................................................vi
Glossaire .............................................................................................................................................. vii
Table Des Matières ........................................................................................................................... viii
Listes des figures ................................................................................................................................. xi
Listes des tableaux ............................................................................................................................. xii
Introduction générale ........................................................................................................................ 1
Chapitre I : Architecture Orienté Service & Service web & Approches formelles existantes
I.
Introduction : ................................................................................................................................... 4
II.
Architecture Orientée Services (SOA) : .......................................................................................... 4
II.1
Définition : .............................................................................................................................. 4
II.2
Caractéristiques de l’architecture SOA : ................................................................................. 5
II.3
Acteurs de l’architecture SOA : .............................................................................................. 5
Les services web :........................................................................................................................ 6
III.
III.1.
Définition : .............................................................................................................................. 6
III.2.
Caractéristiques des services web : ......................................................................................... 6
III.3.
Fonctionnement des services web: .......................................................................................... 7
III.4.
Standards de services Web : .................................................................................................... 7
Composition de services Web : ................................................................................................. 15
IV.
V.
IV.1
Définition : ............................................................................................................................ 15
IV.2
Les principales approches de composition de services Web : ............................................... 15
IV.3
Langages utilisés pour la composition des services web : ..................................................... 17
Approches de modélisation et de composition des services Web : ............................................... 19
V.1
Les approches Semi-Formelles (Modélisation)::................................................................... 19
1.
UML : .................................................................................................................................... 19
2.
Réseaux de Petri : .................................................................................................................. 20
V.2
Les approches Formelles (Composition): .............................................................................. 22
1.
Algèbre des processus : ......................................................................................................... 22
viii
2.
Automates.............................................................................................................................. 23
3.
Langage Z : ............................................................................................................................ 24
4.
LOTOS : ................................................................................................................................ 26
Conclusion :............................................................................................................................... 27
VI.
Chapitre II : Analyse du langage BPEL
I.
Introduction : ................................................................................................................................. 30
II.
Présentation : ................................................................................................................................. 30
III.
Avantages et fonctionnalités du BPEL : .................................................................................... 33
IV.
Syntaxe du langage BPEL : ....................................................................................................... 33
Les activités de BPEL : ................................................................................................................. 34
V.
V.1
Les activités basiques : .......................................................................................................... 35
V.2
Les activités de communication : .......................................................................................... 36
V.3
Les activités structurées :....................................................................................................... 37
VI.
Gestion des données : ................................................................................................................ 39
VII.
Corrélation des messages : ........................................................................................................ 39
VIII.
Les scopes : ............................................................................................................................... 40
IX.
Compensation et gestion des erreurs : ....................................................................................... 40
Conclusion :................................................................................................................................... 41
X.
Chapitre Ⅲ : L’Approche Proposée
I.
Introduction : ................................................................................................................................. 43
II.
La méthode B : .............................................................................................................................. 43
II.1
Historique : ............................................................................................................................ 43
II.2
Présentation théorique : ......................................................................................................... 43
II.3
Structure d'une machine abstraite : ........................................................................................ 44
II.4
Raffinement : ......................................................................................................................... 46
II.5
Dépendances entre modules : ................................................................................................ 47
L’approche proposée ................................................................................................................. 48
III.
III.1
Tableau de correspondance B-PBEL4SW................................................................................. 50
IV.
V.
Les règles de traductions : ..................................................................................................... 48
Conclusion :................................................................................................................................... 51
Chapitre IV : Étude de cas : Agence de voyage
I.
Introduction : ................................................................................................................................. 53
II.
Outils B : ....................................................................................................................................... 53
II.1
Objets manipulés par l'Atelier B : ......................................................................................... 53
ix
II.2
Modes d'utilisation de l'Atelier B : ........................................................................................ 54
II.3
Présentation générale :........................................................................................................... 54
III.
Présentation de notre exemple : ................................................................................................. 58
IV.
Scénario de composition : ......................................................................................................... 59
V.
Correspondance B /BPEL : ........................................................................................................... 62
VI.
Spécification formelle de notre exemple : ................................................................................. 63
VII.
Présentation de la preuve formelle de notre exemple : .............................................................. 67
VII.
Conclusion :............................................................................................................................... 69
Conclusion générale ......................................................................................................................... 70
Bibliographies .................................................................................................................................... 72
x
Listes des figures
Figure I. 1:Principaux acteurs de SOA. ...................................................................................... 6
Figure I. 2:Structure de message SOAP. .................................................................................... 9
Figure I. 3:les trois facettes de l'annuaire [HUB, 03]. .............................................................. 11
Figure I. 4:Structures de données de l’annuaire UDDI [ARN ,05]. ......................................... 12
Figure I. 5:Structure d’une description WSDL. ....................................................................... 14
Figure I. 6:Vue générale de l’orchestration [LOP, 08]............................................................. 16
Figure I. 7:vue générale de la chorégraphie [LOP,08]. ............................................................ 17
Figure I.8 :Exemple de modélisation UML pour la composition de service ........................... 20
Figure I. 9:Exemple de modélisation par réseau de Pétri d’un service composé. .................... 21
Figure I. 10:Exemple de représentation en π-calculs d’un service composé ........................... 22
Figure I. 11:Exemple de modélisation de service composé avec les automates ...................... 24
Figure II. 1: BPEL dans l’architecture des services Web ........................................................ 31
Figure II. 2: Structure d'un processus WS-BEPEL .................................................................. 32
Figure Ⅲ. 1:Structure d’une machine abstraite B .................................................................... 46
Figure Ⅲ. 2: La traduction ascendante (BPEL4SW-B) ........................................................... 49
Figure Ⅲ. 3: Les règles de codage (B-BPEL4SW): ................................................................ 49
Figure IV. 1: L'interface principale de l'Atelier B .................................................................... 55
Figure IV. 2: Fenêtre d'éditeur intégré ..................................................................................... 56
Figure IV. 3: Les services Web offerts par l’agence de voyage .............................................. 59
Figure IV. 4: le diagramme de séquence de scénario d’agence de voyage .............................. 60
Figure IV. 5: le diagramme d’activité de scénario d’agence de voyage. ................................. 61
Figure IV. 6: Le schéma global de la Machine d'agence de voyage ReserveAV ................... 63
Figure IV. 7: la Machine global d'agence de voyage ReserveAV .......................................... 63
Figure IV. 8: l'implémentation la Machine global d'agence de voyage ReserveAV.............. 64
Figure IV. 9: la Machine ReserveVOL .................................................................................... 64
Figure IV. 10: la Machine ReserveHOTEL ............................................................................. 65
Figure IV. 11: la Machine ReserveLV ..................................................................................... 66
Figure IV. 12: la Machine ReserveBANK ............................................................................... 66
Figure IV. 13: les étapes de preuve .......................................................................................... 68
Figure IV. 14: les étapes de preuve .......................................................................................... 69
xi
Listes des tableaux
Tab I. 1: Couches technologiques des Web Services [VEZ, 05] ............................................... 7
Tab II. 1: Activités basiques du langage BPEL. ...................................................................... 34
Tab II. 2: Activités complexes du langage BPEL. ................................................................... 34
Tab III. 1: Clauses d'architecture d'une machine abstraite B ................................................... 44
Tab III. 2: différentes actions de raffinage ............................................................................... 47
Tab III. 3 : Clauses de visibilité d'un composant B .................................................................. 47
Tab IV. 1:tableau d’entrées/sorties de chaque service ............................................................. 60
xii
Introduction générale
L’architecture orientée service web (SOA) conçoit les logiciels comme des services et
utilise les services comme des plates-formes. L’orchestration des services décrit quant à elle
comment les services Web peuvent interagir entre eux selon une perspective opérationnelle,
avec des structures de contrôle, incluant l’ordre exécution des interactions. Plusieurs langages
permettent d’exprimer des processus exécutables, mettant en œuvre des services Web. Ces
langages permettent de décrire comment les interactions entre les multiples services sont
coordonnées pour atteindre un but. Cependant, la sémantique opérationnelle de chacune des
structures de ces langages n’est pas formellement définie et limite ainsi les raisonnements et la
vérification des architectures orientées service Web.
Notre travail propose une approche formelle pour la composition des services web. Cette
approche consiste en la génération d'une implémentation de l’application à partir de
spécifications formelles. On décrit préalablement l'application à l'aide de notations graphiques
(UML), puis un processus automatique est appliqué afin de les traduire en spécifications
formelles B. En utilisant le processus de raffinement B, un ensemble de règles de raffinement,
opérant sur les opérations, est appliqué sur les spécifications ainsi obtenues. Ces phases de
raffinement ont pour but de rendre les spécifications finales proches du langage
d'implémentation cible choisi BPEL4SW, de telle sorte que la dernière phase de codage
devienne intuitive et naturelle. De manière générale, le processus de raffinement est une tâche
manuelle, relativement coûteuse, en particulier en phase de preuve. Grâce au caractère
générique de ces règles de raffinement, un outil de raffinement assisté peut être réalisé,
permettant ainsi la réduction du coût du processus de raffinement.
1
Organisation du mémoire
Ce mémoire est organisé suivants les chapitre suivantes :
Chapitre I : Dans ce chapitre, nous introduisons des définitions générales du concept «
Service web». Nous y présentons leur origine, une architecture de référence ainsi que les
langages et protocoles utilisés pour leur déploiement. Nous abordons également le sujet de la
composition des services web. Enfin, nous présentons un aperçu sur les différentes approches
de modélisation et de composition des services web proposées dans la littérature.
Chapitre II : ce chapitre présente plus en détails le langage BPEL.
Chapitre III : ce chapitre est le cœur de notre travail. Il se divise aussi en trois parties: la
première partie est consacrée à étudier la méthode B. La deuxième partie présente l’approche
proposé .la troisième partie présente Tableau de correspondance B-BPEL4SW.
Chapitre IV : Dans ce chapitre nous présentons une étude de cas pour valider notre travail.
Et nous terminerons ce mémoire par une conclusion et des perspectives.
2
Chapitre I
Architecture Orienté Service ( SOA) & Service
web (SW) & Approches Formelles Existantes
Chapitre I
I.
Architecture Orienté Service & Service web & Approches formelles existantes
Introduction :
Avec la grande utilisation du web, les chercheurs ont développé des logiciels pour
assurer et simplifier la communication entre les machines et les applications connectées via le
réseau, ces logiciels sont appelés «services web».
Les services web sont devenus une technique incontournable pour construire des
systèmes distribués faiblement couplés. L’architecture Orientée service a été largement
employée dans plusieurs domaines tel que dans les systèmes e-business, e-gouvernement,
systèmes automobiles, services multimédia, finances et dans beaucoup d’autres domaines
Dans ce chapitre nous allons présenter l’architecture orienté service web et les
différentes couches que les lier, ainsi que les compositions de services web et quelques
langages utilisés, et finalement on situé les différent approches formelle et semi-formelles pour
la modélisation de l’orchestration de service web.
II.
II.1
Architecture Orientée Services (SOA) :
Définition :
Il n’y a pas une définition exacte de l’architecture orienté service. En effet plusieurs
définitions ont été proposées, mais toutes les définitions sont d’accord que SOA est un
paradigme destiné à résoudre les problèmes d’hétérogénéité et interopérabilité des logiciels qui
constituent le système d’information.
SOA est un paradigme permettant d’organiser et d’utiliser des savoir-faire distribués
pouvant être de domaines variés. Cela fournit un moyen uniforme d’offrir, de découvrir,
d’interagir et d’utiliser des savoir-faire pour produire le résultat désiré avec des préconditions
et des buts mesurables [POU, 07].
« L’architecture orientée service constitue un style d’architecture basée sur le principe de
séparation de l’activité métier en une série de services. »
« Ces services peuvent être assemblés et liés entre eux selon le principe de couplage lâche pour
exécuter l’application désirée. »
4
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
« Ces services sont définis à un niveau supérieur de la traditionnelle approche composants»
[GAR, 96]
«Architecture orientée service (SOA):est un paradigme d’organisation des ressources
distribuées, potentiellement contrôlées par des domaines différents. »[JEA, 09]
L’architecture SOA peut être utilisée dans un cadre interne à l’entreprise, ainsi les
services peuvent être classés par domaine fonctionnel (achat, finance, marketing, etc.), mais
surtout SOA présente un moyen efficace pour faciliter la communication avec d’autres
entreprises [TOU, 07].
II.2
Caractéristiques de l’architecture SOA :
L’architecture orienté service architecture est caractérisée par :
 Un couplage faible entre les services : implique qu’un service n’appelle pas
directement un autre service.
 La réutilisation de service web.
 L’indépendance par rapport aux aspects technologiques : c-à-d les services avec cette
architecture sont indépendants de ses plates-formes.
 La découverte des services disponibles.
 La mise à l’échelle est rendue possible grâce à la découverte et à l’invocation des
nouveaux services lors de l’exécution.
II.3
Acteurs de l’architecture SOA :
L’architecture orienté service est basée sur trois acteurs principaux (FigureI.1)
définis comme suit :
 Service fournisseur : On peut l’appeler fournisseur il met le service web en
application et il le rend disponible pour tout le monde sur internet.
 Service consommateur : C’est un client demandeur ou un consommateur qui fait la
demande d’un service web bien précis pour répondre à ses besoins.
 Service annuaire : Le registre fournit un endroit où le consommateur peut trouver des
nouveaux services web et le fournisseur dispose une description pour des nouveaux
services web.
5
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Figure I. 1:Principaux acteurs de SOA.
III.
Les services web :
III.1.
Définition :
Un service web est un mécanisme qui tend à donner plus d’interactions pour
permettre à deux entités hétérogènes (entreprises, clients, applications, etc. ...) de
dialoguer à travers un réseau Internet.
Les logiciels écrits dans divers langages de programmation (C#, Visual Basic, Java,
etc....), sur diverses plateformes (Linux, Windows, etc. ...) et avec diverses architectures
peuvent employer des services Web pour échanger des données à travers des réseaux
informatiques. Chaque service web doit pouvoir être découvert et invoqué
dynamiquement par les applications [CYR, 05].
III.2.
Caractéristiques des services web :
Les caractéristiques des services web de type SAOP sont :
 Accessible via le web.
 Décrit à partir de XML.
 Indépendant de plate-forme.
 Conçus pour résoudre des problèmes bien définit et complexe.
6
Chapitre I
III.3.
Architecture Orienté Service & Service web & Approches formelles existantes
Fonctionnement des services web:
Dans sa première génération, le fonctionnement des Services web repose sur trois
couches fondamentales présentées comme suit:

Invocation : visant à établir la communication entre le client et le fournisseur en
décrivant la structure des messages échangés.

Découverte : permettant de localiser un service web particulier dans un annuaire de
services décrivant les fournisseurs ainsi les services fournis.

Description : dont l'objectif est la description des interfaces des services web
(paramètres des fonctions, types de données).
Pour assurer ces fonctionnalités, trois technologies de base ont été proposées et disposées en
couches pour construire l'architecture de base des Services web, comme le montre dans la table
suivante (Table I.1) :
Tab I. 1: Couches technologiques des Web Services [VEZ, 05]
Les couches XML et SOAP sont les couches de plus bas niveau, elles permettent le
transport de l'information alors que WSDL permet de décrire le service aux utilisateurs externes.
Enfin la couche la plus haute UDDI décrit ce que peut produire le service, c'est la couche la
plus sémantique [VEZ, 05].
III.4.
Standards de services Web :
Une caractéristique qui a permis un grand succès de la technologie des services web
est qu'elle est construite sur des technologies standards, nous présentons dans cette
section les trois standards de base, à savoir, SOAP (Simple Object Access Protocol),
WSDL (Service web Description Language) et UDDI (Universal Description,
Discovery and Integration) .Ces trois standards sont basés sur le langage XML
(eXtansible Markup Language).
7
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
4.1 SOAP :
Les communications entre les différentes entités impliquées dans le dialogue avec le
service web se font par l’intermédiaire du protocole SOAP (Simple Object Access
Protocol). Ce protocole est normalisé par le W3C.
Principe
SOAP, est un standard du Consortium W3C définissant un protocole de transmission de
messages permettant la normalisation des échanges de données. Il présente un ensemble de
règles pour structurer des messages, qui peuvent être utilisées dans de simples transmissions
unidirectionnelles, mais il est particulièrement utile pour exécuter des dialogues requêteréponse RPC (Remote Procedure Call) en utilisant http comme protocole de communication,
mais aussi les protocoles SMTP (Simple Mail Transport Protocol) et POP (Post Office
Protocol) [MIT, 03].
SOAP assure l’interopérabilité entre composants tout en restant indépendant des
systèmes d'exploitation et des langages de programmation, donc, théoriquement, les clients et
serveurs de ces dialogues peuvent fonctionner sur n'importe quelle plate-forme et être écrits
dans n'importe quel langage à partir du moment où ils peuvent formuler et comprendre des
messages SOAP. Il représente donc un composant de base pour développer des applications
distribuées, qui exploitent des fonctionnalités publiées comme services par des intranets ou
Internet.
SOAP utilise principalement les deux standards HTTP et XML :
 HTTP comme protocole de transport des messages SOAP. Il constitue un bon moyen de
transport en raison de sa popularité sur le web.
 XML pour structurer les requêtes et les réponses, indiquer les paramètres des méthodes,
les valeurs de retours, et les éventuelles erreurs de traitements.
Structure du message SOAP
Les messages échangés lors de l’utilisation du protocole SOAP sont basés sur le langage XML.
Ils sont composés de deux parties, l'en-tête de protocole de transport et l'enveloppe SOAP
(Figure I. 2).
8
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Figure I. 2:Structure de message SOAP.
1. L’en-tête du protocole de transport: qui dépend de protocole de transport utilisé, par
exemple si le protocole HTTP est utilisé, l'en-tête contient :
 La version de protocole HTTP utilisé.
 La date de génération de message SOAP.
 Le type d’encodage du contenu (généralement de type XML).
2. L’enveloppe SOAP : la partie principale d’un message SOAP est l’enveloppe
(symbolisée par la balise enveloppe), cette dernière est subdivisée en deux sous-parties:
la partie en-tête (Header) et la partie corps du message (Body).
 L’en-tête du message SOAP: est optionnelle et extensible. Les balises XML
qui permettent de symboliser cette partie sont :<env:Header>
et
</env:Header>.
Ces balises peuvent être complétées par des attributs permettant de définir le domaine
de noms du service Web. En effet, l’en-tête permet principalement d’ajouter des informations
sur le comportement des différents nœuds intermédiaires, lors de traitement du message.
Un nœud étant un intermédiaire SOAP, incluant le récepteur et l’émetteur SOAP, désignable
depuis un message SOAP. Son rôle est de traiter l’en-tête, ensuite de transférer le résultat (le
message SOAP modifié) à un autre intermédiaire (qui peut être le récepteur final).
Les principaux attributs des éléments qui forment le bloc d'en-tête sont :
env :role: permet d’indiquer à quel nœud la fonction décrite est destinée.
9
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
env:mustUnderstand: c’est une valeur booléenne, elle permet de préciser que le traitement
devient obligatoire pour un nœud intermédiaire, par exemple, pour un calcul très long, il peut
être utile d’envoyer un e-mail à chaque étape.
env:relay: cet attribut permet de relayer un message à un autre nœud si le premier nœud n’est
pas capable de le traiter.
 Le corps du message SOAP: l'élément corps de message SOAP contient des
données spécifiques à l'application. Les balises symbolisant cette partie sont:
<env:Body>et </env:Body>. Les données doivent donc être sérialisées selon
l’encodage XML. En plus, des données de cette partie peuvent transporter un
type spécial comme: les messages d’erreurs (SOAP Faut).
4.2 UDDI :
UDDI (Universel Description, Discovery and Integration)
est un standard défini par
OASIS. Il définit la structure d’un annuaire de services Web, et
la structure de gestion de
services (publication, localisation, découverte) Sous forme de répertoire, il permet de stocker
les informations nécessaires pour retrouver et accéder à un service, telles que les informations
techniques et l’adresse des services Web, le nom de la personne/société qui gère un service
donné, la description des fonctionnalités [CLE , 03].
Un service d’annuaire UDDI est un service Web qui gère les méta-données des services,
l’information sur les fournisseurs de services et les implémentations des services. Afin de
trouver un service Web, il est possible d’utiliser un annuaire UDDI en précisant des exigences
concernant service requis. On cherche le service par son nom et/ou par des mots clés.
Consultation de l'annuaire :
L'annuaire UDDI se concentre sur le processus de découverte de l'architecture orientée
services (SOA), et utilise des technologies standards telles que XML, SOAP et WSDL qui
permettent de simplifier la collaboration entre partenaires dans le cadre des échanges
commerciaux. L'accès au référentiel s'effectue de différentes manières.
Les informations sur un service publié dans un annuaire UDDI se présentent sous trois facettes
comme illustre dans (la Figure I. 3) [HUB, 03] :

Les pages blanches comprennent la liste des entreprises ainsi que des informations
associées à ces dernières (coordonnées, description de l'entreprise, identifiants...).
10
Chapitre I

Architecture Orienté Service & Service web & Approches formelles existantes
Les pages jaunes recensent les services Web de chacune des entreprises sous le standard
WSDL.

Les pages vertes fournissent des informations techniques précises sur les services
fournis.
Figure I. 3:les trois facettes de l'annuaire [HUB, 03].
Un annuaire UDDI est conçu pour être interrogé par des messages SOAP et afin de
pouvoir stocker et fournir des informations permettant l’accès aux documents WSDL (Web
Services Description Language) décrivant les protocoles et les formats de messages nécessaires
pour interagir avec les services Web répertoriés dans l’annuaire ,Les outils de recherche
disponibles sont basés sur des mots-clés et ne prennent pas en considération les relations entre
les services Web et les caractéristiques sémantiques de chaque service Web, forçant l’utilisateur
à recommencer la recherche depuis le début en utilisant de nouveaux termes clés.
Les spécifications UDDI inclue notamment :
Des API SOAP qui permettent l’interrogation et la publication d’informations.
La représentation XML du modèle de données de l’annuaire et des formats de message
SOAP
Des définitions de l’interface WSDL de SOAP,
Des définitions d’APIs de différents modèles techniques qui facilitent le travail des systèmes
d’identification et de catégorisation des enregistrements UDDI.
Un annuaire UDDI se compose de quatre types de structures de données [ARN ,05] : le
businessEntity, le businessService, le bindingTemplate et la tModel. Cette répartition par
11
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
type fournit des partitions simples pour faciliter la localisation rapide et la compréhension des
différentes informations qui constituent un enregistrement.
Figure I. 4:Structures de données de l’annuaire UDDI [ARN ,05].

BusinessEntity (entité d'affaires)
Les « businessEntities » sont en quelque sorte les pages blanches d'un annuaire UDDI. Elles
décrivent les organisations ayant publié des services dans le répertoire. On y trouve notamment
le nom de l'organisation, ses adresses (physiques et Web), des éléments de classification, une
liste de contacts ainsi que d'autres informations.

BusinessService (service d'affaires)
Les « BusinessServices » sont en quelque sorte les pages jaunes d'un annuaire UDDI. Elles
décrivent de manière non technique les services proposés par les différentes organisations. On
y trouve essentiellement le nom et la description textuelle des services ainsi qu'une référence à
l'organisation proposant le service et un ou plusieurs « BindingTemplate ».

BindingTemplate (modèle de rattachement)
UDDI permet de décrire des services Web utilisant HTTP, mais également des services
invoqués par d'autres moyens (SMTP, FTP...). Les « BindingTemplates » donnent les
coordonnées des services. Ce sont les pages vertes de l'annuaire UDDI. Ils contiennent
notamment une description, la définition du point d'accès (une URL) et les éventuels «tModels
» associés .
12
Chapitre I

Architecture Orienté Service & Service web & Approches formelles existantes
tModel (index)
Les « tModels » sont les descriptions techniques des services. UDDI n'impose aucun format
pour ces descriptions qui peuvent être publiées sous n'importe quelle forme et notamment sous
forme de documents textuels (XHTML, par exemple). C'est à ce niveau que WSDL intervient
comme le vocabulaire de choix pour publier des descriptions techniques de services.
4.3 WSDL :
Le besoin d’une description claire de la communication entre services Web a abouti à des
normalisations aux niveaux des messages échangés et des protocoles. Une grammaire XML
bien structurée était proposée pour décrire les services Web et paramétrer les échanges de
messages. Un langage de description s’est basé sur cette grammaire et est devenu le standard
des services Web, c’est le "Web Service Description Language" (WSDL).
Principes du standard
WSDL [CHR, 01], est un standard du W3C, qui permet de définir une syntaxe XML pour décrire
les méthodes et les paramètres des services Web invocables par le biais de messages au format
SOAP. Il permet de définir qu’est-ce qu’un service Web est capable de faire, son emplacement
et comment l’invoquer.
Eléments de WSDL
Le standard offre une description à deux parties : une première partie de description
abstraite et une deuxième partie Les éléments de description représentent des concepts du
modèle WSDL.
Les éléments de la partie abstraite décrivent principalement le service en termes de
messages (envoyés et reçus). Ils sont indépendamment décrits par un schéma XML de
description concrète.
Au niveau d’une balise XML notée "types", la partie abstraite inclut des éléments notés
"opération" dont chacune associe un ou plusieurs messages à un modèle d’échange de
messages. Le modèle spécifie le nombre et l’ordre ainsi que la cible et la source abstraites des
messages. Les opérations sont groupées dans un élément noté "interface" ou aussi portType"
sans préciser le moyen (le protocole) d’échange de messages.
13
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Techniquement, la structure d’un élément "binding" ressemble à la structure d’un
élément "interface/portType" mais avec des détails en plus. La spécification WSDL offre deux
types de "binding" pour l’envoi de messages entre client et services Web :
 soit intégrés dans des messages du protocole SOAP transmis par exemple en HTTP,
 soit directement par exemple dans des messages du protocole http.
Figure I. 5:Structure d’une description WSDL.
En résume un fichier WSDL contient donc sept éléments :
Types : fournit la définition de types de données utilisés pour décrire les messages échangés.
Messages : représente une définition abstraire (noms et types) des données en cours de
transmission.
PortTypes : décrit un ensemble d'opérations. Chaque opération a zéro ou un message en entrée,
zéro ou plusieurs messages de sortie ou d'erreurs.
Binding : spécifie une liaison entre un <portType> et un protocole concret (SOAP, HTTP...).
Service : indique les adresses de port de chaque liaison.
Port : représente un point d'accès de services défini par une adresse réseau et une liaison.
Opération : c'est la description d'une action exposée dans le port.
14
Chapitre I
IV.
Architecture Orienté Service & Service web & Approches formelles existantes
Composition de services Web :
IV.1
Définition :
Une composition de services Web est constituée de plusieurs services qui interagissent
les uns avec les autres [AIT, 08], afin d'offrir de nouvelles fonctionnalités qu'un seul service
ne pourrait pas les offrir.
La composition permet de combiner des services pour former un nouveau service dit
composé ou composite. L’exécution d’un service composé implique des interactions avec
des services partenaires en faisant appel à leurs fonctionnalités. Le but de la composition est
avant tout la réutilisation de services (simples ou composés) et de préférence sans aucune
modification de ces derniers.
IV.2
Les principales approches de composition de services Web :
2.1 : Orchestration de services Web :
L'orchestration de services Web résulte un nouveau service Web dit service Web
composé, qui peut être défini comme l'agrégation de plusieurs autres services Web atomiques
ou composés. Ce service composé contrôle la collaboration entre les services Web engagés dans
la composition, tel qu'un chef d’orchestre [DUM ,10].
L’orchestration de services Web exige de définir l’enchaînement des services Web selon
un canevas prédéfini, et de les exécuter selon un script d’orchestration. Ces derniers (le canevas
et le script) décrivent les interactions entre services Web en identifiant les messages, et en
spécifiant la logique et les séquences d’invocation. Le module exécutant le script
d’orchestration de services Web est appelé un moteur d’orchestration. Ce dernier est une entité
logicielle qui joue le rôle d’intermédiaire entre les services, en les appelants suivant le script
d’orchestration [LOP, 08].
15
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Figure I. 6:Vue générale de l’orchestration [LOP, 08].
2.2 : Chorégraphie de services Web :
La chorégraphie de services Web est une généralisation de l’orchestration qui consiste à
concevoir une coordination décentralisée des services Web. Dans une chorégraphie, les
interactions de type pair-à-pair (P2P) sont décrites dans un langage de description de
chorégraphie (CDL). Les services suivent alors le scénario global de composition sans point de
contrôle central [DUM ,10].
La chorégraphie est aussi appelée composition dynamique. En effet, l’exécution n’est
pas régie de manière statique comme dans une composition de type orchestration. Dans une
chorégraphie à chaque pas de l’exécution, le service Web choisit le service Web qui lui succède
et implémente ainsi une partie de la chorégraphie. La composition de type chorégraphie n’est
pas connue, ni décrite à l’avance [LOP, 08].
16
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Figure I. 7:vue générale de la chorégraphie [LOP,08].
 L'orchestration et la chorégraphie sont toutes deux des manières de composition de
service web agrégé. La différence principale entre ces deux manières, est que dans la
chorégraphie, chaque service connaît les autres services qui interagissent, alors que dans le
cas de l'orchestration, le service qui joue le rôle de chef d'orchestre est le seul qui connaît les
services en interaction.
IV.3
Langages utilisés pour la composition des services web :
Il y a quelque langage pour la composition des services web :
3.1 : Le langage XLANG :
XLANG: (Web Services for Business Process Design) Créé par Microsoft, le XLANG
est une extension de WSDL. Elle fournit en même temps un modèle pour une
orchestration des services et des contrats de collaboration entre celles-ci. XLANG a été
conçus avec une base explicite de théorie de calcul [RAZ, 07].
3.2 : Le langage WSFL
WSFL: (Web Service Flow Language) est un langage basé sur XML pour la description
des services web composite. WSFL considère deux types de compositions de services
web:
 Le premier type indique le modèle approprié d'utilisation d'une collection de
services web, de telle manière que la composition résultante décrive comment
17
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
réaliser le but particulier d’un business; typiquement, le résultat est une
description d'un processus métier.
 Le deuxième type indique le modèle d'interaction d'une collection de services
web; dans ce cas, le résultat est une description de l’interaction globale associée
[NER, 06].
3.3 : Langage WSCI :
WSCI : (Services Web Chorégraphie Interface) est un langage de description basé sur
XML dont l'objectif est de décrire les messages échangés entre le service web
participant à des interactions de chorégraphie et les autres services de cette
chorégraphie[WAE, 11].
3.4
Langage WSCL :
WSCL : (Web Services Conversation Language) permet de décrire les conversations
du niveau de la logique du métier ou les processus publics basé sur la définition d’un
service web. Les définitions de conversation en WSCL sont elles-mêmes des
documents XML et peuvent donc être interprétées par des infrastructures de services
web et des outils de développement [CHE, 10].
3.5
Langage BPEL :
BPEL : (Business Process Exécution Language) représente un langage de
programmation standard aidant les entreprises à définir la manière de combiner des
services web[NER, 06].
18
Chapitre I
V.
Architecture Orienté Service & Service web & Approches formelles existantes
Approches de modélisation et de composition des services Web :
La composition des services web est un sujet qui a suscité l’attention des chercheurs
qui tentent de fournir des modèles sémantiques rigoureux, des langages et des plateformes pour
la proposition des résultats efficaces pour cette issue.
Comme présenté précédemment, plusieurs langages de composition de services web
ont été proposés au cours de ces dernières années. Il s’agit malheureusement de langages
textuels exécutables conçus pour satisfaire à la phase d’implémentation d’un service web
composé et qui négligent de fait l’étape de spécification qui est importante, car elle facilite la
compréhension globale du système ainsi que la tâche de développement. De plus, l’analyse
formelle des langages proposés n’est pas possible à cause de leur manque de formalisme.
Donc, il est indispensable d’utiliser des techniques et des modèles permettant la
spécification formelle de la composition de services web, dans le but de s’assurer du bon
fonctionnement des services avant de les implémenter.
Différents formalismes, pour la modélisation et la spécification de la composition de
services, ont été proposés. Nous pouvons citer : UML, réseaux de Pétri, les algèbres de
processus et les Automates, langage Z et LOTOS.
V.1
Les approches Semi-Formelles (Modélisation):
1. UML :
UML (Unified Modeling Language ou « langage de modélisation unifié »)
standardisé par l'OMG (Object Management Group) est un langage de modélisation
graphique à base de pictogrammes. Il est apparu dans le monde du génie logiciel, dans
le cadre de la « conception orientée objet ». Couramment utilisé dans les projets
logiciels, il peut être appliqué à toutes sortes de systèmes ne se limitant pas au domaine
informatique [WEB, 03].
UML, en particulier le diagramme d’activités, a été adapté pour la modélisation de la
composition de services. L’exécution d’un service est généralement représentée par une
action, c’est à dire une étape de l’activité. La transition vers cette activité modélise alors
l’appel au service et inversement celle en sortie indique la fin de l’exécution du service.
Ce choix de modélisation a été utilisé pour la représentation de l’exemple de
composition dans la figure.
19
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Plusieurs chercheurs ont proposé d’utiliser UML dans le domaine de services
web. Par exemple, dans [Jim, 04], un profil UML a été introduit pour la modélisation
de processus métier à l’aide des diagrammes d’activités. Un nouveau langage basé sur
le diagramme d’activité UML 2.0 pour la modélisation de la composition de services a
été présenté dans [RED, 05]. En utilisant ce langage, le code BPEL peut être généré à
partir des modèles de la composition. Dans [CHR, 08], UML-S (UML pour les Services)
a été proposé pour modéliser la composition de services. Les auteurs ont également
introduit des règles de transformation des diagrammes UML-S en BPEL [WAF, 12].
Figure I.8 :Exemple de modélisation UML pour la composition de service
2. Réseaux de Petri :
Les réseaux de Petri constituent une approche bien établie pour la modélisation de
processus. Un réseau de Petri est un graphe dirigé, connecté et biparti, c’est à dire composé de
deux types de nœuds. Les nœuds représentent soit des places, soit des transitions. Les places
peuvent éventuellement contenir des jetons, qui correspondent généralement aux ressources
disponibles. Lorsqu’un jeton est présent dans chacune des places en entrée d’une transition, la
transition est dite activée et peut alors s’exécuter. L’exécution d’une transition consomme un
jeton dans chaque place en entrée et place un jeton dans chaque place en sortie [CHR, 10].
Les RdPs constituent un Framework pour la modélisation de la composition de services.
La facilité de la compréhension, l’utilisation de ses notations graphiques, ainsi que sa puissance
de vérification et d’analyse formelles à travers un ensemble de bases et techniques
mathématiques, justifient le choix de l’utilisation de cet outil pour des problématiques de
modélisation et de vérification de la composition de services [WAF, 12].
20
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Un service web est modélisé sous forme de RdP en associant les opérations aux
transitions et les états de service en places. Cette approche a été proposée par Hamadi et al dans
[RAC, 03]. Ensuite, pour composer des services web, il suffit d'appliquer des opérateurs de
composition aux réseaux de Petri représentant les dits services web (chaque service web est
représenté par un réseau de Petri). Un réseau de Petri avec une place d'entrée (input place)
pour recevoir des informations et une place de sortie (output place) pour émettre des
informations, facilite la définition des opérateurs de composition, ainsi que l'analyse et la
vérification de certaines propriétés [ANI, 08]. Ce choix de modélisation a été utilisé pour la
représentation de l’exemple de composition proposé précédant dans la figure suivant :
Figure I. 9:Exemple de modélisation par réseau de Pétri d’un service composé.
Les auteurs Ouyang et al. Dans [CHU, 06] présentent une traduction complète et
rigoureuse de BPEL en réseaux de Petri. Cette étude est complète en termes de couverture des
structures de contrôle et des actions de communication de BPEL. Ces règles de traduction sont
utilisées dans Wof BPEL, un outil permettant la vérification de manière automatisée de
processus BPEL [CHR, 10].
Par ailleurs les auteurs Srini al. Dans [SRI, 02] ont défini la sémantique d’un ensemble
d’instructions DAML-S en RdP. En se basant sur cette sémantique, ils ont décrit la
décomposition de services à l’aide du formalisme RdP, et ont mis en œuvre un outil pour décrire
et vérifier automatiquement la composition de services [WAF, 12].
21
Chapitre I
V.2
Architecture Orienté Service & Service web & Approches formelles existantes
Les approches Formelles (Composition):
1. Algèbre des processus :
Les algèbres de processus sont des familles de langages formels permettant de modéliser
les systèmes logiciels, en particulier les systèmes distribués et concurrentiels. Au cours des
dernières années, de nombreux chercheurs ont cherché à exploiter les nombreux travaux sur les
algèbres de processus dans le but de définir un modèle sémantique adéquat et de poser des
fondations rigoureuses pour l’étude des applications basées sur les services ainsi que de leur
composition. La nature compositionnelle des algèbres de processus découle naturellement de
leur définition algébrique. Cela est très utile dans le cadre de l’étude des SOA [FAY, 10].
La théorie algèbres de processus est basée sur π- calcul, dans laquelle l'entité de base
est un processus qui peut être un processus vide, un choix entre plusieurs opérations I/O et leurs
continuations, une composition parallèle, une définition récursive, ou une invocation récursive.
Les opérations I/O peuvent être des inputs (receive) ou bien des outputs (send). Par
exemple, x(y) dénote la réception du tuple y sur le canal x; x̅[y] dénote l’envoie du tuple y sur
le canal x. une notation pointillée qui spécifie une séquence d’action par exemple c̅ [1,
d].d(x,y,z). c̅[x+y+z], dans laquelle un processus envoi le tuple [1, d] sur le canal "c", reçoit
dans le canal "d" les composants dont sont reliés aux variable x,y,z puis envois la somme
x+y+z de ces dernières sur le canal "c". La composition de processus parallèle est dénotée A|B.
Plusieurs processus peuvent s’exécuter en parallèle et communiquent en utilisant des canaux
compatibles [CHO, 08]. En utilisant le π- calcul en peut décrire l’exemple précédent par la
figure suivant :
Figure I. 10:Exemple de représentation en π-calculs d’un service composé
22
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
De nombreuses variantes de langages formels ont été proposées dans la littérature pour
modéliser les processus algébrique. Nous citons par exemple, CSP (Calculus of Sequential Processes)
proposé par Hoare, CCS (Calculus of Communicating Systems) introduit par Milner et utilisé pour
évaluer l’exactitude qualitative des propriétés d’un système comme le blockage, et LOTOS (Language
Of Temporal Ordered Systems) qui a été standardisé par ISO [WAF, 12].
Récemment, plusieurs travaux de recherche ont utilisés les algèbres de processus pour modéliser
et vérifier la composition de services. Par exemple, une technique de formalisation basée sur CCS pour
la chorégraphie de service avec WSCI a été proposée dans [CAM, 06]. Dans [KOS, 04], la sémantique
du langage de chorégraphie WS-CDL est décrite à l’aide de CSP pour permettre la vérification
automatique de propriétés. Le langage de spécification formel LOTOS a également été considéré,
notamment par Ferrara dans [AND, 04]. Des règles sont présentées pour traduire un processus BPEL en
spécification LOTOS et inversement [CHR, 10].
2. Automates
Un automate est un modèle très connu dans le domaine de la spécification formelle de
systèmes. Un automate est composé d’un ensemble d’états ou nœuds, un ensemble d’actions et
un ensemble de transitions étiquetées entre les états. Les actions sont modélisées par des
étiquettes et une transition étiquetée modélise ainsi l’exécution de l’action lors du
franchissement de celle-ci [CHR, 10].
Le comportement d’un automate est dirigé par un mot fourni en entrée, l’automate passe
alors d’un état à un autre pour exécuter ce mot. On retrouve les automates dans la modélisation
de processus, dans les protocoles de communications, dans l’étude des langages formels et dans
la spécification des processus de composition de services [WAF, 12].
Pour modéliser la composition de service à l’aide d’un automate, on assigne
généralement un état à chaque invocation de service, un événement à chaque réponse d’un
service et un deuxième état pour indiquer la fin de l’activité d’invocation [CHR, 10].
Puisque la sémantique des automates ne prend pas directement en charge la concurrence,
Yan et Dague ont proposé une solution consiste que chaque branche parallèle d’exécution est
modélisée par un automate indépendant et des événements de synchronisation. Ceci nécessite
malheureusement la duplication de l’état d’entrée et de celui de sortie dans chaque branche
parallèle [CHR, 10]. Un exemple d’une telle modélisation est fourni dans la figure.
23
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Figure I. 11:Exemple de modélisation de service composé avec les automates
Différentes classes d’automate ont été proposées pour modéliser le comportement d’un
système, tels que les automates entrée/sortie (E/S) [CHR, 10]. et leurs nombreuses variantes,
les automates temporisés [WAF, 12] [CHR, 10], les automates à états finis [CHR, 10] ou les
automates (max,+) [WAF, 12].
3. Langage Z :
Le langage Z a été développé à l'Université d'Oxford à la suite des travaux de Jean René
Abrial. Selon Davis dans [DAV ,96], Le langage Z est un langage de spécifications formelles
sert à la représentation abstraite de certains aspects d’un produit logiciel, principalement quant
à la manipulation des données (data manipulation design). Ce que nous pouvons comprendre
de la définition de Davis c’est que le langage Z permet de donner une représentation
parfaitement découplée de toute implémentation et c’est exactement ce qu’il veut dire par une
représentation abstraite.
Dans [SPI, 98] Spivey a défini le langage Z comme des Méthodes formelles Techniques,
basées sur les mathématiques, pouvant être utilisées à tous les stages du développement
logiciel. L’idée de Spivey c’est que le langage Z a une sémantique formelle qui permet de rendre
24
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
précises des idées de développement auparavant vagues ou simplement intuitives et ça en
réduisant toute expression du langage à une expression logique. Au point de vue sémantique,
le Z peut être subdivisé en trois parties [FOU, 03] :
1. Un langage mathématique utilisant propositions, logique prédicative, ensembles et
relations.
2. Un langage schématique représentant des manipulations algorithmiques de données
ou des objets.
3. Une théorie du raffinement entre des types abstraits de données.
En ce qui nous concerne ce n’est pas la notation mathématique mais celle
schématique car selon Spivey dans [SPI, 98] c’est la notation schématique qui permet de faire
le lien entre les mathématiques pures et une abstraction informatique, n’est basée sur aucune
formalisation.
Alors pour spécifier un système avec le langage Z nous devons utiliser les définitions et
les schémas suivants [MAZ, 01]:
 Définition des ensembles de base.
 Définition des types.
 Schéma d’état (espace d’état).
 Schéma d’initialisation.
 Schéma d’opération.
A partir des éléments constituants de la spécification Z décrites au dessus, nous
concluons qu’elle est structurée en schémas ; cependant nous pouvons tirer deux composantes
principales d’une spécification formelle en Z qui sont :
a)- Des déclarations globales : noms de types, d’ensembles, abréviations (équivalences
syntaxiques et définitions génériques).
b)- Un ou plusieurs types de schémas.
Nous avons vu que la seconde composante d’une spécification formelle en langage Z
c’est le schéma. Les schémas viennent toujours en trois parties [FOU, 03]:
 Un nom qui identifie le schéma en portée globale sur la spécification.
25
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
 Une partie déclarative (peut être vide) qui définit les différentes données
membres du schéma. Les données définies pour la première fois sont de portée
locale. Son contenu s’appelle signature.
 Une partie prédicative (peut être vide) qui énumère les contraintes que doivent
respecter les données accessibles dans la portée courante, localement ou
globalement, pour que le schéma soit suivit.
Généralement nous pouvons distinguer aussi deux types de schémas qui sont :
1) Orientés données: ils regroupent ou décrivent alors un ensemble de données. Ils
donnent possiblement leur état initial.
2) Orientés opérations: ils donnent alors des manipulations abstraites des données
définies ailleurs, possiblement dans des schémas orientés données.
Finalement nous pouvons dire que le langage Z est utilisé pour composer et
structurer une série de descriptions mathématiques c'est-à-dire qu’il permet de grouper
ensemble des informations (données ou opérations), de les encapsuler et de les nommer pour
réemploi.
4. LOTOS :
LOTOS est un langage parallèle qui s'inspire des algèbres de processus: le contrôle
des programmes est décrit par des expressions algébriques appelées comportements. La
synchronisation et la communication s'exécutent exclusivement par rendez-vous, sans partage
de mémoire.
Comme la plupart des langages de programmation, LOTOS permet de définir et de
manipuler des structures de données. Mais, à la différence des langages classiques, LOTOS
utilise le formalisme des types abstraits algébriques (Abstract Data Types, ADT).
Dans une large mesure, le choix des types abstraits pour la description des structures de
données est conforme aux objectifs d'un langage de spécification [HUR ,89]: les spécifications
algébriques constituent un modèle mathématique exprimant les propriétés que doit vérifier toute
26
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
réalisation, sans imposer de contraintes d'implémentation superflues les propriétés des données
et des opérations sont complètement décrites.
En choisissant les types abstraits, LOTOS évite les difficultés rencontrées en Estelle où
les données sont spécifiées au moyen des types du langage PASCAL, ce qui pose des problèmes
bien connus.
Les spécifications LOTOS
Selon Garavel dans [GAR ,89], une spécification LOTOS est un texte ASCII qui
regroupe un ensemble de définitions de processus (encadrées par les mots-clés \process" et
\endproc") et de définitions de types (délimitées par les mots-clés \type"et \endtype").LOTOS
possède une structure de blocs imbriqués :
Chaque définition de processus peut contenir des définitions de processus ou de types
qui lui sont locales ; en revanche une définition de type ne peut pas englober d'autres définitions
de types ni de processus. Au plus haut niveau, une spécification LOTOS se comporte comme
une définition de processus, bien que la syntaxe soit légèrement différente de celle des
processus ordinaires (les mots-clés \spécification"et \endspec"sont utilisés).
Les définitions de processus décrivent le contrôle et les définitions de types décrivent
les données. Cette dichotomie qui apparait au niveau syntaxique rend bien compte du fait que
le langage LOTOS se compose de deux parties tout à fait orthogonales qui seront, pour cette
raison, présentées séparément : les structures de contrôle et les structures de données.
Les identificateurs utilisées dans une spécification LOTOS se répartissent en six classes
(processus, portes, variables, types, sortes, opérations) qui seront définies tour à tour. Dans tous
les exemples, les mots clés seront écrits en minuscules et les identificateurs en majuscules.
Le langage de lotos présente deux points forts :
 Il permet de donner une bonne idée du comportement du système surtout au niveau le
plus externe.
 Il possède des opérateurs et des types abstraits assez complets pour exprimer les
fonctions du système.
VI.
Conclusion :
27
Chapitre I
Architecture Orienté Service & Service web & Approches formelles existantes
Dans ce chapitre, nous avons présenté de manière générale quelques concepts liés
à la technologie des services web. Nous avons d’abord présenté quelques définitions de
ce concept. Nous avons également décrit l’architecture fondamentale des services web
ainsi que les langages et les protocoles de base permettant leur déploiement. Après quoi
nous avons abordé le sujet de la composition de services web. Enfin, nous avons
présenté un survol sur les différentes approches de modélisation et de composition des
services web existantes dans la littérature.
28
Chapitre II
Analyse du langage BPEL
Chapitre II
Analyse du langage BPEL
Chapitre II
I.
Analyse du langage BPEL
Introduction :
Plusieurs langages de compositions de services ont été proposés dans la littérature, le
langage BPEL (Business Process Exécution Langage) est l‘un des plus importants formalismes.
Il est largement utilisé dans le cadre de la mise en œuvre d’une architecture orientée services.
Langage BPEL se caractérise par rapport aux autres langages par sa gestion des
exceptions (fautes et événements), l’exécution parallèle des activités et la synchronisation des
flots, son mécanisme de compensation, et sa gestion de la corrélation des messages.
Dans ce chapitre, nous allons présenter les concepts et syntaxe de langage BPEL.
II.
Présentation :
BPEL, tout d’abord nommé BPEL4WS [IBM, 03] et WS-BPEL [OAS, 07] depuis 2005,
s’est imposé comme le langage standard OASIS d’orchestration de services Web. Il est
largement utilisé dans le cadre de la mise en œuvre d’une architecture orientée services.
Le langage BPEL permet de décrire à la fois :
i.
l’interface comportementale : via la définition d’un processus abstrait spécifiant les
échanges de messages entre différents partenaires.
l’orchestration : via la définition d’un processus privé exécutable qui représente la
ii.
nature et l’ordre des échanges entre partenaires.
BPEL se caractérise par rapport aux autres langages (d’orchestration) par :
 sa gestion des exceptions, en particulier, des fautes et des événements ;
 l’exécution parallèle des activités et la synchronisation des flots ;
 la description des transactions contextuelles (stateful) et de longue durée ;
 son mécanisme de compensation qui est très utile pour les transactions de longue durée
;
 sa gestion de la corrélation des messages
30
Chapitre II
Analyse du langage BPEL
Notons qu’un processus BPEL est directement exécutable par un moteur
d’orchestration de BPEL (e.g. activeBPEL [ACT, 12], Oracle BPEL Process Manager
[ORA ,12]).
BPEL s’appuie sur le langage WSDL puisque chaque processus BPEL est exposé
comme un service Web via une interface WSDL. BPEL utilise les opérations, les données ainsi
que les liens des partenaires décrits dans son interface WSDL. Ce dernier décrit aussi tous les
éléments nécessaires à un processus BPEL pour interagir avec ses partenaires, à savoir,
l’adresse des partenaires, les protocoles de communication et les opérations disponibles.
En outre, BPEL fait appel aux standards WSDL, SOAP, UDDI, mais aussi aux autres
standards de services Web (Figure II.1) tels que :
Figure II. 1: BPEL dans l’architecture des services Web
WS-Addressing, qui est un mécanisme permettant de transporter des messages SOAP de façon
bidirectionnelle, en mode synchrone ou asynchrone [WAD, 14].
WS-Policy, qui est une extension de WSDL permettant d’exprimer les fonctionnalités et les
caractéristiques générales des partenaires (e.g. politiques d’usage, gestion des transactions,
fiabilité, sécurité) [WPO, 14].
WS-Security, qui est une extension de SOAP permettant de sécuriser les échanges de messages
[WSE, 14].
31
Chapitre II
Analyse du langage BPEL
WS-Reliable Messaging, qui est un protocole permettant aux messages d’être délivrés de
manière fiable entre différentes applications réparties, dans le cas de pannes de composants, de
réseaux ou de systèmes [OSI ,11].
WS-Transactions, qui définissent des mécanismes interopérables permettant de réaliser des
transactions entre différents domaines de services Web [IWS ,10].
La description d’un processus BPEL (voir Figure II.) Contient quatre parties principales :
(i)
la déclaration des variables utilisant des types décrits ou importés dans l’interface
WSDL,
(ii)
la description des partenaires
(iii)
la déclaration des gestionnaires de fautes qui sont déclenchés après une exception,
(iv)
l’activité principale qui décrit le comportement du processus.
Figure II. 2: Structure d'un processus WS-BEPEL
32
Chapitre II
III.
Analyse du langage BPEL
Avantages et fonctionnalités du BPEL :
Le langage BPEL présente plusieurs avantages dont nous citons quelques-uns :
 BPEL est basé sur XML, et il supporte les protocoles standards des services web comme
SOAP, WSDL, UDDI.
 Sa spécification a été faite par plusieurs acteurs industriels majeurs, ce qui la rendue
plus finie, plus complète et moins ambiguë. Les objectifs sont donc fixés de manière
claire et précise et chaque élément est bien détaillé.
 Les éléments syntaxiques de BPEL permettent de modéliser les processus abstraits et
les processus exécutables.
 le processus permettant le parallélisme présente également des liens de
synchronisations.
IV.
Syntaxe du langage BPEL :
Une composition des services Web spécifié en langage BPEL est composée de quatre
parties qui sont:
• Les attributs supérieurs :
Cette première partie permet la déclaration des informations concernant le processus métier
comme son nom, les espaces de nom supportés, les documents WSDL ou schémas XML
importés par le processus métier.
• Lien de partenaire :
Cette deuxième partie permet la déclaration des partnerlinks: ces derniers définissent une
liaison entre les ensembles d’opérations des services invoqués par le service Web composite
décrit en BPEL, et un nom de liaison bien précis du service Web engagé dans la composition.
Ces liaisons sont appelées Partner permettent ainsi d’identifier facilement les différents services
Web utilisés dans cette composition (processus métier).
• Les variables :
Cette troisième partie permet de déclarer des variables, utilisant les types importés de
descriptions WSDL associées à la spécification BPEL. Ces variables seront utilisées dans la
partie description comportementale du processus métier, pour maintenir un état au niveau du
service Web, et ainsi assurer des liaisons de données entre deux opérations.
33
Chapitre II
Analyse du langage BPEL
• Les activités:
Les activités décrivent le comportement du processus métier lui-même en utilisant différents
opérateurs. Elles peuvent être basiques ou complexes. Les activités complexes sont composées
d’autres activités basiques ou complexes.
Les deux tableaux Tableau ( II-1 ) et Tableau ( II-2 ) illustrent les différentes activités
basiques et complexes du langage BPEL.
Tab II. 1: Activités basiques du langage BPEL.
Tab II. 2: Activités complexes du langage BPEL.
V.
Les activités de BPEL :
Les activités, pouvant être effectuées par un processus BPEL, sont classées en trois
catégories : activités basiques (ou de base), activités de communication et activités structurées
[OAS, 07].
34
Chapitre II
V.1
Analyse du langage BPEL
Les activités basiques :
Les activités de base sont des activités simples.
Ce sont les activités : <empty>, <throw>, <exit>, <assign> et <wait>.
empty : modélise une absence d’activité ou une activité vide.
La syntaxe est :
<empty standard-attributes>
standard-elements
</empty>
throw : permet de signaler une faute interne au processus BPEL.
syntaxe de cet élément est comme suit :
<throw faultName="qname" faultVariable="ncname" ?
standard-attributes>
standard-elements
</throw>
exit : termine instantanément l’instance d’un processus BPEL.
assign : est utilisée pour mettre à jour les variables du processus BPEL en leur affectant de
nouvelles données.
wait : permet de définir une durée d’attente ou une échéance. Un seul critère d’expiration doit
être spécifié à la fois.
La syntaxe est :
<sequence>
<wait until=’2009-11-19T20 :30’/>
<invoke operation="releaseSlides" .../>
</sequence>
35
Chapitre II
Analyse du langage BPEL
V.2
Les activités de communication :
Les activités de communication sont : <receive>, <reply>, et <invoke>.
Elles sont utilisées pour l’échange des messages entre un processus BPEL, son client et ses
partenaires.
receive : permet d’attendre une invocation d’un service partenaire. Elle peut créer une
instance d’un processus BPEL et le préparer ainsi à l’arrivée d’une réponse.
La syntaxe de l’élément receive est la suivante :
<receive partnerLink="ncname" portType="qname" operation="ncname"
Variable ="ncname"? createInstance="yes|no"?
standard-attributes>
standard-elements
</receive>
reply : envoie un message en réponse à l’invocation d’un partenaire.
La syntaxe est:
<reply partnerLink="ncname" portType="qname" operation="ncname"
Variable ="ncname"? faultName="qname"?
standard-attributes>
standard-elements
</reply>
invoke : permet d’invoquer une opération d’un service partenaire. Elle peut servir à la fois pour
une communication synchrone ou asynchrone. L’activité <invoke> asynchrone joue le même
rôle qu’une activité <reply> ; tandis que l’activité <invoke> synchrone invoque une opération
d’un service partenaire mais attend sa réponse.
L’activité invoke est définie comme suit :
<invoke partnerLink="ncname" portType="qname" operation="ncname"
inputVariable="ncname"? outputVariable="ncname"?
standard-attributes>
</invoke>
36
Chapitre II
V.3
Analyse du langage BPEL
Les activités structurées :
Les activités structurées décrivent l’ordre d’exécution de leurs sous-activités.
Les activités <sequence>, <if>, <while> et <repeat Until> permettent un contrôle
séquentiel.
L’activité <flow> permet quant à elle une exécution parallèle de ses activités ainsi que leur
synchronisation.
Enfin, l’activité <pick> définit un choix contrôlé par l’arrivée d’un événement.
sequence : permet de définir une collection d’activités pouvant être exécutées
séquentiellement.
La syntaxe est :
<sequence standard-attributes>
standard-elementsactivity+
</sequence>
while : permet une exécution répétée de sa sous-activité tant que sa condition booléenne
est satisfaite au début de chaque itération.
Syntaxe :
<while >
<condition> bool-expr </condition>
activity
</while>
repeat Until : permet aussi une exécution répétée de sa sous-activité mais jusqu’à la
satisfaction de sa condition.
Syntaxe :
<repeatUntil standard-attributes>
activity
<condition >
bool-expr
</condition>
</repeatUntil>
37
Chapitre II
Analyse du langage BPEL
if : définit une liste ordonnée de choix conditionnels permettant de sélectionner une seule
activité à exécuter.
pick : attend qu’un message particulier (un événement extérieur) arrive ou qu’une alarme
soit déclenchée. Quand l’un des deux événements se produit, l’activité associée est ainsi
exécutée.
La syntaxe de l’élément <pick>est la suivante :
<pick createInstance="yes|no"? standard-attributes>
standard-elements
<onMessage partnerLink="ncname" portType="qname"
operation="ncname" variable="ncname" ?>+
<correlations>?
<correlation set="ncname" initiate="yes|no" ?>+
</correlations>
activity
</onMessage>
</pick>
flow :permet une exécution parallèle d’un ensemble d’activités et de spécifier un ordre
partiel d’exécution. Une ou plusieurs de ses sous-activités seront donc concurrentes. Les
liens définis dans cette activité permettent de synchroniser et/ou de spécifier des
dépendances temporelles entre les sous-activités de <flow>.
La syntaxe de l’élément<flow>est définie ainsi :
<flow standard-attributes>
standard-elements
<links> ?
<link name="ncname">+
</links>
activity+
</flow>
38
Chapitre II
VI.
Analyse du langage BPEL
Gestion des données :
Un des principaux défis dans l’intégration des services Web, et en particulier des
processus métier, est de traiter les interactions contextuelles (stateful). Ainsi, il est
nécessaire pour tout langage d’orchestration de fournir les moyens nécessaires pour traiter
l’état d’une instance d’un processus métier.
Les processus BPEL permettent de spécifier ces interactions contextuelles
impliquant l’échange de messages entre partenaires. L’état d’une instance d’un processus
métier inclut les messages échangés ainsi que les données intermédiaires utilisées dans le
logique métier et dans les messages envoyés aux partenaires. Le maintien de l’état de cette
instance de processus nécessite l’utilisation de variables.
En plus, les données des états ont besoin d’être extraites et utilisées de façon adéquate
pour contrôler le comportement de l’instance du processus nécessitant des expressions sur
les données.
Enfin, la mise à jour de l’état du processus métier nécessite la notion d’assignation
(de nouvelles valeurs aux variables en utilisant des affectations). BPEL fournit ces fonctions
pour les types de données XML et les types de messages WSDL.
VII.
Corrélation des messages :
La corrélation des messages est le mécanisme de BPEL permettant à des processus
de participer aux conversations. Quand un message arrive à un processus BPEL, il doit être
délivré à une nouvelle instance ou à une instance déjà existante.
Le rôle de la corrélation des messages est donc de déterminer à quelle conversation
un message appartient, et d’instancier/localiser une instance de processus.
BPEL définit un ensemble de corrélation (i.e. <correlationset>) comme un
ensemble de propriétés partagées par tous les messages échangés dans un groupe corrélé.
Cet ensemble est employé pour lier les messages d’entrée et de sortie à une instance de
processus BPEL grâce aux valeurs de corrélation contenues dans ces messages.
Il peut être déclaré dans l’élément <process> de BPEL ou dans une activité <scope>.
Chaque ensemble de corrélation est identifié par un nom qui sera utilisé dans une activité
de communication.
39
Chapitre II
VIII.
Analyse du langage BPEL
Les scopes :
BPEL permet de structurer un processus métier de manière hiérarchique sous forme
de scopes imbriqués.
L’activité <scope> fournit un contexte influant sur l’exécution de ses activités.
Ce contexte inclut des variables, des liens partenaires et des ensembles de
corrélation. Il a ses propres gestionnaires de fautes, d’événements, de terminaison et de
compensation. Ce contexte limite la visibilité de ces définitions aux activités englobées.
Enfin, chaque activité <scope> a une activité principale qui décrit son comportement.
Un scope est défini de la manière suivante :
<scope variableAccessSerializable="yes|no" standard-attributes>
standard-elements
<variables> ?
...
</variables>
<correlationSets>?
...
</correlationSets>
<faultHandlers>?
...
</faultHandlers>
<compensationHandler>?
...
</compensationHandler>
<eventHandler>?
...
</eventHandler>
<terminationHandler>?
...
</terminationHandler>
activity
</scope>
IX.
Compensation et gestion des erreurs :
40
Chapitre II
Analyse du langage BPEL
Les processus métier impliquent des transactions de longue durée qui sont basées sur
des communications (i.e. échanges de messages) asynchrones.
Ces transactions conduisent à un certain nombre de mise à jour pour les partenaires. Par
conséquent, si une erreur se produit, il est nécessaire d’inverser les effets de certaines ou
même de la totalité des activités antérieures. Cela est le rôle de la compensation.
Durant l’exécution d’un processus BPEL, des conditions d’exception peuvent se
produire et doivent être gérées. Un service Web invoqué peut retourner une faute WSDL
qui doit être traitée ; un processus BPEL lui-même peut avoir besoin de signaler une faute
à des clients. Ajoutant à cela, que certaines erreurs peuvent aussi se produire au niveau de
l’environnement d’exécution (des processus BPEL).
Pour BPEL, la gestion des fautes peut être effectuée au niveau d’un processus et/ou
d’un scope. Une activité <scope> définit une unité logique de travail recouvrable et
réversible, pour lequel un ensemble de gestionnaires de fautes et de compensation peut être
défini. Cela en vue de traiter les fautes interceptées, et de défaire le travail effectué dans un
scope en cas d’erreurs. Notons que BPEL permet aussi d’associer des gestionnaires de
fautes à une activité <invoke> (synchrone) pour traiter les fautes d’invocation.
X.
Conclusion :
Au niveau recherche, il existe des langages d’orchestration et des implémentations
commerciales de ces langages permettant d’exécuter des processus basés sur le concept
d’orchestration.
BPEL est une spécification qui représente un langage orienté à la modélisation des
processus qui utilisent les services web pour leur implémentation. Néanmoins, BPEL est un
langage de bas niveau, proche des langages de programmation ce qui le rend difficile à
comprendre.
41
Chapitre Ⅲ
L’Approche Proposée
Chapitre III
L’approche proposée
L’Approche Proposée
Chapitre Ⅲ
I.
Introduction :
Le besoin de méthodes formelles et d’outils de génie logiciel est largement reconnus,
et certain travaux ont été déjà réalisés dans ce but. Ce chapitre vise à donner une vue théorique
de la méthode B, Ensuit la raffinement et l’approche proposé. En fin nous allons présenter la table de
correspondance.
II.
II.1
La méthode B :
Historique :
La méthode B (Le choix de la lettre B est un hommage à Bourbaki, groupe de
mathématiciens français qui entreprit en 1939 une refonte des mathématiques, en les reprenant
à leur point de départ logique.) a été introduite au milieu des années 80 par J.-R. Abrial.
[ABR,96]. Sans entrer dans les détails, il est possible de situer B comme une méthode sousjacente aux méthodes formelles VDM (Vienna Développement Method, issue de recherches
réalisées au laboratoire IBM de Vienne dans les années 60. Mise au point par Bjorner et Jones
au cours des années 70.) [JON,93] et Z (Notation introduite par Abrial dans les années 70 (Z
comme Zermelo)) [SPV,94].
Cependant, à la différence de ces dernières, B ne se limite pas à la phase de description
: elle permet d'établir une chaîne de production qui va de la spécification du programme au code
source associé.
II.2
Présentation théorique :
L'objectif initial de B est de fournir une technique et des outils associés capables
d'aider la construction de logiciels de la façon la plus sûre possible. C'est une méthode
transformationnelle : on part d'un modèle abstrait (une machine abstraite), puis on en réduit
le niveau d'abstraction, étape par étape (par des raffinements), jusqu'à l'obtention d'un
modèle concret, proche du code source (l'implémentation).
L'ensemble des composants spécifiant un comportement (du plus abstrait au plus
concret) est appelé module. Un module peut dépendre de plusieurs autres modules, les
principes de dépendance seront vus par la suite.
Il est alors possible, pour un projet (un ensemble de modules) donné, de générer un
code exécutable sécurisé, car totalement prouvé.
43
L’Approche Proposée
Chapitre Ⅲ
II.3
Structure d'une machine abstraite :
Une machine abstraite est un sous-système de la spécification du logiciel, caractérisé par
:

un en-tête

la définition d'un état, désigné par les données et l'invariant que ces données doivent
respecter

la description des opérations capables de transformer cet état
Les variables d'état ne peuvent être directement modifiées de l'extérieur de la machine (elles
sont encapsulées), c'est pourquoi il est nécessaire d'introduire non seulement des opérations de
modification, mais aussi des opérations de consultation permettant aux utilisateurs extérieurs
de connaître l'état de la machine.
Une machine abstraite peut être décrite au moyen de nombreuses clauses, dont les plus
courantes sont présentées dans le tableau suivant (Clauses d'architecture d'une machine
abstraite B) :
Tab III. 1: Clauses d'architecture d'une machine abstraite B
Description
Nom
en-tête de la machine : nom et paramètres éventuels.
MACHINE
ensembles de base manipulables par la machine. Ces ensembles
peuvent être abstraits (aucune indication sur le type des
SETS
éléments) ou énumérés (définis par la liste de leurs éléments).
abréviations utilisables dans le texte des autres classes.
DEFINITIONS
variables de la machine, représentant l'état de la machine. Les
variables sont les seules entités qui peuvent être modifiées dans
VARIABLES
l'étape d'initialisation et dans les opérations de la machine. Toute
clause VARIABLES doit être accompagnée des
clauses INVARIANT (typage des variables)
et INITIALISATION.
44
L’Approche Proposée
Chapitre Ⅲ
ensemble de prédicats (formules logiques) permettant de typer
les variables de la machine, de définir des propriétés
INVARIANT
mathématiques sur les variables, mais aussi de définir certaines
contraintes que doit vérifier l'état de la machine à tout moment.
valeurs initiales des variables de la machine. Toute variable doit
INITIALISATION
être initialisée en satisfaisant l'invariant.
déclaration et définition des opérations. Les opérations peuvent
être paramétrées en entrée et en sortie. Le corps d'une opération
définit un comportement, et peut être accompagné d'une préOPERATIONS
condition (PRE) qui fixe les conditions sous lesquelles un appel
de l'opération garantit ce comportement.
La figure suivent (III.1) présente la structure syntaxique d'une machine abstraite B.
Dans la figure III.1, les clauses CONSTRAINTS, PROPERTIES, INVARIANT, etc.
Regroupent un ensemble de prédicats (C, P, I, etc.). Le prédicat minimal est le prédicat de
typage qui permet de déterminer le type (le domaine de valeurs) de chacune des données de la
machine. X(j) signifie que la donnée apparait dans le prédicat X. Les prédicats C, Pet I, Init ,
preet S doivent être écrits de telle sorte qu'ils garantissent la consistance interne de la machine
[LAN ,96].
45
L’Approche Proposée
Chapitre Ⅲ
Figure Ⅲ. 1:Structure d’une machine abstraite B
II.4
Raffinement :
Le raffinement en B permet d'obtenir une machine plus concrète : c'est le moyen de lever
le non-déterminisme et de préciser les choix de réalisation, tout en conservant un comportement
compatible avec la machine raffinée. L'invariant d'un raffinement contient, en plus du typage
des variables et des contraintes liées au modèle, des prédicats de liaison entre les nouvelles
variables et les variables du composant raffiné : ils forment l'invariant de collage.
Principe du raffinage :
46
L’Approche Proposée
Chapitre Ⅲ
L’opération du raffinage se fait en une ou plusieurs étapes successives selon la
complexité de la machine à raffiner et consiste à reformuler les variables et les opérations de la
machine abstraite ; tout au long du raffinage on passera des données abstraites aux données plus
concrètes, et la dernière étape de raffinage est l'étape d'implantation ,dans le tableau ci-dessus
nous résumons en quoi consiste les différentes actions de raffinage aussi bien sur les données
du système(aspect statique) que sur les traitements(aspect dynamique).
Tab III. 2: différentes actions de raffinage
La structure d'un raffinement est très similaire à celle d'une machine abstraite. Seul l'entête
change
:
clause REFINEMENT
la
clause MACHINE est
remplacée
par
une
(ou IMPLEMENTATION, s'il s'agit de l'ultime raffinement du
module), suivie d'une clause REFINES introduite pour désigner le nom du composant raffiné.
II.5
Dépendances entre modules :
Un projet B est constitué de différents modules reliés entre eux par des clauses de
visibilité, dont les plus importantes sont présentées au tableau suivant (Clauses de visibilité d'un
composant B) :
Tab III. 3 : Clauses de visibilité d'un composant B
Nom
Description
47
L’Approche Proposée
Chapitre Ⅲ
composition de plusieurs machines (utilisé dans les machines
INCLUDES
abstraites et les raffinements intermédiaires). Une machine ne
peut être incluse qu'une seule fois dans l'ensemble d'un projet.
même principe que la clause INCLUDES, mais pour les
IMPORTS
implémentations.
partage de données entre machines (aucun accès aux opérations
USES
d'une machine utilisée).
accès en lecture seule aux constituants d'une machine
SEES
III.
(impossibilité d'appeler une opération de modification).
L’approche proposée
Une notion importante lors de la conception d’une orchestration est celle d’activité. Les
activités permettent de décrire les différents chemins d’interaction entre les services web, et
permettant d’atteindre un objectif particulier. Le modèle d’activité que nous avons considéré
est décrit par le diagramme d’activité UML.
III.1
Les règles de traductions :
La traduction (descendant/ascendant) en B nécessite des règles de traduction pour
représenter ces structures de contrôle.
1. La traduction descendante (UML-B)
Capturer l’aspect comportemental (diagrammes d’activités) des processus de
l’application. Puis représenter l’exécution des activités des services comme un ensemble de
processus (séquentiels ou parallèles composés d’affectations) en B. Ces affectations sont
ordonnancées par un ensemble de structures de contrôle : composition séquentielle, boucles,
if then else…
2. La traduction ascendante (BPEL4SW-B)
48
L’Approche Proposée
Chapitre Ⅲ
Capturer l’aspect comportemental de code source (BPEL4SW) .Puis représenter
l’exécution de ces instructions comme un ensemble de processus : séquentiels ou parallèles
composés d’affectations en B.
Figure Ⅲ. 2: La traduction ascendante (BPEL4SW-B)
3. Les règles de codage (B-BPEL4SW):
Les spécifications abstraites (B), sont raffinées jusqu’à l'obtention du niveau
d'abstraction (en langage B) correspondant à la formalisation des concepts du code source
BPEL4SW. Ce niveau d’abstraction a été défini comme un ensemble d’affectations. Ces
affectations sont ordonnancées par un ensemble de structures de contrôle en BPEL4SW :
composition séquentielle,
boucles, if then else…
Figure Ⅲ. 3: Les règles de codage (B-BPEL4SW):
49
L’Approche Proposée
Chapitre Ⅲ
IV.
Tableau de correspondance B-BPEL4SW
WSComposition
BPEL Process
Profile Element
Element
BPEL code
<process name="..."
Transformation(B)
Machine
targetNamespace="..."xmlns Name()
<process>
"CordinateWS"
="..."
...
</process>
"Actor"et
<partnerlinks>
<partnerLinks>
extends *
<partnerLink name="…"
< context identifier >
partnerLinkType="…"
...
partnerRole=".."myRole="..
"WebService"
"/>
</partnerLinks>
"Variable"
"Receive"
<variables>
<variables>
VARIANT
<variable/>
<variable name="..."
variables
...
element="..." </variable>
END
</variables>
</variables>
<receive>
<receive partnerLink="…"
Permet de
portType="QName"
recevoir un
operation="…"
message d’un
variable="…" …
web service
</receive>
Service ∧ message
partenaire
"Reply"
<reply>
<reply …
Réponse = { OK,
Envoie un
</reply>
ERREUR}
<sequence>
Activity
<activity1/>
PRE
<activity2/>
Condition
message (ou une
exception) en
sortie de
processus.
<sequence>
"Sequentiel"
50
L’Approche Proposée
Chapitre Ⅲ
…
THEN
</sequence>
ANY Activity
WHERE
Condition
THEN
Activity
END
END ;
<if condition="…">
if condition then
activity
activity
<elseif condition="…">
else
activity
activity
…
end if ;
</if>
end
<while>
<while condition="…">
WHILE (condition)
Effectue un
activity
DO
traitement tant
…
VAR variable IN
que la condition
</while>
Activity1 ;
<if>
"Aternative"
"Iterative"
associée n’est
Activity2 ;
pas respectée.
..
END
V.
Conclusion :
Dans ce chapitre nous nous sommes intéressés les plus utilisés dans le domaine de
la spécification formelle des systèmes complexes. Il s’agit la méthode formelle B.
Dans un premier temps, nous avons présenté la méthode B présentation théorique
et outil ensuite une structure de la machine abstraite et le principe du raffinement puis
les dépendances entre modules. Enfin nous avons proposons une table de transformation
BPEL vers la méthode B.
51
Chapitre Ⅳ
Étude de cas : Agence de voyage
Chapitre IV
Étude de cas : Agence de voyage
Chapitre Ⅳ
I.
Étude de cas : Agence de voyage
Introduction :
Notre approche pour vérifier la composition des services web a été présentée en détails
au cours du chapitre précédent. Pour illustrer les différentes idées et concepts inclus dans notre
proposition nous allons présenter un exemple sous la forme d’une étude de cas. Nous allons
choisir la réservation de voyages en ligne comme un domaine d’application.
II.
Outils B :
Il existe deux ateliers de génie logiciel qui permettent la mise en œuvre de la
méthode B dans des projets industriels : l'Atelier B, diffusé par la société française ClearSy, et
le B-Toolkit de la société britannique B-Core. Tous deux disposent d'outils pour :

l'analyse lexicale des composants

le contrôle de types

la génération d'obligations de preuve

la démonstration automatique des propriétés

la démonstration interactive des propriétés

la traduction en langages de programmation impératifs (C, C++ ou ADA)

la gestion et la documentation des projets
Cette partie a pour but de présenter les différentes fonctionnalités offertes par l'Atelier B.
L'Atelier B est un ensemble d'outils logiciels permettant le développement d'applications
suivant la méthode B.
L'Atelier B assiste le concepteur dans la formalisation de son application :
 En exécutant automatiquement sur les spécifications et leurs raffinements, un certain
nombre d'actions dictées par la méthode,
 En proposant des services annexes à la méthode, mais néanmoins indispensables à des
développements industriels, comme la gestion, l'analyse et la documentation d'un projet.
II.1
Objets manipulés par l'Atelier B :
Nous introduisons dans ce paragraphe les principaux objets manipulés par les fonctions de
l'Atelier B.
53
Chapitre Ⅳ
Étude de cas : Agence de voyage
Composant : Fichier contenant une source écrit en langage B. Il constitue la base d'un
développement suivant la méthode B. Un composant est un terme générique et représente :
_ soit une spécification B (machine abstraite),
_ soit un raffinement de cette spécification,
_ soit son implémentation (dernier niveau de raffinement).
La saisie des composants est réalisée grâce à l'éditeur de texte de la station de développement.
Projet : Ensemble de fichiers (composants, fichiers annexes sources C, C++, HIA, ou ADA,
makefiles) utilisés ou produits durant le développement d'une application suivant la méthode
B, complété des informations nécessaires à la gestion de ces fichiers sous l'Atelier (voir BDP).
Utilisateur : Il est nécessaire de définir une liste d'utilisateurs autorisés à accéder et modifier
le projet. Notez que tous les utilisateurs ont les mêmes pouvoirs, et qu'il est nécessaire qu'au
moins un utilisateur soit renseigné.
Base de Données Projet (BDP) : Toutes les informations internes nécessaires à la bonne
exécution des outils de l'Atelier B sont stockées dans un répertoire nommé BDP. Ce répertoire
contient aussi des fichiers produits par les outils de documentation de l'Atelier B.
II.2
Modes d'utilisation de l'Atelier B :
Nous appelons Outils B les outils liés à l'application de la méthode B, ainsi qu'à l'analyse,
la mise au point et la documentation de logiciels écrits en B. L'environnement B, propose deux
modes d'utilisation des outils B :
-
Un mode interactif, utilisant une interface graphique à base de fenêtres et de boutons
de commande ; dans la suite du document nous appellerons ce mode interface utilisateur
graphique,
-
Un mode programmé, reposant sur un langage appelé langage de commande; dans la
suite de ce document, nous appellerons cette interface utilisateur mode commande.
II.3
Présentation générale :
A) Interfaces
L'interface graphique de l'Atelier B se décompose en deux parties majeures : l'une est dédiée à
la gestion des projets B, et l'autre permet une édition aisée via un éditeur spécialement conçu
pour assister l'utilisateur dans son développement B.
54
Chapitre Ⅳ
Étude de cas : Agence de voyage
Nous aborderons par la suite les détails de l'utilisation de ces dernières.
-
IHM principale
L'interface principale se présente de la façon suivante :
Figure IV. 1: L'interface principale de l'Atelier B
C'est à partir de cette interface que la majeure partie de la gestion des projets B
s'effectue.
-
Éditeur intégré
L'Atelier B est livré avec un éditeur spécifiquement adapté à l'édition de composants B.
Celui-ci propose des fonctionnalités comme l'auto-complétion de mot-clé, le
soulignement en cas d'erreur, etc.
Un aperçu de la fenêtre est donné ci-dessous :
55
Chapitre Ⅳ
Étude de cas : Agence de voyage
Figure IV. 2: Fenêtre d'éditeur intégré
Cette application offre les fonctionnalités suivantes :
-
L'édition des composants,
-
L'édition des fichiers PMM associés aux composants,
-
L'édition des fichiers RMF associés aux composants,
-
L'édition des fichiers PatchProver et PatchRafiner,
-
La coloration syntaxique,
-
L'impression,
-
L'auto complétion et l'indentation automatique,
-
La vérification syntaxique du parenthésage,
-
Une navigation par onglets entre les fichiers.
-
Il inclut en outre un tableau permettant l'insertion aisée des symboles B.
Ce dernier s'utilise comme un éditeur de texte classique et a été conçu de façon à rendre son
utilisation intuitive.
56
Chapitre Ⅳ
Étude de cas : Agence de voyage
B) Pour démarrer
Ce paragraphe décrit plus particulièrement la démarche générale permettant d'utiliser
les fonctions de l'Atelier B.
En résumé, afin de démarrer un développement avec l'Atelier B, vous devez :
1. Créer un projet,
2. Ouvrir ce projet,
3. Ajouter des composants à ce projet.
Ou plus simplement, si vous disposez d'une archive de projet, vous pouvez restaurer cette
dernière et commencer à travailler.
Une fois ces étapes accomplies vous pouvez commencer à appliquer la méthode B sur vos
composants ; il est possible de :
1. Effectuer l'analyse syntaxique et le contrôle de types,
2. Générer les obligations de preuve,
3. Démontrer automatiquement une partie de ces obligations de preuve,
4. Afficher les obligations de preuve,
5. Utiliser le prouver interactif pour démontrer les obligations de preuve restantes
Après avoir créé les implémentations de votre projet, vous serez en mesure de :
1. Contrôler le langage des implémentations,
2. Traduire le projet en langage cible en utilisant un traducteur.
Lors de ces phases du développement, utilisez les fonctions d'analyse de l'Atelier B, pour :
1. Afficher l'état d'avancement du projet ou d'un composant,
2. Afficher des graphes de dépendances entre les composants,
Vous pouvez également utiliser des fonctions de documentation pour produire
automatiquement des documentations au format des traitements de texte LATEX, PDF, ou
RTF.
Lorsque vos projets atteignent une taille importante, vous pouvez :
1. Les archiver pour en faire des sauvegardes,
2. découper vos gros projets en plusieurs petits projets en utilisant la notion de
bibliothèques.
57
Chapitre Ⅳ
III.
Étude de cas : Agence de voyage
Présentation de notre exemple :
Une agence de voyages (service01) fournit les trois services suivants : réservation de billets
d’avion (service02), réservation de chambres d’hôtel (service03) et de location de voiture
(service04). Afin de fournir ces services à ses clients, l’agence doit établir des liens avec d’autres
services : compagnies aériennes, des hôtels, des compagnies de location de voiture et des
banques (service05) pour faciliter les transactions financières entre les clients et l’agence de
voyages et entre l’agence et les autres partenaires.
A cet effet cinq services web peuvent être proposés :
 WS-AV: fournit une interface avec le client, et établir des liens avec les autres
services,
 WS-VOL : permet de réserver les vols selon une date précisée, la ville de départ et
d’arrivée et le nombre de personnes.
 WS-Hôtel : permet de réserver les chambres d’hôtel selon la date et la ville précisé et
le nombre de personnes.
 WS-LV : permet de réserver les voitures selon une date précisée et les nombres de
jours.
 WS-Bank : permet à l’agence et les clients de payer les différentes réservations.
La figure suivante (IV.3) présente les services de notre exemple :
58
Chapitre Ⅳ
Étude de cas : Agence de voyage
Figure IV. 3: Les services Web offerts par l’agence de voyage
IV.
Scénario de composition :
L’objectif principal de ce scénario est de faciliter la compréhension et de montrer
l'enchaînement d'événements de notre approche à travers un exemple simple mais réaliste. Nous
ne cherchons pas ici à montrer que notre approche peut être utilisée pour le développement de
service composés complexes, bien que cela soit tout à fait possible.
Dans cet exemple le service (WS-AV) est la composition de quatre services (WS-VOL, WSHôtel, WS-LV et WS-Bank).
Donc le service WS-AV a comme rôle d’organiser le voyage par internet. Le service fournit aux
clients une interface pour saisie les informations suivantes :
Date de départ, date de retour, ville départ, ville arrivé et nombre de personnes et retournera les
billets et le prix total de voyage.
59
Chapitre Ⅳ
Étude de cas : Agence de voyage
Le scénario interne qui dirigera les interactions entre les services est le suivant : Le service WSAV va d’abord connecter à la fois les services WS-Hôtel et WS-VOL à travers ses méthodes
respectivement reserveCHam() et reserveVol().En suite et après assurer les réservations
présidents , elle va connecter au service WS-LV par la méthode reserveVoiture().En fin elle va
envoyer le prix de chaque service au service WS-Bank pour calculer le prix total et payer par sa
méthode payer( ) comme le montre le diagramme de séquence UML suivant .
Figure IV. 4: le diagramme de séquence de scénario d’agence de voyage
Le tableau IV.1 représente les différentes entrées et sorties de chaque méthode :
Tab IV. 1:tableau d’entrées/sorties de chaque service
méthode
reserveVol()
Entrées
types
Sorties
(Date_Départ ,
(date ,date ,string ,string ,in
(Code_Vol,
Date_Retour,
t)
prix)
Ville_Départ ,
Ville_Arrivé ,
Nb_Personne)
60
Type
(string, Prix)
Chapitre Ⅳ
Étude de cas : Agence de voyage
(Date_Départ ,
reserveVoitur()
(date ,date )
(Id_voitur , prix) (string, Prix)
(date ,date ,string ,int)
(Num_Cham,
Date_Retour)
(Date_Départ ,
reserveChambre
Date_Retour,
()
Ville_Arrivé ,
(int,Prix)
prix)
Nb_Personne)
payer()
Liste_Prix
(Prix ,Prix ,Prix)
Prix_Total
Prix
Nous désirons créer un service composé appeler WS_AV pour organiser le voyage par
Internet. Le service prendra alors date départ, date retour, ville départ, ville arrivé et nombre
de personnes et retournera code billet et le prix total de voyage. Le scénario interne qui dirigera
les interactions entre les services est le suivant.
Le service va d’abord connecter à la fois les services WS-Vol et WS-Hôtel à travers
de ses méthodes respectivement reserveVol() pour réserver des billets d’avion et
reserveCham() pour réserver des chambres dans un hôtel. En suite et après assurer les
réservations précédentes, elle va connecter WS-Vol autre fois pour location de voitures par la
méthode reserveVoiture(). En fin elle va envoyer le prix de chaque service au service WSBank pour calculer le prix total et payer avec sa méthode payer(). La figure IV.5 décrit le
diagramme d’activité pour représenter ces interactions.
Figure IV. 5: le diagramme d’activité de scénario d’agence de voyage.
61
Chapitre Ⅳ
V.
Étude de cas : Agence de voyage
Correspondance B /BPEL :
Ok<?xml version="1.0" encoding="ISO-8859-1"?>
<process name=" ReserveAV"xmi:version="2.0"xmlns="bpel20" >
<partnerLinks>
<partnerLink name="Actor" partnerLinkType="Actor"/>
<partnerLink name="ws2" partnerLinkType="Class"/>
<partnerLink name="ws4" partnerLinkType="Class"/>
<partnerLink name="ws3" partnerLinkType="Class"/>
<partnerLink name="ws1" partnerLinkType="Class"/>
</partnerLinks>
<sequence>
<receive partnerLink="Actor" operation="Make_Res()"/>
<if name="Transport choice" ordre="0">
<condition expressionLanguage="Aircraft price < 1000"/>
<invoke partnerLink="ws1" operation="Get_res(A,B,Date)"/>
<reply partnerLink="ws1" operation="Res_OK"/>
<elseif>
<condition expressionLanguage="Aircraft price > 1000 "/>
<invoke partnerLink="ws2" operation="Get_res(A,B,Date)"/>
<reply partnerLink="ws2" operation="Res_OK"/>
</elseif>
</if>
<flow name =" Hotel & Car" >
<sequence>
<invoke partnerLink="ws3" operation="Get_res(Date)"/>
<reply partnerLink="ws3" operation="Res_OK"/>
</sequence>
<sequence>
<invoke partnerLink="ws4" operation="Get_res(Date)"/>
<reply partnerLink="ws4" operation="Res_OK"/>
</sequence>
</flow>
<reply partnerLink="Actor" operation="Res_OK"/>
</sequence>
</process>
62
MACHINE
ReserveAV
VARIABLES
nbplace ,Date_Départ , Date_Retour,
Ville_Départ , Ville_Arrivé ,
Nb_Personne,Num_Cham, prixAV,Id_voitur,
Liste_Prix,Prix_Total,Actor,ws2,ws4,ws3,ws1
INVARIANT
nbplace : {0..500} ,Nb_Personne : NAT
Ville_Départ ∈{Alger,Eloued}
Ville_Arrivé∈{Alger,Eloued}
prixAV = prixVOL + prixHOTEL + prixLV
(prixAV < 1000) ∧ ReserveVOL=TRUE ∧
ReserveHOTEL=TRUE ∧ ReserveLV=TRUE
INITIALISATION
nbplace := 100 prixAV < 1000
ANY
prix,ReserveAV,ReserveVOL,ReserveHOTEL,
ReserveLV WHERE
IF name="Transport choice" ordre="0"
THEN
PRE "prixAV < 1000"
IF "ws1":= "Get_res(A,B,Date)"
THEN
"ws1" := "Res_TRUE"
ELSE IF
PRE "prixAV > 1000 "
IF "ws2" := "GetRes(A,B,Date)"
THEN "ws2" := "Res_TRUE"
END IF ;
ELSE IF
IF name =" Hotel & Car"
IF "ws3":= "Get_res(Date)"
THEN
"ws3" := "Res_TRUE"
ELSE
PRE
"ws4":= "Get_res(Date)"
THEN
"ws4":= "Res_TRUE"
END;
"Actor" := "Res_TRUE"
reserver =
PRE nbplace > 0 & prix <1000
THEN
nbplace := nbplace - 1
END;
liberer =
PRE nbplace < 100
THEN nbplace := nbplace + 1
END;
reponse  disponibilite =
IF 0 < nbplace
THEN reponse:= TRUE
ELSE
reponse:= FALSE
END END END
reponse:: BOOL
// ou reponse:= bool(0 < n_rsrc)
END
END
Chapitre Ⅳ
VI.
Étude de cas : Agence de voyage
Spécification formelle de notre exemple :
 Le schéma global de notre exemple de travail est la suivante :
Figure IV. 6: Le schéma global de la Machine d'agence de voyage ReserveAV
 La machine globale de réservation agence de voyage qui définit les opérations
élémentaires issues de l'agence de voyage et les règles principale pour vérifier les
services inclus, Cette machine est écrite en notation B Ascii :
Figure IV. 7: la Machine global d'agence de voyage ReserveAV
63
Chapitre Ⅳ
Étude de cas : Agence de voyage
 Implimentation de la Machine ReserveAV
Figure IV. 8: l'implémentation la Machine global d'agence de voyage ReserveAV
 Machine ReserveVOL
La machine ReserveVOL qui définit les opérations élémentaires issues pour réservation d'une
place dans l'avion et les règles principale pour vérifier le service ReserveVOL, Cette machine
est écrite en notation B Ascii :
Figure IV. 9: la Machine ReserveVOL
64
Chapitre Ⅳ
Étude de cas : Agence de voyage
 Machine ReserveHOTEL
La machine ReserveHOTEL qui définit les opérations élémentaires issues pour réservation
d'une chambre dans un hôtel et les règles principale pour vérifier le service ReserveCHam,
Cette machine est écrite en notation B Ascii :
Figure IV. 10: la Machine ReserveHOTEL
 Machine ReserveLV
La machine ReserveLV qui définit les opérations élémentaires issues pour réservation d'une
location dans une Park du voitures et les règles principale pour vérifier le service ReserveLV ,
Cette machine est écrite en notation B Ascii :
65
Chapitre Ⅳ
Étude de cas : Agence de voyage
Figure IV. 11: la Machine ReserveLV
 Machine ReserveBANK
La machine ReserveBANK qui définit les opérations élémentaires issues pour payer dans une
Bank après la fin d'opération de réservations, Cette machine est écrite en notation B Ascii :
Figure IV. 12: la Machine ReserveBANK
66
Chapitre Ⅳ
VII.
Étude de cas : Agence de voyage
Présentation de la preuve formelle de notre exemple :
L’activité de preuve formelle s’inscrit globalement dans l’activité de validation formelle
qui consiste à apporter l’assurance de la validité d’un théorème. La validation peut mettre en
œuvre différentes techniques, les deux principales sont la preuve formelle et le model checking.
La preuve formelle consiste à démontrer des théorèmes à l’aide d’un assistant à la preuve. Ces
outils permettent, pour certains, d’exécuter automatiquement des parties d’une preuve mais
surtout de valider la preuve faite par l’utilisateur de manière à ce qu’on ne prouve pas un
théorème de manière erronée.
Un assistant à la preuve est un outil auquel est associé un langage de description de théorèmes
et un langage de description de preuves (qui peut être le même ou pas).
Il existe un certain nombre d’assistants à la preuve qui ont été développés et qui sont utilisés
soit dans le monde académique, soit dans l’industrie. Ils peuvent mettre en œuvre des techniques
diverses.
La spécificité de la méthode formelle B est que les lemmes qui doivent être prouvés sont
produits par un outil (générateur d’obligation de preuve) dans un langage correspondant à la
logique du premier ordre associée à la théorie des ensembles.
Les outils de preuve utilisés dans le cadre de la méthode comprennent : une base de règles
d’inférence associée à un moteur contenant des heuristiques un prouveur de type SAT
À chaque étape du développement, des obligations de preuve sont imposées par la méthode B.
Une obligation de preuve est une propriété qui doit être satisfaite pour que le système construit
soit
correct.
Au niveau des machines abstraites, la preuve consiste à vérifier l'établissement et la
conservation de l'invariant :
1. l'initialisation U doit établir l'invariant I : [U] I
2. si
l'invariant I est
établi,
alors
toute
opération
de
la
forme PRE P THEN G END (substitution P | G) doit le garder établi, en vérifiant pour
cela le prédicat
Au niveau d'un raffinement, les obligations de preuve consistent à montrer que le modèle raffiné
est cohérent avec le modèle abstrait :
67
Chapitre Ⅳ
Étude de cas : Agence de voyage
1. il s'agit d'abord de montrer que l'initialisation Ur du raffinement ne fait rien qui soit
contraire à l'initialisation U du composant abstrait : [Ur] ¬ [U] ¬ Ir
2. il s'agit ensuite de montrer que l'exécution d'une opération du raffinement qui établit
l'invariant correspond à une exécution de l'opération respective du niveau abstrait :
 Dans les figure suivante en va utiliser la preuve automatique jusqu'à obtenue un scénario
correct :
Figure IV. 13: les étapes de preuve
 En va contenue cette étape jusqu'à obtient un scénario correct et pratique.
68
Chapitre Ⅳ
Étude de cas : Agence de voyage

Figure IV. 14: les étapes de preuve
VII.
Conclusion :
Nous avons proposé dans ce chapitre une étude de cas comme application de notre approche
proposée. Nous avons d’abord présenté un scenario de composition inspiré de la vie réelle. Le scenario
met en œuvre une collaboration entre plusieurs services Web distincts afin de faciliter la réservation et
le voyage via l'internet. Ensuite nous avons proposé un modèle pour la composition de ces services à
l’aide de diagramme d’activité. En fin, nous avons procédé la vérification de ce modèle avec notre
proposition et l’environnement B/BPEL
L'objectif de ce chapitre était principalement d'aider à la compréhension de notre approche à
travers l’étude d’un exemple simple mais concret. Cependant, il est important de noter que les
perspectives d’application de notre approche sont beaucoup plus vastes et concernent tous les domaines
dans lesquels la composition de services Web peut être envisagée.
69
Conclusion générale
En guise de conclusion, une approche formelle pour l’orchestration des services web
est proposée dans le cadre de notre travail de mastère. La composition de services est
principalement basée sur l'intégration des opérations c’est qu’on peut avoir comme des règles
mathématiques. Donc, notre approche se base principalement sur le paradigme formel.
Cette thèse décrit une approche formelle de développement de service web. Cette
approche est basée principalement sur la technique de raffinement B. Le processus de
raffinement décrit dans ce papier est dédié à la génération d’une implémentation relationnelle
à partir de spécifications formelles B qui traduisent les données et fonctionnalités d’un service
web décrite à l’aide de diagrammes UML. Nous avons défini un ensemble de règles qui permet
non seulement le raffinement des données mais aussi des opérations associées. En utilisant le
prouveur de l’Atelier B (version 4.1), l’ensemble des règles définies dans ce processus a été
prouvé (75% des preuves sont automatiques), donnant lieu à des scénarios de preuves
génériques et donc réutilisables par instanciation.
L’approche présentée dans cet article présente plusieurs avantages :

réduction du coût de développement : automatisation des phases de spécification et de
raffinement,

obtention d’une implémentation correcte et cohérente : les compositions web sont
spécifiées conjointement,

normalisation du code généré : les deux phases de traduction et de raffinement sont
dictées par des règles précises et déterministes. Cette normalisation de code offrira une
meilleure compréhension et maintenance du code ainsi produit.
Nous travaux actuels portent sur la vérification de l'orchestration formelle peut être
répétée itérativement jusqu’à l’obtention d’un scénario de composition correct et raffiné.
Nous travaillons aussi sur le processus de réutilisation des différentes preuves élémentaires
(chaque preuve élémentaire est associée à une règle de raffinement) lors de l’établissement de
preuves plus complexes associées à la composition de plusieurs règles de base.
70
Nous propositions ouvrent plusieurs perspectives scientifiques à court et à plus long
terme. Nous soulignons ici certaines de ces perspectives:
- La réalisation d’un outil de traduction automatique. Cet outil viendra compléter cet outil,
permettant la traduction automatique des diagrammes UML et en spécifications B.
- La réalisation d’un outil de raffinement automatique. Cet outil Viendra compléter cet outil, et
qui permettant la génération automatique des documents WSDL associés aux services
composés.
- Nous travaillons aussi sur les mêmes idées afin de les appliquer sur l’autre aspect
technologique des applications Web 2.0 qu’est AJAX.
71
Bibliographies
1. [ACT,12] :
active
endpoints.
activeBPEL
Jan
2012.
http://www.activevos.com/community-open-source.php.
2. [ABR,96] : J.R. Abrial, The B-Book, Combridge University Press, 1996.
3. [AIT,08] : A. Aît-Bachir, Archi Med, un canevas pour la détection et la résolution des
incompatibilités des conversations entre services web, thèse de doctorat, Université
Joseph Fourier-Grenoble 1, 2008.
4. [ARN ,05] : Arnaud VEZAIN, Les service web - présentation générale, rapport
technique, Association HERMES, Février 2005.
5. [CHE,10] : Chemame Chaouki, Implémentation d'une infrastructure collaborative
asynchrone basée sur les services web, Mémoire de Master, 2010.
6. [CHR,01] : E. Christensen, F. Curbera, G. Meredith, and S. Weerawarana, Web
Services
Description
Language
(WSDL)
1.1,
rapport
téchnique,W3C,
http://www.w3.org/TR/wsdl, 2001.
7. [CLE,03] : Clement L., Hately A., von Riegen C. et Rogers T., UDDI v.3.0.2, OASIS
Specification, http://uddi.org/pubs/uddi_v3, 2004.
8. [CYR,05] : Cyrielle.L, Florens.S, Sébastien.G, Rapport de TE, Université de NiceSophia
Antipolis, 2005.
9. [DAV,96] :Davies, Jim , Jim Woodcock. «Using Z », Prentice Hall, 1996.
10. [DUM ,10] : C. Dumez, Approche dirigée par les modèles pour la spécification, la
vérification formelle et la mise en œuvre de services Web composés, thèse de doctorat
Université de Technologie de Belfort-Montbéliard, 2010.
11. [FOU,03] : Fourmanoit, S. E, Merlo. R, Roy. « Introduction au langage Z Cours
LOG2000 -Eléments du génie logiciel», Ecole Polytechnique de Montréal 2003.
12. [GAR ,89] : Garavel, Hubert. « Introduction au langage LOTOS ». Verilog RhoneAlpes Centre d'Etudes Rhone-Alpes.1989
13. [GAR,96] : Gartner Group, Note de recherche, 1996.
14. [HUB,03] : K. Hubert , M. Valérie , LES WEB SERVICES, Edition DUNOD, 2003.
15. [HUR ,89] : Garavel, Hubert. « Compilation et vérification de programmes LOTOS».
Université Josef Fourier- Grenoble I. Pour obtenir le grade de DOCTEUR. novembre
1989.
16. [IBM,03] :IBM.
BPEL4WS
(version1.1),
http://www.ibm.com/developerworks/library/ws-bpel.
72
May
2003.
17. [IWS ,10] IBM.WS-Transactions,Fer2010.
http://www.ibm.com/developerworks/library/specification/ws-tx/.[22] Constantin
18. [JEA,09] : Jean DALAT, Introduction à WCF, Association Dotnet France, Janvier
2009.
19. [JON,93] : Jones, C.B., VDM une méthode rigoureuse pourle développement du
logiciel,Méthodologie du logiciel, Masson, 1993.
20. [LAN,96] : Lano K, The B Language and Method: A Guide to Practical Formal
Development FACIT. Springer-Verlag, ISBN3-540-76033-4.1996.
21. [LOP,08] : C. Lopez-velasco, Sélection et composition de services Web pour la
génération d’applications adaptées au contexte d’utilisation, thèse de doctorat,
université JOSEPH FOUR IER, 2008
22. [MAZ,01] :Mazouzi, Hamza. «Ingénierie des protocoles d’interaction : des systèmes
distribués aux systèmes Multi-agents» : thèse de docteur de l’université paris 9
Dauphine, octobre 2001.
23. [MIT,03] : Mitra N. et Lafon Y, SOAP Version 1.2 Part 0: Primer (Second Edition),
W3C, http://www.w3.org/TR/soap12-part0/, 2003.
24. [NER,06]: Nerea Arenaza, Composition semi-automatique de Services Web, Projet
de Master, Février 2006
25. [OAS,07] :OASIS Standard. WSBPEL Ver. 2.0, April 2007. http://docs.oasisopen.org/wsbpel/2.0/OS/wsbpel-v2.0-OS.html.
26. [ORA ,12] :
ORACLE.
Oracle
BPEL
Process
Manager.
http://www.oracle.com/technology/products/ias/bpel/index.html.
27. [OSI ,11] :
OASIS.
OASIS
Web
Services
Reliable
Messaging
,Nov2011.
http://www.oasis-open.org/committees/tc_home.php?wg_abbrev=wsrm.
28. [POU,07] : Pourraz, Frederic. 2007. “Diapason: une Approche Formelle Et Centrée
Architecture Pour La Composition Évolutive Des Services Web”. SAVOIE.
29. [RAZ,07] : Razika DRIOUCHE, Proposition d’une architecture d’intégration des
applications d’entreprise basée sur l’interopérabilité sémantique de l’EbXML et la
mobilité des agents, thèse doctorat, 2007.
30. [SOF ,14] : Sofiane Chemaa, Une approche de composition de services Web à l’aide
des
Réseaux
de
Petri
orientés
objet , Thèse
de
Doctorat ,UNIVERSITÉ
ABDELHAMID MEHRI, CONSTANTINE 2 ,2014.
31. [SPI,98] : Spivey, John M. «The Z notation : a reference manual », Prentice Hall, 1998.
32. [SPV ,94] : Spivey, J.M., La notation Z, Méthodologie du logiciel, Masson, 1994.
73
33. [TOU,07] : Touzi, Jihed. 2007. “Aide à La Conception Des Systèmes D’information
Collaboratif Support De L’interopérabilité Des Entreprises”.
34. [VEZ,05] : A. VEZAIN, "LES SERVICES WEB – Présentation générale", Version
0.0.1, Association HE.R.M.E.S, Château du Montet, 2005.
35. [WAD,14] : W3C. WS-Addressing, Mar 2014. http://www.w3.org/Submission/wsaddressing/.
36. [WAE,11] : Wael SELLAM, Une approche formelle pour la vérification des propriétés
non fonctionnelles d'orchestration des services web, Mémoire de Master, 2010-2011.
37. [WPO,14] : W3C. WS-Policy, Mar 2014. http://www.w3.org/TR/2007/REC-wspolicy-20070904/.
38. [WSE,14]:W3C.WS-Security,Mar2014.
http://www.oasisopen.org/committees/tc_home.php?wg_abbrev=wss.
74

Documents pareils