THESE DOCTORAT EN SCIENCES APPLIQUEES ... - Toubkal
THESE DOCTORAT EN SCIENCES APPLIQUEES ... - Toubkal
THESE DOCTORAT EN SCIENCES APPLIQUEES ... - Toubkal
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
mi<br />
Université Mohamed V- Souissi Rabat<br />
Ecole Nationale Supérieure d’Informatique<br />
et d’Analyse des Systèmes<br />
Numéro d’ordre : ----<br />
UFR : Systèmes d’Information Métiers,<br />
Multimédia et Mobiles (SI3M)<br />
-<strong>EN</strong>SIAS-<br />
-<strong>EN</strong>SIAS-<br />
<strong>THESE</strong><br />
-<strong>EN</strong>SIAS-<br />
pour l‟obtention du Diplôme de<br />
<strong>DOCTORAT</strong> <strong>EN</strong> SCI<strong>EN</strong>CES <strong>APPLIQUEES</strong><br />
Spécialité : Informatique<br />
Présentée par<br />
Adil K<strong>EN</strong>ZI<br />
Sujet de thèse :<br />
Ingénierie des Systèmes Orientés Services<br />
Adaptables : Une Approche Dirigée par les Modèles<br />
Soutenue le 16/10/2010 à 10H00 devant le jury composé de :<br />
Président :<br />
M. Abdelhak MOURADI Professeur à l‟<strong>EN</strong>SIAS de Rabat, Maroc<br />
Rapporteurs :<br />
M. Djamal B<strong>EN</strong>SLIMANE Professeur à l‟Université Claude Bernard Lyon 1, France<br />
M. Bouchaib BOUNABAT Professeur à l‟<strong>EN</strong>SIAS de Rabat, Maroc<br />
M. Bernard COULETTE Professeur à l‟Université de Toulouse II-Le Mirail, France<br />
Examinateur :<br />
M.Mahmoud NASSAR Professeur Habilité à l‟<strong>EN</strong>SIAS de Rabat, Maroc<br />
Directeur de thèse :<br />
M.Abdelaziz KRIOUILE Professeur à l‟<strong>EN</strong>SIAS de Rabat, Maroc
A ma mére et mon pére<br />
A ma tante Khadija<br />
A mes sœurs et fréres
Remerciements<br />
Les travaux présentés dans le cadre de ce mémoire de thèse ont été réalisés au laboratoire<br />
Systèmes d‟Information multimédia et mobile (SI2M) à l‟Ecole Nationale Supérieure<br />
d‟Informatique et d‟Analyse des Systèmes (<strong>EN</strong>SIAS) de Rabat.<br />
Tout d‟abord, je tiens à remercier vivement mon directeur de thèse Monsieur Abdelaziz<br />
KRIOUILE, Professeur à l‟<strong>EN</strong>SIAS, pour sa sympathie, son écoute, son soutien, sa<br />
disponibilité et sa patience. Je le remercie également pour ses relectures minutieuses de ce<br />
mémoire.<br />
Je remercie également Madame Bouchra El Asri, Professeur Assistant à l‟<strong>EN</strong>SIAS pour<br />
m‟avoir co-encadré durant cette thése. Je la remercie aussi pour ses conseils précieux, sa<br />
disponibilité, son soutien ainsi que pour les nombreuses discussions que nous avons eues sur<br />
le thème de cette thèse.<br />
Je tiens aussi à remercier Monsieur Abdelhak MOURADI de m‟avoir fait l‟honneur de<br />
présider le jury de ma thèse.<br />
J‟adresse également mes vifs remerciements à Monsieur Djamal B<strong>EN</strong>SLIMANE, Professeur<br />
à l‟université Claude Bernard Lyon1, Monsieur Bernard COULETTE, Professeur à<br />
l‟université de Toulouse II et Monsieur Bouchaib BOUNABAT, Professeur à l‟<strong>EN</strong>SIAS,<br />
d‟avoir accepté de rapporter ma thèse. Je les remercie également pour les remarques et<br />
conseils prodigués.<br />
J‟exprime ma profonde gratitude à Monsieur Mahmoud NASSAR, Professeur Habilité à<br />
l‟<strong>EN</strong>SIAS pour les nombreuses discussions techniques que nous avons eues. Je le remercie<br />
également pour ses conseils et ses remarques tout au long de ces années. Je le remercie aussi<br />
pour avoir accepté d‟être examinateur de cette thèse.<br />
J‟adresse également mes remerciements à Monsieur Rdouan FAIZI, Professeur à l‟<strong>EN</strong>SIAS<br />
pour ses nombreuses relectures et ses corrections des différentes publications rédigées en<br />
Anglais.<br />
Je tiens à remercier tous ceux qui m‟ont aidé et soutenu durant cette thèse, et plus<br />
particulièrement ma famille. J‟adresse mes vifs remerciements à mes frères Jilali et Najib de<br />
m‟avoir tant soutenu aussi bien matériellement que moralement. Je tiens aussi à remercier<br />
mon frère Abdelkarim de m‟avoir soutenu et encouragé et surtout de m‟avoir orienté vers des<br />
études en informatiques. Je remercie également mon frère Hatim qui est loin de la Faculté<br />
d‟Informatique de l‟Université Technique de Dortmund, de m‟avoir encouragé et soutenu et<br />
surtout de n‟avoir ménagé aucun effort pour me fournir la meilleure documentation dans le<br />
domaine.<br />
J‟adresse également mes chaleureux remerciements à tous les amis et collègues que j‟ai<br />
côtoyés durant les années de cette thèse. Leurs conseils, leur amitié et leur bonne humeur<br />
m‟ont beaucoup encouragé durant mes travaux.<br />
Je remercie tous ceux qui ont contribué de près ou de loin à la réalisation de ce travail.
Résumé<br />
De nos jours, les Systèmes d‟information occupent une position centrale dans la stratégie de<br />
l‟entreprise. Leur capacité de communication et d‟intégration, leur agilité ainsi que leur<br />
adaptation aux utilisateurs constituent des défis majeurs pour la compétitivité des entreprises.<br />
Pour relever ces défis, l‟ingénierie logicielle est marquée particulièrement par l‟émergence de<br />
deux nouveaux paradigmes : SOC (Service Oriented Computing) et CAC (Context-aware<br />
Computing). Le paradigme SOC a pour objectif de faire face aux problèmes de<br />
l‟interopérabilité et de l‟intégration des SI ainsi que de leur agilité. Le paradigme CAC vise à<br />
relever le défi de l‟adaptabilité des SI. L‟adoption rapide et massive de ces deux paradigmes,<br />
a fait naitre de nouveaux challenges, plus particulièrement le challenge de l‟ingénierie des<br />
systèmes orientés services adaptables.<br />
L‟objectif de cette thèse est de proposer une approche d‟ingénierie dirigée par les modèles<br />
pour le développement des systèmes orientés services adaptables. Une telle approche définit<br />
principalement : (i) un profil UML 2.0 appelé VSoaML (View based Service Oriented<br />
Architecture Modeling Language) (ii) un processus de développement et (iii) un outil logiciel<br />
associé à VSoaML pour la génération automatique de code appelé VSoaMLTool.<br />
Le profil VSoaML a pour objectif la modélisation et la spécification des systèmes orientés<br />
services adaptables indépendamment des standards (WSDL, BPEL4WS, etc.) et des<br />
plateformes d‟implémentation (J2EE, dotNet, etc.). Ce profil se base essentiellement sur le<br />
concept de service multivue comme une entité de modélisation fondamentale pour le<br />
développement des systèmes orientés services adaptables et sur un ensemble de stéréotypes<br />
permettant la modélisation des systèmes orientés services adaptables. La particularité du<br />
service multivues réside dans la représentation des besoins et des spécificités des utilisateurs<br />
finals tout au début du cycle de développement des systèmes orientés services.<br />
Le processus de développement associé au profil VSoaML définit les phases, les activités et<br />
les artefacts nécessaires pour la transformation des exigences métiers en des services flexibles<br />
et adaptables. Il permet l‟identification, la spécification et l‟implémentation des services<br />
multivues à partir des besoins métier spécifiés via les diagrammes des cas d‟utilisation.<br />
L‟objectif principal d‟un tel processus est l‟élaboration des modèles à différents niveaux<br />
d‟abstraction ainsi que leur transformation pour cibler différentes plateformes<br />
d‟implémentation. Après l‟élaboration des modèles métiers en se basant sur le profil VSoaML
et sur le processus de développement y associé, l‟outil VSoaMLTool permet la génération<br />
automatique de code en se basant principalement sur deux transformations définies dans le<br />
cadre MDA ciblant différentes plateformes technologiques. Chaque transformation a été<br />
définie en deux étapes. La première étape consiste en la spécification des correspondances<br />
entre les métamodèles source et cible. La deuxième étape consiste en la définition des<br />
transformations en se basant sur le langage ATL comme langage de transformation de<br />
modèles. Les transformations définies visent essentiellement la génération de<br />
l‟implémentation et de la description de chaque service.<br />
Mots clés : UML, VSoaML, Service multivues, Adaptabilité, MDD/MDA, SOA/Services<br />
Web, Systémes d‟Information Distribués.
Table des matières<br />
Introduction générale ........................................................................................ 1<br />
I. Etat de l’art ................................................................................................. 7<br />
II.<br />
I.1. Introduction .............................................................................................................. 7<br />
I.2. Systèmes Orientés Services (SOS) : concepts et définitions .................................... 8<br />
I.3. SOS : Approches de modélisation ............................................................................ 9<br />
I.3.1. Approches à base de « Service Component »................................................................ 10<br />
I.3.2. Approches à base de « Service Component Architecture » (SCA) ............................... 12<br />
I.3.3. Approches à base de profils UML ................................................................................. 14<br />
I.3.4. Discussion ...................................................................................................................... 20<br />
I.4. SOS : Concepts d‟adaptation .................................................................................. 20<br />
I.4.1. Concept d‟adaptation : les Vues .................................................................................... 21<br />
I.4.1.1 Vues à base de l‟adaptation par rôles .................................................................... 21<br />
I.4.1.2 Vues à base de l‟adaptation contextuelle .............................................................. 23<br />
I.4.1.3 Discussion ............................................................................................................. 26<br />
I.4.2. Concept d‟adaptation : la variabilité de service ............................................................. 27<br />
I.4.2.1 Description de l‟approche ..................................................................................... 27<br />
I.4.2.2 Discussion ............................................................................................................. 30<br />
I.4.3. Concept d‟adaptation : la différenciation de service ..................................................... 30<br />
I.4.3.1 Description de l‟approche ..................................................................................... 30<br />
I.4.3.2 Discussion ............................................................................................................. 33<br />
I.5. SOS : technologies d‟adaptation ............................................................................ 34<br />
I.5.1. AWSDL et CWSDL ...................................................................................................... 34<br />
I.5.2. CBPEL et VXBPEL ...................................................................................................... 35<br />
I.5.3. Discussion ...................................................................................................................... 35<br />
I.6. SOS : Approches d‟adaptation dirigées par les modèles ........................................ 36<br />
I.6.1. Concepts et définitions .................................................................................................. 37<br />
I.6.2. Approches MDA de développement des SOS ............................................................... 39<br />
I.6.2.1 PIM (UML) vers services Web ............................................................................. 39<br />
I.6.2.2 PIM(EDOC) vers services web ............................................................................ 45<br />
I.6.3. Approches MDA d‟adaptation des SOS ....................................................................... 53<br />
I.6.3.1 Approches de gestion des propriétés non-fonctionnelles ..................................... 53<br />
I.6.3.2 Approches de gestion des droits d‟accès............................................................... 56<br />
I.6.3.3 Approches de gestion de la qualité de services ..................................................... 59<br />
I.6.3.4 Approches d‟adaptation au contexte .................................................................... 61<br />
I.6.3.5 Discussion ............................................................................................................. 62<br />
I.7. Synthèse générale ................................................................................................... 63<br />
VSoaML : Un profil UML de modélisation des systèmes orientés<br />
services adaptables .......................................................................................... 69
III.<br />
II.1. Introduction ............................................................................................................ 69<br />
II.2. Exemple illustratif : Le système d‟enseignement à distance .................................. 71<br />
II.3. Le concept de service multivues ............................................................................ 72<br />
II.3.1. Le concept de vue ...................................................................................................... 73<br />
II.3.2. Le service multivues.................................................................................................. 74<br />
II.4. Les couches d‟abstraction d‟un SOS Adaptable .................................................... 78<br />
II.5. Le profil VSoaML .................................................................................................. 82<br />
II.5.1. Le profil VSoaML : Vue d‟ensemble ........................................................................ 82<br />
II.5.2. VSoaML : les stéréotypes ......................................................................................... 88<br />
II.5.2.1 Le stéréotype Service ............................................................................................ 88<br />
II.5.2.2 Le stéréotype Message .......................................................................................... 90<br />
II.5.2.3 Le stereotype MessageAttachment ....................................................................... 91<br />
II.5.2.4 Le stéréotype Specification ................................................................................... 92<br />
II.5.2.5 Le stéréotype MVService ..................................................................................... 94<br />
II.5.2.6 Le stéréotype MVServiceSpecification ................................................................ 96<br />
II.5.2.7 Le stéréotype Collaboration .................................................................................. 98<br />
II.5.2.8 Le stéréotype ServiceChannel ............................................................................. 100<br />
II.5.2.9 Le stéréotype Requester ...................................................................................... 101<br />
II.5.2.10 Le stéréotype MVServiceInterface ..................................................................... 102<br />
II.5.2.11 Le stéréotype BaseServiceInterface .................................................................... 103<br />
II.5.2.12 Le stéréotype ViewServiceInterface ................................................................... 105<br />
II.5.2.13 Le stéréotype Provider ........................................................................................ 106<br />
II.5.2.14 Le stéréotype ServiceOperation .......................................................................... 107<br />
II.5.2.15 Le stéréotype ServiceDomain ............................................................................. 108<br />
II.5.3. Exemple illustratif DLS : Couches d‟abstraction ................................................... 109<br />
II.6. Conclusion ............................................................................................................ 116<br />
Processus de Développement Dirigé par les Modèles des Systèmes<br />
Orientés Services Adaptables ....................................................................... 117<br />
III.1. Introduction .......................................................................................................... 117<br />
III.2. Processus de développement des systèmes orientés services : phases, activités et<br />
artefacts ............................................................................................................................ 118<br />
III.3. Processus de développement MDA : phases, activités et artefacts ...................... 121<br />
III.3.1. Les types de modèles et de transformation de MDA .............................................. 121<br />
III.3.1.1 Computation Independent Model (CIM) ............................................................ 121<br />
III.3.1.2 Platform Independent Model (PIM).................................................................... 121<br />
III.3.1.3 Platform Specific Model (PSM) ......................................................................... 122<br />
III.3.2. Le processus de développement dans le contexte de MDA : .................................. 124<br />
III.4. Processus MDA de développement des SOS adaptables ..................................... 126<br />
III.4.1. Phase 1: Elaboration des modèles des cas d‟utilisation........................................... 128<br />
III.4.2. Phase 2: Identification des services par acteur ........................................................ 129<br />
III.4.3. Phase 3 : Spécification des interfaces de services ................................................... 133<br />
III.4.4. Phase 4 : Fusion des modèles visuels ...................................................................... 135<br />
III.4.5. Phase 5: Transformation des modèles et génération de code .................................. 137<br />
III.5. Conclusion ............................................................................................................ 139
IV. VSoaMLTool : Outil de génération de code automatique .............. 140<br />
IV.1. Introduction .......................................................................................................... 140<br />
IV.2. VSoaMLTool : modules et fonctionnalités .......................................................... 141<br />
IV.3. VSoaMLTooL : Transformation de modèle et génération de code...................... 143<br />
IV.4. Le PIM (VSoaML) de l‟étude de cas DLS ........................................................... 144<br />
IV.5. Le métamodèle du profil VSoaML ...................................................................... 147<br />
IV.6. Du PIM (VSoaML) vers des descriptions (MVWSDL)....................................... 148<br />
IV.6.1.1 Le Multiview WSDL pour la description des services multivues....................... 148<br />
IV.6.1.2 Du PIM(VSoaML) vers PSM(MVWSDL) ......................................................... 151<br />
IV.6.1.3 Du PSM (MVWSDL) vers le code (MVWSDL)............................................... 154<br />
IV.7. Du PIM (VSoaML) vers PSM (JaxRPC) ............................................................. 157<br />
IV.7.1. Le métamodèle JAX-RPC ...................................................................................... 158<br />
IV.7.2. Spécification des correspondances entre le métamodèle de VSoaML et le<br />
métamodèle JAX-RPC ............................................................................................................. 159<br />
IV.7.3. Les règles de transformation ................................................................................... 160<br />
IV.7.4. Le code java généré à partir des PIM(VSoaML)..................................................... 162<br />
IV.8. VSoaMLTool : déploiement selon l‟architecture SOA ........................................ 166<br />
IV.9. Conclusion ............................................................................................................ 168<br />
Conclusion générale et perspectives ............................................................ 169<br />
Liste des publications .................................................................................... 172<br />
Références ....................................................................................................... 174
Table des figures<br />
Figure 1–Métamodèle du “service component” (Zhang et al., 2006) ........................................... 11<br />
Figure 2–Composant SCA ............................................................................................................ 13<br />
Figure 3–Modélisation à base de SCA du système de l‟agence de voyage .................................. 13<br />
Figure 4–Métamodèle du profil UML (Johsnston et al., 2006). ................................................... 15<br />
Figure 5–Métamodèle du profil PIM4SOA (López-Sanz et al., 2007) ......................................... 17<br />
Figure 6 –Diagramme de classe et les rôles de l‟application «video central » (Fink et al, 2003) . 22<br />
Figure 7–Déclaration des vues en VPL (Fink et al., 2003). .......................................................... 23<br />
Figure 8–Métamodéle de vue (Maamar et al., 2005) .................................................................... 24<br />
Figure 9–Script de transformation des documents WSDL ........................................................... 26<br />
Figure 10–Types de variabilité de services (Chang et al., 2007b) ................................................ 28<br />
Figure 11–Concept de service différencié (Tao et al. , 2008) ....................................................... 32<br />
Figure 12–Conception à base des services différenciés de l‟application OPS) (Tao et al., 2007b) .<br />
....................................................................................................................................................... 33<br />
Figure 13–Types de transformations : modèle vers modèle et modèle vers code (Bezevin et al.,<br />
2004). ............................................................................................................................................ 40<br />
Figure 14–Modèle PIM de l‟étude de cas « agence de voyage » (Bezevin et al., 2004). ............. 41<br />
Figure 15–Correspondances UML/WSDL (Bezevin et al., 2004) ................................................ 42<br />
Figure 16–Correspondances UML/Java (Bezevin et al., 2004) .................................................... 43<br />
Figure 17–Méthodologie de développement des SOS (Gronmo et al., 2004a). ........................... 44<br />
Figure 18–Correspondance UML/WSDL ..................................................................................... 45<br />
Figure 19–Processus de transformation du framework défini (Yu et al , 2007) ........................... 46<br />
Figure 20–Métamodèle « Document Model » (Yu etal ., 2007) ................................................... 47<br />
Figure 21–Métamodèle WSDL (Yu et al., 2007) ......................................................................... 48<br />
Figure 22–Métamodèle Choreography (YU et al., 2007) ............................................................. 49<br />
Figure 23–Métamodèle BPEL (Yu et al., 2007) ........................................................................... 50<br />
Figure 24–Profil “Document Model” (Patrasciuo, 2004) ............................................................ 51<br />
Figure 25–Métamodèle du XML schéma ..................................................................................... 52<br />
Figure 26–Métamodèle WSDL (Patrsciou et al., 2004) ............................................................... 52<br />
Figure 27–Profil «Extra- functional Property » (Ortiz et al., 2006b) ........................................... 54<br />
Figure 28–Stéréotype « Extra-functional property » (Ortiz et al., 2006b) .................................... 54<br />
Figure 29–Service TouristService (Ortiz et al., 2006a) ............................................................... 55<br />
Figure 30–Processus de transformation ATL (Ortiz et al., 2006a) ............................................... 55<br />
Figure 31–Métamodèle cible SOAP (Ortiz et al., 2006a) ............................................................. 56<br />
Figure 32–Métamodèle Policy (Ortiz et al, 2006a) ...................................................................... 56<br />
Figure 33–Métamodèle de SECTET-UML(Hafner et al.,2009) ................................................... 58<br />
Figure 34–Métamodèle XACML .................................................................................................. 59<br />
Figure 35–Processus de développement dirigé par les modèles (D‟ambrogio, 2007) .................. 60<br />
Figure 36–Métamodèle ContextUML (Maamar et al., 2006) ....................................................... 61<br />
Figure 37–Diagramme des cas d‟utilisation du DLS .................................................................... 72<br />
Figure 38–Modèle d‟interaction des services avec leurs clients ................................................... 75<br />
Figure 39–Métamodèle de l‟interface MVServiceInterface ......................................................... 76<br />
Figure 40–Interface de service multivues du service multivues «Formation » ............................ 77
Figure 41–Couches fonctionnelles d‟un SOS (Papazoglou, 2007) ............................................... 79<br />
Figure 42–SOS adaptable : Couches d‟abstraction ....................................................................... 81<br />
Figure 43–Stéréotypes de VSoaML et leurs métaclasses de base UML2.0 ................................. 83<br />
Figure 44–Métamodèle de VSoaML ............................................................................................ 84<br />
Figure 45–Stéréotype Service ....................................................................................................... 89<br />
Figure 46–Service Agenda ............................................................................................................ 89<br />
Figure 47–Stéréotype message ..................................................................................................... 91<br />
Figure 48–Exemple d‟un message ................................................................................................ 91<br />
Figure 49–Stéréotype MessageAttachment .................................................................................. 92<br />
Figure 50–Stéréotype specification............................................................................................... 93<br />
Figure 51–Exemple de stéréotype Specification........................................................................... 94<br />
Figure 52–Stéréotype MVService................................................................................................. 95<br />
Figure 53–Exemple de service multivues ..................................................................................... 95<br />
Figure 54–Stéréotype MVServiceSpecification ........................................................................... 97<br />
Figure 55–Exemple de MVServiceSpecification.......................................................................... 97<br />
Figure 56–Stéréotype Collaboration ............................................................................................. 98<br />
Figure 57–Exemple de collaboration de services ......................................................................... 99<br />
Figure 58–Stéréotype Channel .................................................................................................... 101<br />
Figure 59–Stéréotype Requester ................................................................................................. 102<br />
Figure 60–Exemple de Requester ............................................................................................... 102<br />
Figure 61–Stéréotype MVServiceInterface ................................................................................ 103<br />
Figure 62–Exemple de MVServiceInterface .............................................................................. 103<br />
Figure 63–Stéréotype baseServiceInterface ................................................................................ 104<br />
Figure 64–Exemple de BaseServiceInterface ............................................................................. 104<br />
Figure 65–Stéréotype ViewServiceInterface .............................................................................. 105<br />
Figure 66–Exemple de ViewServiceInterface ............................................................................ 106<br />
Figure 67–Stéréotype Provider ................................................................................................... 107<br />
Figure 68–Stéréotype ServiceOperation ..................................................................................... 108<br />
Figure 69–Exemple de serviceOperation .................................................................................... 108<br />
Figure 70–Stéréotype ServiceDomain ........................................................................................ 109<br />
Figure 71–Modèle BPMN du cas d‟utilisation « Assurer Formation ». ..................................... 110<br />
Figure 72–Modèle BPMN du cas d‟utilisation « Suivre formation» ....................................... 111<br />
Figure 73–Modèle des services multivues du DLS .................................................................... 114<br />
Figure 74–Extrait du modèle d‟information du système d‟Enseignement à Distance............... 115<br />
Figure 75–Phases du cycle de vie méthodologique (Papazoglou et al., 2006) ........................... 119<br />
Figure 76–Types de transformations MDA (Blanc, 2005) ......................................................... 123<br />
Figure 77–Processus de développement MDA des systèmes logiciels ..................................... 125<br />
Figure 78–Processus de développement des systèmes orientés services multivues dans le cadre<br />
de l‟approche MDA ................................................................................................................... 127<br />
Figure 79–Cas d‟utilisation du DLS ........................................................................................... 129<br />
Figure 80–Scénario associé au cas d‟utilisation «assurer Formation» associé à l‟acteur ........... 131<br />
Figure 81–Identification des services associés à l‟acteur « Enseignant » .................................. 132<br />
Figure 82–Identification des services associés à l‟acteur «Administrateur» ............................. 133<br />
Figure 83–Identification des services associés à l‟acteur «Etudiant » ........................................ 133<br />
Figure 84–PIM raffiné associé à l‟acteur Etudiant .................................................................... 134
Figure 85– PIM raffiné associé à l‟acteur Administrateur......................................................... 135<br />
Figure 86–Extrait du résultat de l‟étape de fusion du service Formation ................................... 136<br />
Figure 87-Phase de transformation de modèle et génération du code ........................................ 138<br />
Figure 88–Modules de VSoaMLTool ......................................................................................... 142<br />
Figure 89–Processus de génération de code à partir des PIMs (VSoaML) ................................ 143<br />
Figure 90–Extrait des interfaces de service multivues des services multivues du DLS ............ 146<br />
Figure 91–Métamodèle VSoaML ............................................................................................... 147<br />
Figure 92–Structure d'un document WSDL ................................................................................ 149<br />
Figure 93–Métamodèle MVWSDL ........................................................................................... 151<br />
Figure 94–Code ATL de la règle de transformation viewinterface2WSDL ............................... 153<br />
Figure 95–Code ATL de la règle de transformation BaseInterface2WSDL ............................... 154<br />
Figure 96–Requête de génération de code MVWSDL ............................................................... 155<br />
Figure 97–Code ATL pour la génération de code MVWSDL .................................................... 155<br />
Figure 98–Code MVWSDL généré ........................................................................................... 156<br />
Figure 99–Processus de génération des implémentations des services à partir des PIMs<br />
(VSoaML) ................................................................................................................................... 157<br />
Figure 100–Métamodèle JAX-RPC ........................................................................................... 158<br />
Figure 101- Règle de transformation Domain2Package ............................................................. 161<br />
Figure 102–Règle de transformation MVService2jaxrpcClass .................................................. 161<br />
Figure 103–Règle de transformation Operation2Method ......................................................... 162<br />
Figure 104–Règle de transformation viewinterface2interface ................................................... 162<br />
Figure 105–Requête de génération de code Java ........................................................................ 163<br />
Figure 106–Code ATL pour la génération de code java ............................................................. 164<br />
Figure 107–Code java généré à partir du PIM(VSoaML) .......................................................... 165<br />
Figure 108–Architecture de déploiement des services multivues ............................................... 167<br />
Liste des tableaux<br />
Tableau 1–Stéréotypes et métaclasse de base ............................................................................... 16<br />
Tableau 2–Profil PIM4SOA ......................................................................................................... 17<br />
Tableau 3–Stéréotypes du profi l SoaML ..................................................................................... 19<br />
Tableau 4–Correspondances Model Document/Web service (YUet al., 2007) ............................ 47<br />
Tableau 5–Correspondances CCA/WSDL (Yu et al., 2007) ....................................................... 48<br />
Tableau 6–Stéréotypes du profil SECTET-UML (Alam et al., 2008) .......................................... 57<br />
Tableau 7–Synthèse des différentes approches étudiées .............................................................. 65<br />
Tableau 8–Stéréotypes du profil VSoaML ................................................................................... 88<br />
Tableau 9–Services multivues du Systéme d‟Enseignement à distance .................................... 145<br />
Tableau 10–Correspondances VSoaML/MVWSDL .................................................................. 152<br />
Tableau 11–Spécification des correspondances VSoaML/JAX-RPC ........................................ 160
Liste des abréviations<br />
Abréviation<br />
API<br />
ATL<br />
BPEL<br />
CAC<br />
DTD<br />
EMF<br />
GMF<br />
GUI<br />
HTML<br />
HTTP<br />
IDE<br />
J2EE<br />
MDA<br />
MDD<br />
MOF<br />
OCL<br />
OMG<br />
PIM<br />
PSM<br />
QVT<br />
SOC<br />
SOS<br />
SoaML<br />
SOA<br />
SOAP<br />
UDDI<br />
UML<br />
WSDL<br />
XMI<br />
XML<br />
Signification<br />
Application Programming Interface<br />
Atlas Transformation Language<br />
Business Process Execution Language<br />
Context aware Computing<br />
Data Type Definition<br />
Eclipse Modelling Framework<br />
Graphical Modelling Framework<br />
Graphical User Interfaces<br />
HyperText Markup Language<br />
HyperText Transfer Protocol<br />
Integrated Development Environment<br />
Java 2 Platform Enterprise Edition<br />
Model Driven Architecture<br />
Model Driven Development<br />
Meta-Object Facility<br />
Object Constraint Language<br />
Object Management Group<br />
Platform Independent Model<br />
Platform Specific Model<br />
Query/View/Transform<br />
Service Oriented Computing<br />
Service Oriented Systems<br />
Service Oriented Architecture Modeling Language<br />
Service Oriented Architecture<br />
Simple Object Access Protocol<br />
Universal Description, Discovery and Integration<br />
Unified Modeling Language<br />
Web Service Description Language<br />
XML Metadata Interchange<br />
Extensible Markup Language
1<br />
Introduction générale<br />
Introduction générale<br />
Les systèmes d‟information occupent aujourd‟hui une position centrale dans la stratégie de<br />
l‟entreprise. La capacité de communication et d‟intégration de ces systèmes, leur réactivité aux<br />
changements métiers et technologiques ainsi que leur facilité d‟utilisation et d‟adaptation<br />
constituent des défis majeurs pour la compétitivité des entreprises. Pour relever ces défis,<br />
l‟ingénierie logicielle n‟a cessé de fournir de nouveaux paradigmes et de nouvelles technologies.<br />
Actuellement, l‟ingénierie logicielle est marquée particulièrement par l‟émergence de deux<br />
nouveaux paradigmes : SOC (Service Oriented Computing) et l‟Informatique Sensible au<br />
Contexte (Context-aware Computing). Les travaux menés au sein de cette thèse s‟inscrivent dans<br />
l‟étude et l‟exploitation de ces paradigmes selon une approche dirigée par les modèles (MDA-<br />
Model Architecture) pour répondre à certaines attentes des systèmes d‟information en pleine<br />
évolution.<br />
En effet, SOC (Papazoglou et al., 2003) (Huhns et al., 2005) permet le développement des<br />
systèmes d‟information distribués, flexibles, agiles et interopérables. SOC s‟appuie<br />
principalement sur le concept de service qui se définit comme une entité informatique<br />
indépendante des plateformes, auto-contenue et autonome permettant le support de la<br />
composition des applications distribuées en couplage faible tout en optimisant les coûts et les<br />
délais (Papazoglou, 2007). SOC se base sur l‟architecture orientée service (SOA-Service<br />
Oriented Architecture) dont l‟objectif est d‟organiser un ensemble d‟applications isolées, en un<br />
ensemble de services interconnectés, chacun étant accessible à travers des interfaces et des<br />
protocoles de communication standards. SOA définit une approche permettant de répondre aux<br />
besoins de développement des applications en couplage faible en se basant sur les standards tout<br />
en restant indépendant de tout protocole et de toute plateforme. La technologie des services web<br />
(Gustavo et al., 2003) constitue une implémentation de l‟architecture SOA. Elle définit un<br />
ensemble de standards et de protocoles fournissant ainsi une infrastructure assurant des<br />
fonctionnalités de transport, de messagerie (SOAP), de description (WSDL) (Chinnici et al .,<br />
2001) de découverte et de publication (UDDI) (Clement et al., 2004) et de composition de
2<br />
Introduction générale<br />
services (BPEL4WS) (Andrews et al., 2003).<br />
En parallèle avec l‟émergence du SOC, l‟informatique Sensible au Contexte (Dey, 2000) a été<br />
proposée dans l‟objectif d‟adapter des applications et des systèmes logiciels aux différents<br />
contextes d‟utilisation. Ces derniers couvrent toutes les informations pouvant être utilisées pour<br />
caractériser la situation d‟une entité. Une entité peut être une personne, un lieu, ou un objet qui<br />
peut être pertinent pour l‟interaction entre l‟utilisateur et l‟application, y compris l‟utilisateur et<br />
l‟application (Dey, 2000). Bien qu‟il n‟existe pas une définition unique de ce qui est un contexte<br />
d‟utilisation, les caractéristiques des terminaux utilisés pour accéder aux systèmes et celles du<br />
réseau et surtout le profil de l‟utilisateur constituent les éléments clés du contexte d‟utilisation.<br />
Par ailleurs, l‟OMG a proposé l‟architecture dirigée par les modèles MDA (MDA-Model Driven<br />
Architecture) (OMG, 2003) pour le développement et la maintenance des systèmes<br />
d‟informations distribués et complexes. MDA propose une nouvelle manière de spécification des<br />
systèmes informatiques basée sur différents perspectives du même système. En premier lieu, les<br />
fonctionnalités et le comportement d‟un système sont décrits sans tenir compte des<br />
caractéristiques technologiques. Ensuite, la spécification des fonctionnalités et du comportement<br />
est utilisée pour créer les systèmes informatiques conformément à une technologie spécifique.<br />
La première phase dans une approche MDA, est effectuée par un modèle indépendant d‟une<br />
plate-forme technologique (PIM - Platform Independent Model) alors que la deuxième phase est<br />
effectuée par un modèle spécifique à une plate-forme technologique (PSM - Platform Specific<br />
Model). Le passage du PIM vers le PSM constitue un aspect important de cette approche et se<br />
fait en se basant sur la spécification et la définition d‟un ensemble de règles de transformation.<br />
La séparation claire et explicite entre les modèles indépendants et dépendants d‟une plate-forme<br />
permet d‟apporter plusieurs avantages au développement des systèmes logiciels. En effet, la<br />
logique métier est protégée contre les incessantes évolutions et l‟apparition des nouvelles<br />
technologies. De plus, elle apporte une plus grande réactivité quand les systèmes informatiques<br />
doivent évoluer pour utiliser une autre technologie ou atteindre d‟autres exigences. L‟approche<br />
MDA vise comme objectif de rendre les systèmes informatiques plus indépendants d‟une<br />
technologie spécifique en fournissant la portabilité et l‟interopérabilité au niveau des modèles.
3<br />
Introduction générale<br />
Cette approche permet également la maîtrise de la complexité du développement de logiciels<br />
grâce à l‟utilisation des modèles comme éléments centraux pour le développement des systèmes<br />
logiciels.<br />
Dans le but de gérer la complexité du développement des systèmes orientés services, d‟une part,<br />
et la prise en compte de l‟utilisateur, d‟autre part, il est nécessaire de fournir une méthodologie<br />
définissant concepts, Formalisme/Notation, Processus et outils. En effet, le développement des<br />
systèmes à base de service est généralement basé sur la technologie des services web qui fournit<br />
une infrastructure à base de standards incluant les standards WSDL, SOAP, UDDI et BPEL4WS<br />
permettant la description, l‟invocation, la découverte/publication et la composition de services.<br />
Certes, les technologies et les standards sont très importants pour le développement de tels<br />
systèmes, mais ils sont insuffisants pour le développement des systèmes d‟entreprise complexes<br />
et distribués vu que les différents stakeholders (e.g., les analystes métiers, les architectes, les<br />
utilisateurs finals, les développeurs, etc.) n‟ont pas forcément des connaissances techniques. Le<br />
challenge principal qui se pose aujourd‟hui est la spécification des systèmes orientés services<br />
indépendamment des technologies caractérisées par leur bas niveau d‟abstraction. Dans cette<br />
optique, plusieurs travaux de recherche ont été proposés. Pour sa part, L‟OMG est aujourd‟hui<br />
dans la phase de standardisation d‟un profil UML appelé SoaML(OMG, 2009) pour la<br />
modélisation des systèmes orientés services.<br />
L‟objectif principal de cette thèse est de définir une approche d‟ingénierie pour le<br />
développement des systèmes orientés services adaptables aux différents types d‟utilisateur, dans<br />
le cadre de l‟approche MDA. Une telle approche définit (i) un profil UML appelé VSoaML<br />
(View based Service oriented architecture Modeling Language) pour la modélisation et la<br />
spécification des systèmes orientés services adaptables (ii) un processus de développement des<br />
systèmes orientés services adaptables dans le cadre de l‟approche MDA (iii) un outil logiciel<br />
dirigé par les modèles, appelé VSoaMLTool, permettant la génération de code à partir des<br />
modèles métiers de haut niveau via un ensemble de règles de transformations.<br />
VSoaML (Kenzi et al., 2009) permet de modéliser un système orienté service adaptable à un haut<br />
niveau d‟abstraction indépendamment des plates-formes d‟implémentation (J2EE, dotNet, etc) et<br />
des standards de la technologie des services web (SOAP, WSDL, UDDI, BPEL4WS, etc.).
4<br />
Introduction générale<br />
VSoaML est centré utilisateur et il se base fondamentalement sur le concept de service multivues<br />
(Kenzi et al., 2008) comme une entité de modélisation de première classe capable de représenter<br />
les besoins et les spécificités des utilisateurs suivant leurs profils. Le service multivues est une<br />
nouvelle entité de modélisation qui fournit, en plus des interfaces de services, des interfaces<br />
multivues qui se caractérisent par leur flexibilité et leur adaptabilité aux différents acteurs<br />
interagissant avec le service. Le service multivues permet la capture des exigences des<br />
utilisateurs et de leurs spécificités tout en séparant leurs préoccupations fonctionnelles. Pour ce<br />
faire, le service multivues fournit/requiert des interfaces capables de décrire les capacités du<br />
service suivant le profil de l‟utilisateur interagissant avec le service. Une telle interface permet la<br />
représentation des fonctionnalités de service accessible seulement à un type particulier<br />
d‟utilisateur.<br />
Pour identifier les services multivues, les spécifier et les développer, nous avons défini un<br />
processus de développement dans le cadre de l‟approche MDA (Kenzi et al., 2008) (Kenzi et al.,<br />
2009). Ce processus définit les phases, les activités et les artéfacts pour transformer les exigences<br />
métier en termes d‟un ensemble de services flexibles et adaptables. La spécificité d‟un tel<br />
processus consiste en l‟identification des services en partant des modèles des cas d‟utilisation et<br />
en se basant sur un ensemble de règles de refactoring capables de faire les correspondances entre<br />
les cas d‟utilisations et les services (correspondance binaire, fusion/décomposition, etc). Ce<br />
processus de développement qui s‟inscrit dans le cadre de l‟approche MDA permet l‟élaboration<br />
des modèles et de gérer la transition d‟un modèle à un autre via des transformations de modèles.<br />
Ainsi, après l‟élaboration des modèles métier à base de service multivues, nous avons défini<br />
deux transformations pour la génération de code :<br />
La première transformation permet la génération de la description de chaque service multivues<br />
composant le PIM d‟un système donné. En effet, nous avons défini une légère extension du<br />
standard WSDL pour la description de service multivues, appelé MVWDL. Cette extension de<br />
WSDL permet la représentation en XML aussi bien des interfaces des services que les<br />
informations concernant les acteurs interagissant avec le service. Pour permettre l‟automatisation<br />
de la génération du code du MVWSDL, nous avons défini un ensemble de règles de<br />
transformation en utilisant le langage ATL comme langage de transformation de modèles.
5<br />
Introduction générale<br />
La deuxiéme transformation concerne la génération du code constituant l‟implémentation de<br />
chaque service multivues selon la plateforme cible J2EE.<br />
Chaque transformation de modèles a été décomposée en deux étapes : la première concerne la<br />
spécification de correspondances. La deuxième permet la définition des transformations en se<br />
basant sur le langage de transformation de modèle ATL. En fait, la spécification de<br />
correspondances vise à spécifier les correspondances entre les éléments des métamodèles source<br />
et cible, et la définition de transformations permet de décrire en détail et d‟exécuter les étapes de<br />
la transformation d‟un modèle en un autre modèle en respectant la spécification de<br />
correspondances. Cette approche va dans le sens même de la vision de l‟OMG pour développer<br />
les systèmes informatiques à savoir la séparation des préoccupations. En fait, une spécification<br />
de correspondances peut être vue comme un PIM et une définition de transformations comme un<br />
PSM. Les deux décrivent la même chose mais à des niveaux différents.<br />
Une fois générées la description de chaque service multivues et son implémentation, nous avons<br />
illustré comment faire l‟adaptation des services en prenant en compte les acteurs interagissant<br />
avec le service suivant l‟architecture SOA.<br />
Présentation de ce mémoire<br />
Le travail réalisé est présenté dans ce mémoire selon une structure de quatre chapitres.<br />
Le premier chapitre présente l‟état de l‟art du domaine. Dans un premier temps, nous nous<br />
intéressons plus particulièrement aux approches de modélisation et de conception des systèmes<br />
orientés service. Ensuite, nous présentons les différentes approches permettant l‟adaptation des<br />
systèmes orientés services. Après, nous décrivons les approches MDA de développement des<br />
systèmes orientés services ainsi que les approches MDA pour la prise en compte de l‟utilisateur<br />
des systèmes orientés services. Enfin, nous concluons ce premier chapitre par une synthèse de<br />
l‟état de l‟art en identifiant les fondements de chaque approche.<br />
Le deuxième chapitre expose le profil VSoaML à base des services multivues en identifiant les<br />
stéréotypes de ce profil ainsi que son métamodèle. Chaque stéréotype a été décrit tout en<br />
spécifiant les contraintes y associées. Enfin, nous illustrons la faisabilité de ce profil en se basant
6<br />
Introduction générale<br />
sur une étude de cas concernant le système d‟enseignement à distance.<br />
Le troisième chapitre est dédié à la définition du processus de développement des systèmes<br />
orientés services associé au profil VSoaML. Ce processus définit les phases, les activités et les<br />
artéfacts pour l‟identification, la spécification et l‟implémentation des services multivues.<br />
Le quatrième chapitre présente les aspects applicatifs de ce travail. Il décrit premièrement le<br />
fonctionnement de l‟outil support à VSoaML. Cet outil se base notamment sur les principes et les<br />
standards de l‟ingénierie dirigée par les modèles pour la génération de code à partir des modèles<br />
métiers de haut niveau.<br />
Enfin, nous concluons ce rapport en récapitulant les points forts de notre approche, les aspects<br />
traités et les perspectives de ce travail.
7<br />
Etat de l’art<br />
I. Etat de l’art<br />
I.1.<br />
Introduction<br />
SOC (Service-Oriented Computing) a émergé récemment comme un nouveau paradigme<br />
informatique prometteur pour le développement rapide et à moindre coût des applications<br />
distribuées, interopérables et évolutives (Papazoglou, 2007). SOC se base principalement sur<br />
l‟élément Service et sur l‟architecture orientée service SOA (Service Oriented Architecture).<br />
SOC propose une nouvelle manière de développement des systèmes distribués en se basant<br />
exclusivement sur la composition de services pour la construction d‟applications logicielles<br />
distribuées à grande échelle, évolutives, interopérables et facilement composables.<br />
SOC a introduit plusieurs défis aux différents acteurs s‟intéressant à la construction des<br />
systèmes à base de services. Plus particulièrement, le défi de l‟ingénierie de tels systèmes<br />
(Papazoglou et al., 2008) qui consiste en la définition des approches de modélisation, des<br />
processus, des techniques et outils pour faciliter la construction de ces systèmes en optimisant les<br />
coûts et les délais. La définition de ces approches est d‟une importance capitale pour la réussite<br />
de projets de développement des SOSs (Service Oriented Systems).<br />
Par ailleurs, la prise en compte de l‟utilisateur et de son environnement est d‟une importance<br />
capitale pour la construction de systèmes logiciels surtout avec l‟émergence de l‟informatique<br />
sensible aux contextes (Dey, 2000). Cette dernière insiste sur la prise en compte de l‟utilisateur<br />
final pour le développement de systèmes logiciels.<br />
L‟objectif de ce premier chapitre est de :<br />
(1) étudier les différentes approches de modélisation des systèmes orientés services<br />
(2) étudier certaines approches visant la prise en compte de l‟utilisateur dans les systèmes<br />
orientés services<br />
(3) étudier les approches MDA de développement des systèmes orientés services qui prennent en
8<br />
Etat de l’art<br />
compte de l‟utilisateur des ces systèmes.<br />
Ce chapitre est structuré en plusieurs sections. Après la présente introduction, la deuxième<br />
section a pour objectif de définir brièvement les concepts et les termes en relation avec le<br />
paradigme SOC tels que : le concept de service, l‟architecture orientée service (SOA), un<br />
système orienté service ainsi que la technologie des services Web. La troisième section traite les<br />
approches de modélisation des systèmes orientés services. La quatrième section traite les<br />
approches à même de permettre la prise en compte des différentes dimensions des besoins des<br />
utilisateurs. La cinquième section met l‟accent sur les approches MDA pour le développement<br />
des systèmes orientés services. Enfin, nous clôturons ce chapitre en dressant un bilan comparatif<br />
des différentes approches étudiées.<br />
I.2.<br />
Systèmes Orientés Services (SOS) : concepts et définitions<br />
Dans le cadre de cette thèse, nous définissons SOA comme un style d‟architecture permettant le<br />
développement des applications en couplage faible à travers des standards, et indépendamment<br />
des protocoles et plateformes. L‟architecture orientée services définit trois acteurs : le<br />
fournisseur de services, l‟annuaire de services et le client de service. Elle définit aussi trois<br />
opérations standards : find, bind et publish (Papazoglou, 2007). Le fournisseur de services qui<br />
possède l‟implémentation de service procède à la publication de la description du service dans un<br />
annuaire de services. Ce dernier contient l‟ensemble des descriptions de services publiés par les<br />
différents fournisseurs de services. Il fournit les moyens nécessaires pour la publication et la<br />
découverte des services. Le client de service pour un besoin donné, recherche dans l‟annuaire le<br />
service qui lui convient.<br />
Nous définissons aussi un Système Orienté Service (SOS par la suite) comme étant un système<br />
qui se constitue principalement des services et se base sur l‟architecture SOA comme un style<br />
architectural.<br />
La technologie des services web constitue une implémentation prometteuse de l‟architecture<br />
SOA. Un service Web est défini selon le W3C (W3C, 2004):<br />
«Un service Web est un système logiciel identifié par un identificateur uniforme de ressources
9<br />
Etat de l’art<br />
(URI), dont les interfaces publiques et les liens (binding) sont définis et décrits en XML. Sa<br />
définition peut être découverte dynamiquement par d‟autres systèmes logiciels. Ces autres<br />
systèmes peuvent ensuite interagir avec le service Web d‟une façon décrite par sa définition, en<br />
utilisant des messages XML transportés par des protocoles Internet ».<br />
La technologie des services web se base principalement sur les protocoles et les standards<br />
suivants : SOAP, WSDL et UDDI.<br />
SOAP est le protocole d‟échange de messages permettant d‟interagir avec les<br />
services Web. Ces messages sont délivrés sous la forme de documents XML<br />
qui sont structurés par : une entête contenant les informations non<br />
fonctionnelles liées au message telles que la sécurité ainsi qu‟un corps<br />
contenant les données métiers du domaine de l‟application. SOAP est<br />
générique et extensible puisque les autres spécifications sont définies par<br />
dessus en définissant par exemple de nouveaux entêtes (sécurité, garantie de<br />
livraison). Ce protocole n‟est pas lié à un type particulier de protocole de<br />
transport de données, mais il est fréquent qu‟il soit associé à HTTP ou SMTP.<br />
WSDL est le standard basé sur XML permettant de décrire les services Web.<br />
Il permet de générer des documents structurés en deux parties : une partie<br />
abstraite décrivant l‟interface fonctionnelle du service en termes d‟opérations<br />
et de messages, ainsi qu‟une partie concrète qui contient les détails des<br />
protocoles à utiliser et de l‟adresse physique des opérations.<br />
UDDI est une spécification technique définissant un registre permettant la<br />
publication et la découverte des services Web. Un registre UDDI est un<br />
registre basé sur XML qui contient des informations à propos d‟entités<br />
d‟affaire fournissant des services Web ainsi que des métadonnées concernant<br />
ces services (informations techniques ou légales). En outre, UDDI spécifie<br />
plusieurs API pour interagir avec le registre, demander ou publier un service.<br />
I.3.<br />
SOS : Approches de modélisation<br />
Aujourd'hui, le monde industriel et académique s‟intéresse de plus en plus à la modélisation des<br />
systèmes orientés services indépendamment des plates-formes technologiques ou des langages de
10<br />
Etat de l’art<br />
programmation. La modélisation est d‟une importance capitale pour le développement des SOSs<br />
(Papazoglou et al., 2008) dans la mesure où elle définit les éléments de modélisation capables de<br />
représenter de tels systèmes à un haut niveau d‟abstraction.<br />
Dans cette section, nous illustrons différentes approches de modélisation des systèmes orientés<br />
services telles que les approches à base du « service component » (Stojanovic, 2004) (Zhang,<br />
2006). Nous présentons aussi le Service Component Architecture (SCA) (Biesiegel et al. 2005)<br />
comme un ensemble de spécifications pour la modélisation des systèmes orientés services<br />
indépendamment des technologies et des standards. Finalement, nous présentons des travaux<br />
définissant des profils UML pour l‟analyse/conception des systèmes orientés services (Johnston,<br />
2006) (Amir et al., 2004) (López Sanz et al., 2007) (Ermagan et al., 2007) (Benatallah et al.,<br />
2009).<br />
I.3.1. Approches à base de « Service Component »<br />
Zhang et al. (Zhang et al., 2006) ont introduit un framework de modélisation des systèmes<br />
orientés services. Ce framework se base sur le concept de « service component » permettant<br />
l‟analyse/conception des systèmes orientés service. Le « service component » est traité comme<br />
étant une entité de modélisation de première classe permettant de capturer des unités<br />
fonctionnelles relatives à des services abstraits. Le «service component » possède plusieurs<br />
interfaces découvrables et accessibles à travers le réseau. Chaque « service component » est<br />
autonome, auto-descriptif et peut exposer et délivrer des fonctionnalités à d‟autres «service<br />
component » à travers des interfaces sans se soucier des détails d‟implémentations.<br />
Le «service component » est utilisé pour la description de la structure d‟un système loin de toute<br />
technologie ou plate-forme (intergiciel, système d‟exploitation, architecture matérielle, etc.).<br />
La figure 1 illustre le métamodèle du « service component ». Le métamodèle est présenté dans le<br />
but d‟assurer l‟interopérabilité et l‟intégration des systèmes orientés service. Le méta-modèle du<br />
« service component » se compose des éléments suivants :<br />
Specification déclare les interfaces du service et les contrats du service. Une<br />
déclaration d‟interfaces spécifie les ports du service et possède des propriétés<br />
fonctionnelles et non fonctionnelles et les contraintes associées. Le contrat du
11<br />
Etat de l’art<br />
service guide le consommateur à utiliser le service. Il spécifie le rôle que le<br />
« service component » doit jouer et il inclut les informations de configuration<br />
qui spécifient les versions des services, les pré-conditions, les post-conditions<br />
et les conditions de coordination. Ainsi, elle facilite la modification, le<br />
remplacement, et l‟évolution du service.<br />
Figure 1–Métamodèle du “service component” (Zhang et al., 2006)
12<br />
Etat de l’art<br />
Contents représente l’implémentation du composant service avec un langage<br />
donné (C, C#, Java, etc.). Les détails de cette implémentation sont invisibles au<br />
consommateur de ce service ainsi qu‟à l‟environnement extérieur.<br />
Le contexte définit l‟environnement dans lequel le service existe.<br />
La chorégraphie permet d‟indiquer si le service component est un service<br />
composite ou pas. Le patron de composition est fourni dans la spécification de<br />
la chorégraphie.<br />
Dans le même objectif que (Zhang et al, 2006), (Stojanovic et al., 2004) proposent une approche<br />
pour la modélisation et la conception des solutions SOA. Cette approche se base aussi<br />
principalement sur le concept « service component» et sur des extensions apportées au langage<br />
UML.<br />
Le « component service » est défini dans le cadre de cette approche, comme une entité logicielle<br />
autonome qui réalise des services à travers des interfaces de façon contractuelle sans exposer sa<br />
réalisation interne.<br />
Pour la modélisation et la conception des solutions SOA, deux types de « service component »<br />
de différente granularité ont été définis :<br />
Business Service Component (BSC) qui est un type de « service component »<br />
fournissant des services et des opérations significatifs, perçus avec une valeur<br />
mesurable dans le contexte Business. Il permet de réaliser des parties d‟un<br />
processus métier en coordination et en coopération avec d‟autres BSC pour<br />
réaliser des objectifs business plus compliqués.<br />
Atomic Service Component (ASC) qui est un type de « service component »<br />
fournissant des opérations de granularité fine n‟ayant pas une réelle valeur<br />
Business. Chaque ASC collabore et coordonne avec d‟autres ASC pour fournir<br />
un comportement métier représenté par un BSC qui les encapsule.<br />
I.3.2. Approches à base de « Service Component Architecture » (SCA)<br />
Le Service Component Architecture (SCA) (Biesegel et al., 2005) est un ensemble de<br />
spécifications décrivant un modèle de composant pour développer des applications SOA. Les
13<br />
Etat de l’art<br />
applications basées sur SCA sont en fait un assemblage de composants. Chaque composant<br />
modélise une partie de la logique métier et peut dépendre de services fournis par d‟autres<br />
composants.<br />
L‟objectif principal de SCA est de décrire des applications SOA en se focalisant sur la logique<br />
métier indépendamment des standards, des plateformes et des langages utilisés (i.e. Java, C#,<br />
BPEL, etc). Ainsi, avec SCA, les services se traitent tous de la même manière quelles que soient<br />
leurs caractéristiques techniques. Le fait de pouvoir s'abstraire des considérations techniques des<br />
applications, simplifie énormément leur conception en utilisant les services.<br />
Le modèle de SCA proposé, se focalise essentiellement sur les interfaces pour représenter les<br />
fonctionnalités du composant fournies à d‟autres composants. Il se base aussi sur les références<br />
pour désigner les interfaces requises que le composant peut utiliser pour répondre aux besoins de<br />
ses utilisateurs. Figure 2 présente le modèle de composant SCA.<br />
Service<br />
Component<br />
Figure 2–Composant SCA<br />
références<br />
La Figure 3 présente un modèle d‟un système d‟une agence de voyages, représenté par quatre<br />
CarReservation<br />
BookTravel<br />
HotelReservation<br />
AirReservation<br />
Figure 3–Modélisation à base de SCA du système de l’agence de voyage<br />
services avec leurs interfaces fournies et leurs références. Ce système est représenté sans tenir
14<br />
Etat de l’art<br />
compte des détails des plates-formes technologiques qui sont prises ultérieurement dans le cycle<br />
de développement des systèmes orientés services à base de SCA.<br />
I.3.3. Approches à base de profils UML<br />
UML est un langage de modélisation destiné à un grand nombre de domaines. Pour l‟adapter à<br />
un domaine particulier, il est nécessaire de définir des extensions (stéréotypes, valeurs étiquetées,<br />
contraintes) structurées et regroupées dans ce qu‟on appelle un profil. Dans le contexte de SOA,<br />
plusieurs profils ont été proposés pour la spécialisation d‟UML en vue de la modélisation des<br />
applications SOA. Dans cette section, nous présentons principalement trois profils : le profil<br />
défini par (Johnston et al., 2006), le profil défini par (López-Sanz et al., 2007) ainsi que le profil<br />
SoaML proposé par l‟OMG.<br />
Johnston et al. (Johsnston et al., 2006) ont proposé un profil UML2.0 pour la modélisation des<br />
services et des solutions orientées services. Ce profil fournit un langage commun pour la<br />
modélisation des services. Il définit aussi un ensemble d‟activités le long du cycle de vie du<br />
développement tout en fournissant un ensemble de vues des services aux différents stakeholders.<br />
De telles vues permettent de modéliser une perspective du système correspondant à un point de<br />
vue donné (stakeholder). Ainsi, le profil fournit les fonctionnalités nécessaires à l‟architecte pour<br />
organiser les services le plus tôt dans le cycle de développement en utilisant les partitions<br />
logiques pour la description de l‟ensemble de services à l‟échelle de l‟entreprise. Cette vue est<br />
raffinée par les concepteurs qui ont pour mission le développement des spécifications de services<br />
aussi bien structurelles que comportementales. Les spécifications de services jouent un rôle de<br />
contrat entre les fournisseurs de services et les clients de services. La vue message permet aux<br />
concepteurs de réutiliser les modèles d‟informations pour la définition des données manipulées<br />
par le service. La Figure 4 présente les différents stéréotypes définis ainsi que leurs relations.
15<br />
Etat de l’art<br />
Figure 4–Métamodèle du profil UML (Johsnston et al., 2006).<br />
Le tableau 1 présente chaque stéréotype, sa description ainsi que leurs métaclasses sources<br />
UML 2.0 :<br />
Nom du stéréotype Metaclasse Commentaire<br />
Message Class Ce stéréotype définit les<br />
structures de données<br />
échangées. Il spécifie aussi la<br />
propriété “Encoding” pour<br />
spécifier l‟encodage SOAP ou<br />
RPC.<br />
Message Attachment Property Ce stéréotype indique si le<br />
contenu d‟un message est un<br />
attachement ou pas<br />
Service Port Ce stéréotype permet de<br />
déterminer le couple<br />
specification/binding<br />
Service Channel Connector Ce stéréotype décrit une<br />
connexion entre services.<br />
Service Collaboration Collaboration Ce stéréotype permet la<br />
modélisation<br />
du<br />
comportement d‟un ensemble
16<br />
Etat de l’art<br />
de services qui coopèrent.<br />
Service Consumer Classifier Ce stéréotype désigne un<br />
consommateur de service.<br />
Service Gateway Port Ce stéréotype permet la<br />
modélisation d‟une connexion<br />
entre partitions<br />
Service Partition Node Ce stéréotype définit un<br />
groupement logique ou<br />
physique d‟un ensemble de<br />
services<br />
Service Provider<br />
Class<br />
Ce stéréotype permet la<br />
modélisation d‟un fournisseur<br />
d‟un ou de plusieurs services<br />
Service Specification Class, Interface Ce stéréotype permet la<br />
spécification des opérations et<br />
leurs messages associés qui<br />
définissent le service.<br />
Tableau 1–Stéréotypes et métaclasse de base<br />
Dans le même objectif (López-Sanz et al., 2007) (López Sanz et al. 2008) ont proposé des profils<br />
UML pour la modélisation des systèmes orientés services. Ainsi, Lopez-Sanz et al. (López-Sanz<br />
et al., 2007) ont défini plusieurs stéréotypes permettant la spécification des systèmes orientés<br />
services. Le tableau 2 présente les stéréotypes définis, les métaclasses UML de base, les concepts<br />
définis ainsi que leurs sémantiques.<br />
Notation Concept associé Métaclasse UML de Sémantique<br />
base<br />
Outer provider Package Un fournisseur de<br />
service externe<br />
Business contract Dependency Le contrat établi<br />
entre fournisseurs de<br />
services<br />
System Front-End Classifier Les composants qui<br />
interagissent avec<br />
l‟utilisateur<br />
Composite service Classifier Un service composé<br />
d‟autres services<br />
Basic service Classifier Ce stereotype<br />
représente une<br />
fonctionnalité<br />
basique
17<br />
Etat de l’art<br />
Orchestrator service Classifier Ce stéréotype joue le<br />
rôle d‟un<br />
orchestrateur dans<br />
une chorégraphie<br />
Service contract Association Class Ce stéréotype joue le<br />
rôle d‟un connecteur<br />
entre service<br />
Restriction clause Classifier Les pre/post<br />
conditions qui<br />
doivent être vérifiées<br />
Service operation Property Une fonctionnalité<br />
atomique d‟un<br />
service<br />
Tableau 2–Profil PIM4SOA<br />
La figure 5 présente le métamodèle du profil défini. Ce métamodèle définit la structure des<br />
différents stéréotypes ainsi que leurs associations.<br />
Figure 5–Métamodèle du profil PIM4SOA (López-Sanz et al., 2007)<br />
Pour sa part, L‟OMG est dans la phase de la standardisation d‟un profil UML appelé SoaML<br />
(Service oriented architecture Modeling Language) (OMG, 2009) dans l‟objectif de la<br />
modélisation des applications SOA. SoaML s'intéresse à l'architecture et non pas aux composants
18<br />
Etat de l’art<br />
techniques sous-jacents. Son objectif est de fournir aux utilisateurs du langage UML, les<br />
moyens de modéliser une architecture orientée services -comprenant des notions de clients et de<br />
fournisseurs de services, de collaboration de services ainsi que la notion de contrats. Le profil<br />
SoaML définit plusieurs stéréotypes. Le tableau 3 illustre les stéréotypes SoaML ainsi que leur<br />
sémantique associé.<br />
Stéréotype Métaclasse UML Sémantique<br />
Agent Class Agent est une classification<br />
d‟entités autonomes qui<br />
s‟adaptent et interagissent<br />
avec leur environnement. Les<br />
agents en SoaML sont les<br />
participants fournissant et<br />
utilisant les services.<br />
Collaboration Collaboration Collaboration permet la<br />
description d'un patron<br />
d'interaction entre les<br />
différents rôles.<br />
Attachment Property Attachment désigne une partie<br />
d‟un Message qui est un<br />
attachement.<br />
CollaborationUse CollaborationUse CollaborationUse montre<br />
comment une collaboration<br />
(ServiceContracts et<br />
ServiceArchitectures) est<br />
accomplie.<br />
MessageType Class, DataType, Signal MessageType permet la<br />
spécification des informations<br />
échangées entre les<br />
fournisseurs et les<br />
consommateurs de services.<br />
Expose Dependency Expose désigne une<br />
dépendance qui indique si un<br />
Capability doit être exposé ou<br />
pas.<br />
Milestone Comment Milestone permet d‟indiquer<br />
le progrès dans les<br />
comportements ayant une<br />
durée considérable.<br />
Participant Class participant désigne un<br />
fournisseur ou un<br />
consommateur de service
19<br />
Etat de l’art<br />
Provider Interface, Class Provider modélise le type<br />
d‟un fournisseur de services.<br />
Consumer Interface, Interface Consumer modélise un type<br />
d‟un consommateur de<br />
service.<br />
Request Port Request désigne un port qui<br />
définit un point de connexion<br />
à travers lequel un participant<br />
répond à ses besoins via la<br />
consommation des services<br />
fournis par d’autres<br />
fournisseurs.<br />
Service Port Service représente un port qui<br />
définit le point de connexion<br />
par lequel un participant offre<br />
ses capacités à ses clients.<br />
Capability Class Capability dénote une<br />
capacité d‟un service donné.<br />
Service Contract Collaboration ServiceContract est la<br />
formalisation de l‟échange<br />
d‟information, des biens et des<br />
obligations entre les parties<br />
définissant un service.<br />
Service Interface Class, Interface ServiceInterface fournit la<br />
définition d‟un service. Il<br />
définit la spécification de<br />
l‟interaction «Service» ou<br />
«Request»<br />
ServiceChannel Connector ServiceChannel désigne un<br />
chemin de communication<br />
entre requêtes et services<br />
Services Architecture Collaboration ServiceArchitecture définit<br />
une vue de haut niveau d‟une<br />
architecture orientée service<br />
qui définit comment un<br />
ensemble de participants<br />
travaillent ensemble pour<br />
atteindre un objectif donné en<br />
fournissant et utilisant des<br />
services.<br />
Tableau 3–Stéréotypes du profi l SoaML
20<br />
Etat de l’art<br />
I.3.4. Discussion<br />
Les approches de modélisation des SOS jouent un rôle très important dans la construction des<br />
SOS en définissant les concepts et les formalismes/notations nécessaires pour la description de<br />
tels systèmes indépendamment des technologies et des standards. Elles permettent de décrire les<br />
aspects structurels et dynamiques des SOS, ce qui facilite la compréhension, la vérification la<br />
validation et la simulation de tels systèmes. Tout de même, le développement des SOSs se base<br />
principalement sur la technologie des services web qui définit un ensemble de technologies<br />
(XML, etc.) et de standards (e.g., WSDL, UDDI, BPEL4WS, etc.). Cependant, pour faciliter et<br />
rationaliser le développement de tels systèmes, il faut les décrire à un haut niveau d‟abstraction<br />
vu la diversité des profils des acteurs (les analystes métier, les architectes, les développeurs, les<br />
utilisateurs finals, etc.) s‟intéressant à leur développement sans en comprendre nécessairement<br />
les détails technologiques.<br />
Par ailleurs, les différentes approches de modélisation proposées ne permettent pas de rendre<br />
productifs les modèles élaborés. Ces derniers permettent de représenter des SOS à différents<br />
niveaux d‟abstraction mais ne facilitent pas la génération automatique des artefacts d‟un SOS<br />
(Description de services WSDL, Implémentation de services en Java ou C#, Composition de<br />
services BPEL, Fichiers de configuration, etc.) en se basant sur des outils logiciels appropriés.<br />
Aussi, ces différentes propositions ne prennent pas en compte l’aspect multidimensionnel des<br />
besoins des acteurs interagissant avec le service. En effet, un service en SOC interagit avec<br />
plusieurs clients de services. Chaque client de service a un profil donné avec des besoins<br />
différents. Ainsi, les approches de modélisation doivent tenir compte de cette réalité pour mieux<br />
la représenter.<br />
I.4.<br />
SOS : Concepts d’adaptation<br />
L‟utilisateur final joue un rôle crucial dans le développement des systèmes d‟information<br />
orientés services. En effet, c‟est lui qui exploite et utilise le système. Pour prendre en compte ses<br />
besoins, plusieurs approches définissant différents mécanismes et concepts, ont été proposées.<br />
Ainsi, nous présentons dans cette section, en premier lieu, les approches utilisant les vues pour la<br />
prise en compte des différents aspects des besoins des utilisateurs tels que l‟utilisation des vues
21<br />
Etat de l’art<br />
pour l‟adaptation des services au contexte de l‟utilisateur (Benslimane et al., 2005), la gestion de<br />
ses droits d‟accès (Fink et al., 2003) et l‟adaptation des services aux types des utilisateurs de<br />
service (Fuchs, 2004). Dans un deuxième lieu, nous présentons les approches qui se basent sur la<br />
variabilité de service pour la prise en compte de l‟utilisateur final (Chang et al., 2007a). En<br />
troisième lieu, nous présentons les approches permettant l‟adaptation de services se basant sur le<br />
concept de service différencié (Tao et al., 2007a) (Tao et al., 2008). Finalement, nous présentons<br />
autres approches qui définissent des extensions aux standards de la technologie des services web<br />
pour la prise en compte de l‟utilisateur final (lopez-velasco et al., 2005) (Kouadri Mostefaoui,<br />
2006) .<br />
I.4.1. Concept d’adaptation : les Vues<br />
L‟objectif de cette section est de présenter les différents travaux combinant entre le concept de<br />
vue et celui de service pour la prise en compte de l‟utilisateur final. Généralement, les vues sont<br />
largement utilisées dans plusieurs domaines de l‟informatique. Elles sont utilisées dans les<br />
SGBD (Rafanelli et al. 2003), la gestion des connaissances, les workflows, les approches<br />
orientées objets, etc. Aussi, notre équipe a déjà développé des méthodes en se basant sur le<br />
concept de vue telles que la méthode VBOOM (Kriouile, 1995) ou l‟approche VUML (Nassar et<br />
al., 2005). De même, pour accompagner l‟évolution de l‟ingénierie logicielle vers les approches<br />
à base de composants (Szyperski, 2002), un modèle du composant multivues (El Asri, 2005) a<br />
été proposé.<br />
Dans cette section, nous nous intéressons tout particulièrement aux approches se basant sur les<br />
vues pour la prise en compte de l‟utilisateur final pour le développement des SOSs.<br />
I.4.1.1<br />
Vues à base de l’adaptation par rôles<br />
Les vues ont été largement utilisées pour l‟adaptation des services aux rôles des utilisateurs.<br />
Dans cette optique, Torsten et al. (Fink et al. 2003) proposent une approche à base de vue pour la<br />
gestion des droits d‟accès de chaque acteur interagissant avec un service donné. Cette approche<br />
se base sur un modèle appelé VBAC (View Based Access Control) et sur un langage déclaratif<br />
permettant de spécifier les différentes vues. Nous commençons par présenter l‟exemple<br />
d‟application avant d‟expliquer les concepts de base de cette approche.
22<br />
Etat de l’art<br />
(1) L’exemple d’application<br />
« Video central » est une application qui repose sur un ensemble de services web développé par<br />
IBM (IBM, 2002). Cette application définit six services web représentés par le diagramme de<br />
classe UML dans la figure 6 suivante.<br />
CustomerRentedList<br />
processAddRequest(loginBusinessGuid,loginBusinessPassword,userID,titleIDList):int<br />
processQueryRequest(loginBusinessID,loginBusinessPassword,customerGuid):String<br />
WishList<br />
processAddRequest(businessGuid,registrationKey,customerGuid,titleList):int<br />
processQueryRequest(businessGuid,registrationKey,customerGuid,maxNumRecords):String<br />
processRemoveRequest(businessGuid,registrationKey,customerGuid,titleList):int<br />
MovieSearch<br />
processRequest():String<br />
Customer<br />
CustomerInfraction<br />
processAddRequest(loginBusinessID,loginBusinessPassword,firstName,lastName):int<br />
processQueryRequest(loginBusinessID,loginBusinessPassword,customerGUID,beginDate,endDate):String<br />
BusinessRegistration<br />
processRegisterRequest():int<br />
Staff<br />
CustomerRegistration<br />
getCustomerGUID(loginBusinessID,loginBusinessPassword,firstName,lastName):int<br />
processRegisterRequest(loginBusinessID,loginBusinessPassword,firstName,lastName):int<br />
Figure 6 –Diagramme de classe et les rôles de l’application «video central » (Fink et al, 2003)<br />
« Video central » se compose de six services web représentés sous forme de diagramme de<br />
classes UML : CustomerRentedList, MovieSearch, BusinessRegistartion, CustomerRegistration<br />
et CustomerInfraction. Ce diagramme illustre aussi les rôles qui interagissent avec les différents<br />
services web : Customer et Staff. Chaque rôle a ses propres besoins sur les services. En d‟autres<br />
termes, chaque acteur a ses droits d‟accès sur un service donné. En effet, dans le cadre de cet<br />
exemple, le rôle Customer ne peut pas exécuter les opérations : processRegisterRequest, ou<br />
getCustomerGUID réservées seulement au rôle Staff.<br />
(2) Le modèle VBAC et le langage VPL<br />
VBAC est un modèle de contrôle d‟accès conçu pour supporter la conception et la gestion des<br />
politiques de contrôle d‟accès dans les systèmes distribués. VBAC (Fink et al.,2003) est une<br />
extension du modèle de contrôle d‟accès à base de rôles (RBAC) par les concepts de vue et de<br />
schéma. Une vue regroupe les permissions ou les interdictions pour la gestion de l‟accès à des<br />
objets (un fichier, une méthode,…). Chaque vue est associée à des rôles. Un sujet (un utilisateur,
23<br />
Etat de l’art<br />
un processus,…) peut accéder à un objet s‟il a un rôle auquel une vue est assignée. Si la vue<br />
n‟existe pas pour un rôle donné, le sujet ne peut pas accéder à l‟objet en question. Un schéma<br />
spécifie les assignations dynamiques aux différents rôles. Ces assignations sont effectuées<br />
automatiquement à chaque invocation d‟une opération donnée.<br />
Dans le but de spécifier les politiques VBAC, un langage déclaratif appelé VPL (View Policy<br />
Language) a été défini. VPL est utilisé pour spécifier les rôles, les vues et les schémas. Les rôles<br />
sont définis dans une déclaration en utilisant le mot clé role. Les schémas sont définis en utilisant<br />
le mot clé schema.<br />
La clause role définit les différents rôles dans la politique ainsi que leurs vues initiales. La figure<br />
7 montre la définition des rôles pour l‟application «Video central».<br />
role customer<br />
staff holds BusinessRegistration<br />
view BusinessRegistration controls BusinessRegistration restricted to staff<br />
{ processRegisterRequest }<br />
view CustomerRegistration controls CustomerRegistration restricted to staff<br />
{<br />
getCustomerGUID(loginBusinessID, , , ) if caller = loginBusinessID<br />
processRegisterRequest(loginBusinessID, , , ) if caller = loginBusinessID<br />
}<br />
view CustomerInfraction controls CustomerInfraction restricted to staff {<br />
processAddRequest( loginBusinessID, , ) if caller = loginBusinessID<br />
processQueryRequest( loginBusinessID, , , , ) if caller = loginBusinessID<br />
}<br />
Figure 7–Déclaration des vues en VPL (Fink et al., 2003).<br />
La figure 7 montre la déclaration de deux rôles : Client et Staff. Le rôle staff possède initialement<br />
la vue BusinessRegistration (mot clé holds). Le rôle Client n‟a initialement aucune vue. Une vue<br />
VPL définit les autorisations à un sous-ensemble d‟opérations d‟un seul service web. Une vue est<br />
référencée par la clause de contrôle. Par exemple, la vue BusinessRegistration donne la<br />
permission pour invoquer l‟opération processRegisterRequest du service web<br />
BusinessRegistration. Une Vue VPL peut être statiquement restreint à certains rôles.<br />
I.4.1.2<br />
Vues à base de l’adaptation contextuelle<br />
Pour adapter les services aux types de leurs utilisateurs ou à leur contexte, plusieurs approches<br />
ont adopté les vues. Ainsi, (Maamar et al. 2005) (Benslimane et al. 2005) présentent une
24<br />
Etat de l’art<br />
approche à base de vues pour faire le suivi de l‟exécution des services web composites et pour<br />
prendre les mesures correctives dans le cas où l‟exécution de services ne se conforme pas aux<br />
préférences des utilisateurs. Le concept de vue est défini dans cette approche comme étant un<br />
instantané dynamique de la spécification des services web composites selon un contexte donné.<br />
La vue permet de mettre en évidence ce qui est attendu selon les préférences des utilisateurs de<br />
ce qui s‟est produit effectivement selon les contraintes de l‟environnement.<br />
La spécification de service composite est effectuée par un diagramme de services (Service Chart<br />
Diagram) (SCD) (Maamar et al., 2003). Un SCD est une extension du diagramme d‟état UML en<br />
y ajoutant les informations du contexte de service ainsi que la localisation et le temps pour mieux<br />
manipuler les préférences des utilisateurs.<br />
Le contexte associé à une vue donnée se décompose en trois types d‟informations :<br />
Les informations du contexte de l‟utilisateur (U-Context) telles que sa<br />
localisation, ses activités,<br />
Les informations du contexte d‟un service web (WS-Context) telles que ses<br />
capacités et ses participations dans d‟autres compositions.<br />
Les informations du contexte de la composition de services (CS-context) telles<br />
que l‟état d‟exécution d‟une composition de services.<br />
La spécification de services composite est soit initiale ou dérivée. Un concepteur crée une<br />
spécification initiale qui inclut la chronologie de services et les dépendances entre eux. Le<br />
concepteur obtient une spécification dérivée en appliquant une vue, qui est associée à un<br />
contexte donné, sur la spécification initiale. La spécification dérivée peut être, à son tour, initiale<br />
ou dérivée .La figure 8 présente synthétiquement le métamodèle de vue :<br />
Figure 8–Métamodéle de vue (Maamar et al., 2005)
25<br />
Etat de l’art<br />
Par ailleurs, et dans le but d‟adapter les services web à des environnements hétérogènes et à<br />
différents groupes d‟utilisateurs, Fuchs (Fuchs, 2004) adopte le concept de vue pour la définition<br />
d‟un mécanisme appelé «service view». Un «service view» est une définition WSDL spécifiée<br />
pour un groupe d‟utilisateurs à l‟instar de la définition des vues dans les systèmes de gestion de<br />
bases de données où une vue est définie comme une combinaison d‟informations à partir de<br />
plusieurs tables associées à un utilisateur donné. Cette définition WSDL décrit un ensemble<br />
d‟opérations du service, leurs adresses, et le contenu de leurs messages suivant le type des<br />
utilisateurs interagissant avec le service. Dans ce sens, deux types d‟utilisateurs ont été<br />
identifiés : les utilisateurs internes et les utilisateurs externes. En effet, ces deux types<br />
d‟utilisateurs ont leur propre description WSDL.<br />
Les fournisseurs de services doivent créer des descriptions de service qui s‟adaptent aux types<br />
de clients. Pour cela, Fuchs définit une architecture se basant sur deux couches : la couche<br />
« service views » et la couche « rule groups » fournissant une couche d‟adaptation qui permet de<br />
manipuler les descriptions de services en changeant les noms des opérations, leurs<br />
entrées/sorties, leurs adresses ainsi que les différents mécanismes d‟authentification et<br />
d‟autorisation.<br />
Les « service View » sont implémentés en utilisant un langage de script qui permet de modifier<br />
la structure des documents WSDL et de créer de nouvelles descriptions WSDL correspondant<br />
aux besoins des clients bien définis. Ce langage de script se compose d‟un ensemble de<br />
commandes. Chaque commande permet de définir une insertion, une suppression ou à une mise à<br />
jour d‟un élément constituant la description WSDL.<br />
La figure 9 spécifie un ensemble de commande pour la génération des WSDL spécifiques aux<br />
clients de services internes et externes à partir des descriptions WSDL.<br />
<br />
<br />
26<br />
Etat de l’art<br />
location="https://.../ExternalServices"/><br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
…<br />
<br />
<br />
Figure 9–Script de transformation des documents WSDL<br />
Le script de transformation défini, permet à partir d‟un ensemble de fichiers WSDL existants de<br />
générer des WSDL qui correspondent aux besoins des clients internes et des clients externes.<br />
I.4.1.3<br />
Discussion<br />
Les vues sont largement utilisées en informatique pour divers besoins. Dans le cadre de la<br />
technologie des services web, plusieurs travaux ont adopté le concept de vue. Ainsi, Maamar et<br />
al. ont utilisé les vues comme un mécanisme d‟adaptation de services aux contextes des<br />
utilisateurs. Maamar et al. spécifient les services composites en utilisant le SCD pour intégrer les<br />
contraintes de temps et d‟espace dans les diagramme d‟état pour faciliter la dérivation des<br />
spécifications suivant un contexte donné. Cette approche permet l‟adaptation des systèmes à base<br />
de service. Néanmoins, l‟approche ne présente aucune notation ou langage pour la spécification<br />
des aspects structurels d‟un système orienté service, c'est-à-dire la spécification de leurs<br />
interfaces et des modèles de données y associées.<br />
En ce qui concerne (Fink et al. 2003) qui proposent la modélisation des droits d‟accès des<br />
différents utilisateurs dans un système distribué et notamment dans le cas des services web en se<br />
basant sur le diagramme de classe classique. Cependant, le fait de modéliser des applications<br />
orientés services en utilisant le diagramme de classe est inadéquat puisque ni le niveau de<br />
granularité d‟un service, ni son niveau d‟abstraction ne correspondent à celui d‟une classe. En<br />
outre, un service peut modéliser une activité métier et peut participer dans plusieurs processus<br />
métier. Ainsi, le diagramme de classe ne peut en aucun cas représenter un service du moment où<br />
le diagramme de classe n‟est pas pensé pour la modélisation d‟un système orienté service mais<br />
d‟un système orienté objet.
27<br />
Etat de l’art<br />
L‟approche proposée par Fuchs (Fuchs, 2004) pour l‟adaptation des descriptions de services<br />
suivant le type des utilisateurs (interne/externe), ne définit pas un formalisme ou une notation<br />
pour spécifier et développer des systèmes orientés services distribués et à large échelle.<br />
L‟adaptation de services se fait au niveau technologique et non pas au niveau métier, en utilisant<br />
un langage de commande et sur les descriptions WSDL.<br />
I.4.2. Concept d’adaptation : la variabilité de service<br />
I.4.2.1<br />
Description de l’approche<br />
Pour développer des services adaptables aux clients de service, (Chang et al., 2007b) proposent<br />
une approche se basant sur le principe de la variabilité de service. Cette approche définit les<br />
types de variabilité de service ainsi qu‟un processus d‟Analyse/Conception permettant de<br />
développer des services adaptables en se basant sur le concept de variabilité. Ce concept est<br />
largement utilisé dans les PLE (Product Line Engineering). La variabilité se définit en terme de<br />
point de variation et de variant. Un point de variation est un emplacement dans le logiciel où un<br />
changement peut survenir. Le variant est la valeur ou l‟instance qui s‟associe à un point de<br />
variation. La figure 10 illustre les différents types de variabilité ainsi que les différentes couches<br />
logicielles d‟une application SOA concernées (processus métier, services unitaires, interface de<br />
service et les composants de services) :<br />
Globalement, quatre types de variabilité de services ont été définis comme le montre la figure 10<br />
: la variabilité de Workflow, la variabilité de composition, la variabilité de l‟interface et la<br />
variabilité de la logique.<br />
La variabilité de workflow : Un processus business est réalisé à travers une séquence de services<br />
unitaires, appelée Workflow. Une partie de cette séquence peut ne pas être utilisée par certains<br />
consommateurs de services. Aussi, une partie de la séquence d‟activités peut varier d‟un<br />
consommateur à un autre. Ainsi, La variabilité de Workflow est définie comme étant la variation<br />
des workflows des processus business.<br />
La variabilité de la composition : Un processus métier fait la composition de plusieurs services<br />
unitaires (chaque service unitaire réalise une activité donnée) pour répondre aux besoins des
28<br />
Etat de l’art<br />
utilisateurs finals. Pour un service unitaire donné, plusieurs interfaces de services peuvent être<br />
découvertes. Dans ce cas, la variation consiste dans le bon choix de l‟interface qui correspond<br />
aux profils des clients de services. L‟interface choisie dépend des besoins du client de services<br />
interagissant avec le service.<br />
Business<br />
Process<br />
Layer<br />
Business<br />
Process<br />
Business<br />
Process<br />
Business<br />
Process<br />
Workflow<br />
Variability<br />
Unit<br />
Service<br />
Layer<br />
Unit<br />
Service<br />
Unit<br />
Service<br />
Unit<br />
Service<br />
Composition<br />
Variability<br />
Interface<br />
Layer<br />
Interface<br />
Variability<br />
service<br />
Component<br />
Layer<br />
<br />
<br />
<br />
Logic<br />
Variability<br />
Figure 10–Types de variabilité de services (Chang et al., 2007b)<br />
La variabilité de l‟interface : La variabilité de l‟interface se manifeste lorsque l‟interface du<br />
service unitaire ne correspond pas à la description de l‟interface de service publiée dans un<br />
annuaire de service tel que UDDI. Les descriptions de services publiées dans l‟annuaire sont<br />
généralement des descriptions générées à partir des composant services qui sont des<br />
implémentations des services avec des langages donnés (C #, Java, etc.). La variabilité de<br />
l‟interface peut concerner le nom des opérations de services, les types des entrées/sorties, le type<br />
de retour, etc.<br />
La variabilité de la logique : Le composant service contient l‟implémentation des opérations de<br />
service qui réalisent les fonctionnalités du service unitaire. L‟algorithme ou la procédure de<br />
l‟opération peut varier suivant les requêtes des clients. Cette variation est appelée la variabilité
29<br />
Etat de l’art<br />
de la logique.<br />
En se basant sur les types de variabilité définis, Kim et al. (Chang et al., 2007a) définissent un<br />
processus de développement des services adaptables. Le processus définit un ensemble de<br />
phases, d‟activités et d‟artéfacts clés pour le développement des systèmes orientés services<br />
adaptables en tenant compte les utilisateurs finals. Globalement, ce processus définit les<br />
phases suivantes :<br />
Phase 1 : La définition des services cibles<br />
L‟objectif de cette phase est l‟analyse des exigences métiers pour pouvoir définir les processus<br />
métiers qui permettent de répondre aux besoins des utilisateurs finals. Cette phase est réalisée en<br />
trois étapes : l‟acquisition des exigences de services, l‟identification des services cibles et la<br />
définition des workflows des différents processus business. L‟objectif de cette phase est la<br />
production de la spécification des services cibles comme un artéfact caractérisant cette phase.<br />
Cette spécification contient la liste des services cibles, la description des business process et<br />
leurs Worflows associés. Dans cette phase, une variabilité de workflow est associée.<br />
Phase 2 : La définition des services unitaires<br />
L‟objectif principal de cette phase est la conception des services unitaires à partir de l‟artefact de<br />
la phase précédente. La première étape de cette phase consiste à définir les caractéristiques des<br />
services en se basant sur les critères de réutilisation et de cohésion. La deuxième étape de cette<br />
phase est la définition des interfaces des services. Dans cette phase, une spécification de la<br />
variabilité est effectuée.<br />
Phase 3 : la planification de l‟acquisition des composants service<br />
Cette phase a pour finalité la planification de l‟acquisition des implémentations de services. Pour<br />
cela trois scénarios ont été adoptés : l‟utilisation des services publiés dans l‟annuaire,<br />
l‟adaptation des applications traditionnelles ou le développement de nouveaux services. Cette<br />
phase est concernée par deux types de variabilité : la variabilité de la composition et la variabilité<br />
de l‟interface.
30<br />
Etat de l’art<br />
Phase 4 : l‟acquisition des composants services :<br />
L‟objectif de cette phase est de préparer les services web en tenant compte des services<br />
découverts, des services adaptés à partir des applications existantes ou des nouveaux services<br />
web développés. Dans cette phase, la variabilité de la logique est associée aussi bien au niveau<br />
de l‟analyse qu‟au niveau de la conception.<br />
Phase 5 : la composition de services<br />
L‟objectif principal de cette phase est la définition de la composition de services. Cette<br />
composition est dérivée à partir des artefacts des phases précédentes et elle est représentée par le<br />
langage de spécification de composition BPEL. Dans cette phase, la variabilité est affinée ainsi<br />
que la finalisation de l‟architecture globale du système.<br />
I.4.2.2<br />
Discussion<br />
Chang et al.(Chang et al., 2007a) proposent le concept de la variabilité de service pour le<br />
développement des service personnalisables et adaptables aux différents profils des clients de<br />
services. Chang et al. définissent un processus de développement définissant activités, phases et<br />
artefacts permettant l‟identification, la spécification et l‟implémentation des services en prenant<br />
en compte la variabilité de services tout au long du cycle de vie de développement d‟un SOS.<br />
L‟approche permet une meilleure séparation des préoccupations fonctionnelles entre les<br />
différents clients de service et une prise en compte de la diversité des profils des utilisateurs<br />
interagissant avec le service. Cependant, cette approche ne définit ni une notation ni un outil<br />
logiciel associé en vue de rendre productif et rationnel l‟activité du développement des systèmes<br />
orientés services adaptables.<br />
I.4.3. Concept d’adaptation : la différenciation de service<br />
I.4.3.1<br />
Description de l’approche<br />
L‟adaptation de services aux profils des utilisateurs est un défi majeur pour le développement des<br />
SOSs. Dans cette optique, (Tao et al. , 2007a) (Tao et al. , 2008) proposent une approche<br />
d‟adaptation en se basant sur le concept de la différentiation de service. La différenciation de<br />
service, à l‟instar de la différenciation de services dans le domaine du réseau (i.e., l‟approche
31<br />
Etat de l’art<br />
DiffServ), consiste en la prise en compte de la diversité des profils des utilisateurs (localisation,<br />
contexte, etc.) interagissant avec un service donné. En effet, le résultat de l‟exécution du même<br />
service ainsi que la qualité requise différent d‟un utilisateur à un autre.<br />
Pour la conception des services différenciés et adaptables, l‟approche définie repose sur la<br />
séparation des activités business qui sont applicables dans toutes les circonstances et exécutées<br />
par tous les utilisateurs de service, des activités business spécifiques à des groupes d‟utilisateurs<br />
particuliers (profils particuliers). En fait, les approches d‟adaptation de services existantes se<br />
basent principalement sur l‟implémentation des aspects d‟adaptation comme des conditions<br />
d‟exécutions dans le code de chaque processus métiers implémentant le service. De telles<br />
approches rendent plus complexes la flexibilité, la maintenance, l‟extensibilité et l‟adaptabilité<br />
des services. La figure 11 partie (a) illustre le fonctionnement des approches d‟adaptation des<br />
services existantes.<br />
Pour répondre aux limites de ces approches, Aries Tao Tao et al. proposent une approche de<br />
conception de services adaptables en se basant sur les étapes suivantes :<br />
1. L‟utilisation « des processus métiers noyau » (Core Business Process) (CBP) pour la<br />
représentation des activités génériques requises par tous les utilisateurs indépendamment des<br />
contextes d‟utilisations. Le CBP qui implémente les fonctionnalités accessibles à tous les<br />
utilisateurs, est formalisé par une machine à états finis.<br />
2. La séparation des contextes d’utilisation du “processus métier noyau”. En effet, différents<br />
groupes d‟utilisateurs qui requièrent des fonctionnalités spécifiques sont modélisés comme<br />
des ensembles des contextes d‟utilisations.<br />
3. La définition des processus métiers configurés aux contextes (Configured Context<br />
Business Process)(CCBP) qui implémentent les fonctionnalités requises pour des groupes des<br />
utilisateurs spécifiques. Le CCBP est déterminé bien évidemment en appliquant les<br />
contextes d‟utilisation au CBP. Il est généré à travers l‟application des contextes<br />
d‟utilisations sur le CBP qui modélise les fonctionnalités accessibles à tous les utilisateurs en<br />
définissant plusieurs algorithmes.<br />
4. La détermination des interfaces du service en se basant sur les processus métiers configurés<br />
aux contextes. En effet, après la génération des CCBP qui correspondent à l‟application d‟un
32<br />
Etat de l’art<br />
Figure 11–Concept de service différencié (Tao et al. , 2008)<br />
5. contexte d‟utilisation sur un CBP, vient l‟étape de la dérivation de l‟interface de service. Pour<br />
chaque CCBP, une interface de service lui est associée qui correspond aux besoins des<br />
utilisateurs appartenant au groupe d‟utilisateurs associé au contexte d‟utilisation. Pour<br />
identifier cette interface de service, des algorithmes ayant pour but d‟extraire les activités du<br />
CCBP ont été définis. Ces algorithmes parcourent chaque état composant le CCBP et
33<br />
Etat de l’art<br />
stockent les activités visibles pour la construction de l‟interface du service associé au CCBP.<br />
La figure 11 partie (b) reflète l‟approche de conception des services différenciés.<br />
La figure 12 présente le CBP d‟un service de pharmacie en ligne (Online Pharmacie Service)<br />
(OPS) (Tao et al., 2007). Ce service est en interaction avec plusieurs types de clients : les<br />
clients de service fidèles et les clients infidèles. Pour les clients fidèles, une remise sur les<br />
prix de médicament est appliquée. La figure 12 présente les OPS_CBP comme une<br />
représentation des activités exécutées par tout type d‟utilisateur (les clients de services<br />
fidèles/ infidèles). Chaque type d‟utilisateur peut exécuter les activités login, display good<br />
selection, display total price, receive payment et Product Delivery. OPS_UCM permet de<br />
modéliser les activités spécifiques au contexte d‟utilisation associé au client fidèle définies<br />
par deux propriétés : context (1) et context (2). OPS_CCBP représente les activités du<br />
processus configuré au contexte d‟utilisation associé à ce contexte d‟utilisation.<br />
OPS_ServiceInteface représente l‟interface associée au contexte d‟utilisation client fidèle qui<br />
se compose essentiellement d‟opérations :<br />
Figure 12–Conception à base des services différenciés de l’application OPS) (Tao et al., 2007b) .<br />
I.4.3.2<br />
Discussion<br />
(Tao et al., 2007a) (Tao et al., 2007b) (Tao et al., 2008) proposent une approche d‟adaptation des
34<br />
Etat de l’art<br />
services aux profils des clients de services. Cette approche est fondée principalement sur le<br />
formalisme des machines à états finis. Elle permet la modélisation des fonctionnalités accessible<br />
par tous les utilisateurs et dans toutes les circonstances en se basant sur le CBP. Les<br />
fonctionnalités spécifiques associées à chaque acteur sont modélisées en se basant sur les<br />
contextes d‟utilisation (UC). Un CCBP est obtenu en appliquant un contexte d‟utilisation à un<br />
CBP. Le CCBP permet de représenter les fonctionnalités requises qui correspondent à un profil<br />
d‟utilisateur donné. A chaque CCBP est associée une interface de service qui correspond à un<br />
profil d‟un utilisateur donné qui va interagir avec le service.<br />
Cette approche bien qu‟elle fournisse un formalisme (les machines à états finis) puissant en<br />
faisant l‟adaptation de services, elle ne permet pas la modélisation des aspects structurels d‟un<br />
SOS. Elle se base sur une approche de modélisation des aspects dynamique et non pas structurels<br />
pour l‟adaptation des services aux profils des utilisateurs. Aussi, cette approche reste abstraite et<br />
ne prend pas en compte les standards et les technologies des services web pour son illustration et<br />
sa mise en œuvre.<br />
I.5.<br />
SOS : technologies d’adaptation<br />
Dans l‟objectif de l‟adaptation des services, plusieurs approches ont proposé l‟extension des<br />
standards associés aux services web. En effet, plusieurs propositions ont visé l‟extension des<br />
standards de description de services tels que AWSDL (Lopes-velsco et al. , 2005), CWSDL<br />
(Kouadri Mostefaoui et al,2005) ou l‟extension CBPEL (Ghedira et al, 2005) pour la prise en<br />
compte de l‟adaptabilité de service au niveau du standard BPEL .<br />
I.5.1. AWSDL et CWSDL<br />
AWSDL (Lopez-velasco et al., 2005) est une extension du standard WSDL pour permettre au<br />
fournisseur de service de spécifier les différentes adaptations permises par le service web. Le<br />
AWSDL se base principalement sur le concept du profil général de l‟utilisateur (PGU). Le PGU<br />
est capable de décrire les besoins d‟adaptation d‟utilisateurs. Il est destiné à offrir un cadre<br />
générique pour la description d‟un utilisateur. Il permet de décrire les caractéristiques<br />
personnelles de l‟utilisateur et celles du contexte dans lequel est utilisé l‟application cible. Les<br />
caractéristiques de l‟utilisateur sont divisées en informations permanentes (son nom, sa langue
35<br />
Etat de l’art<br />
maternelle,…) et ses caractéristiques évolutives (ses centres d‟intérêts, ses connaissances,…).<br />
Les caractéristiques du contexte constituent la seconde catégorie de descripteurs, qui se<br />
composent de deux sous-catégories : les caractéristiques de la connexion et les caractéristiques<br />
de l‟environnement. Les caractéristiques de connexion sont composées des caractéristiques du<br />
dispositif, décrit tant par ses contraintes matérielles (taille de l‟écran, type de données<br />
multimédia supporté, etc.) que logicielles (plate-forme et navigateur utilisés) et de celle du<br />
réseau (type, débit,…). La description de l‟environnement comprend la localisation physique et<br />
le contexte temporel (i.e., date et heures des sessions) établis par l‟intermédiaire d‟un dispositif.<br />
Pour formaliser le PGU, (lopez et al) (Lopez-velasco, 2005) ont utilisé deux standards W3C RDF<br />
(Klyne et al., 2004) et CC/PP (Kiss, 2007). RDF permet de décrire les ressources à l‟aide d‟un<br />
ensemble de méta données. Le second langage CC/PP permet de définir plus particulièrement les<br />
capacités des dispositifs utilisés et les préférences des utilisateurs en termes de contenu.<br />
Le CWSDL (Kouadri mostefaoui et al., 2005) est proposé en vue d‟intégrer les informations du<br />
contexte au standard WSDL pour permettre l‟adaptation des services aux contextes de leurs<br />
clients.<br />
I.5.2. CBPEL et VXBPEL<br />
Dans le même objectif d‟adaptation des services aux contextes, Ghedira et al. (Ghedira et al.<br />
2005) et Koning et al. (Koning et al. 2009) proposent une extension au standard de la<br />
composition des services (BPEL) pour faire adapter un service composite aux contextes de ses<br />
utilisateurs. CBPEL est une extension du BPEL pour l‟intégration des caractéristiques du<br />
contexte. VxBPEL est une extension du BPEL en se basant sur le concept de la variabilité des<br />
services.<br />
I.5.3. Discussion<br />
Dans l‟objectif de l‟adaptation des services, plusieurs propositions ont visé l‟extension des<br />
standards associés à la technologie des services web. Dans cette optique, Les travaux (lopezvelasco<br />
et al, kouadri mostéfaoui et al., 2005) (Maamar et al., 2006) ont étendu le standard<br />
WSDL pour la prise en compte du profil de l‟utilisateur ou de son contexte pour pouvoir adapter<br />
les services. Le problème posé avec ces approches, est que les extensions apportées aux
36<br />
Etat de l’art<br />
standards sont inaccessibles et incompréhensibles aux différents stakeholders (analystes métier,<br />
architectes, développeurs, utilisateurs finals, etc.) s‟intéressant au développement des SOS, vu<br />
leur verbosité et leur bas niveau d‟abstraction. Par ailleurs, le manque de l‟automatisation de la<br />
génération de code correspondant aux extensions apportées à ces standards pénalise largement le<br />
développement des SOS adaptables, vu que le codage manuel de ces extensions est un exercice<br />
complexe, fastidieux et «error-prone ». D‟où la nécessité d‟offrir des formalismes et des<br />
notations facilement compréhensibles par les différents stakeholders et permettant<br />
l‟automatisation de la génération de code. Ce qui va permettre une meilleure productivité et une<br />
compréhension des caractéristiques des SOS par les différentes stakeholders.<br />
I.6.<br />
SOS : Approches d’adaptation dirigées par les modèles<br />
En parallèle avec l‟émergence du SOC, le développement dirigé par les modèles (MDD-Model<br />
Driven Development) a marqué l‟ingénierie logicielle en proposant une nouvelle manière pour le<br />
développement, la maintenance, l‟évolution et l‟intégration des systèmes logiciels. Le MDD est<br />
principalement axé sur les modèles comme des entités de première classe et sur la transformation<br />
de ces modèles comme activité principale.<br />
Pour concrétiser la vision MDD, l‟OMG a proposé l‟approche MDA (Model Driven<br />
Architecture). MDA est une démarche de développement qui permet la séparation des<br />
spécifications fonctionnelles d‟un système des spécifications de son implémentation sur une<br />
plateforme donnée en les décrivant par des modèles séparés en se basant sur des standards.<br />
L‟approche MDA a apporté plusieurs avantages pour le développement des systèmes<br />
logiciels (Gerber et al., 2002): (i) elle permet l‟utilisation du même PIM pour la génération des<br />
modèles sur des plates-formes différentes (ii) elle permet l‟amélioration de la portabilité et de<br />
l‟interopérabilité des systèmes via l‟utilisation des modèles. (iii) elle permet la protection de la<br />
logique métier contre les changements ou l‟évolution des technologies et (iv) elle permet la<br />
réutilisation et la composition de modèles rendant possible la construction de systèmes<br />
complexes.<br />
Pour bénéficier de l‟approche MDA pour le développement des SOS, plusieurs travaux ont été<br />
présentés (Bezevin et al., 2004) (Lopes et al., 2004) (Yu et al., 2007) (Torkman et al.,<br />
2006)(Patrsciou et al., 2004)(Gronmo et al., 2004a)(Baina et al., 2004)(Bordbar et al., 2004).<br />
L‟objectif de cette section est d‟exposer ces différents travaux de recherche qui combinent entre
37<br />
Etat de l’art<br />
deux disciplines dans le domaine du génie logiciel le MDD et le SOC. En premier lieu, nous<br />
allons présenter les concepts de base de l‟approche MDA. En deuxiéme lieu, nous allons discuter<br />
les approches MDA de développement des SOS. En troisieme lieu, nous allons présenter<br />
quelques propositions pour la prise en compte de l‟utilisateur dans le contexte du MDA pour le<br />
développement des SOS.<br />
I.6.1. Concepts et définitions<br />
L‟approche MDA est centrée modèle. Elle définit plusieurs niveaux de modèles. Ainsi, Nous<br />
distinguons : le modèle, le métamodèle et le méta-métamodèle.<br />
Le modèle est «une simplification de quelque chose qui nous permet de voir, manipuler, et<br />
raisonner sur le sujet étudié, et qui nous aide à en comprendre la complexité inhérente ». (Mellor,<br />
2004)<br />
Un métamodèle «est un modèle qui définit le langage pour exprimer un modèle » (OMG, 2003)<br />
Un métamétamodèle «est un modèle qui définit le langage pour exprimer un métamodèle. La<br />
relation entre un métamétamodèle et un métamodèle est analogue à la relation entre un<br />
métamodèle et un modèle» (OMG, 2003).<br />
Pour définir la relation entre ces différents modèles, l‟OMG a proposé l‟architecture à quatre<br />
niveaux: le niveau M0, le Niveau M1, le Niveau M2 et le niveau M3.<br />
M0 est le niveau des données réelles. Il est composé des informations que l‟on souhaite<br />
modéliser. Ce niveau est souvent considéré comme étant le monde réel.<br />
Le niveau M1 est composé de modèles d‟informations. Lorsque l‟on veut décrire les<br />
informations de M0, le MDA considère que l‟on fait un modèle appartenant au niveau<br />
M1. Typiquement, un modèle UML appartient au niveau M1. Tout modèle est exprimé<br />
dans un langage unique dont la définition est donnée explicitement au niveau M2.<br />
Le Niveau M2 est donc composé de langage de définition des modèles d‟informations<br />
appelés aussi méta-modèles. A titre d‟exemple, le métamodèle UML qui décrit le
38<br />
Etat de l’art<br />
standard UML appartient au niveau M2 ; il définit la structure interne des modèles UML.<br />
Un méta-modèle définit donc un langage de modélisation spécifique à un domaine.<br />
Le niveau M3 est composé d‟une unique entité qui est le langage unique de définition des<br />
méta-modèles, aussi appelé le méta-méta-modèle ou le MOF (Méta-Object Facility)<br />
(OMG, 2002a). Le MOF définit la structure de tous les méta-modèles qui se trouvent au<br />
niveau M2. le MOF est réflexif, c‟est à dire que la description du MOF s‟applique au<br />
MOF lui même, ce qui permet de dire que le niveau M 3 est le dernier niveau de<br />
l‟architecture. le niveau M3 correspond donc aux fonctionnalités universelles de<br />
modélisation logicielle, alors que le niveau M2 correspond aux aspects spécifiques des<br />
différents domaines, chaque aspect particulier étant pris en compte par un métamodèle<br />
spécifique.<br />
Pour le développement des systèmes logiciels, MDA définit plusieurs types de modèles.<br />
Trois types de modèles représentant et séparant entre différentes préoccupations (e.g.,<br />
métier/technologique) ont été notamment définis : le CIM(Computation Independant<br />
Modèle) , le PIM (Platform Independent Model) et le PSM (Platform Specific Model). Le<br />
CIM permet de représenter les exigences métier d‟un système. Le PIM est un modèle ayant<br />
pour objectif la description de la logique métier d‟un système indépendamment de toute<br />
plateforme ou technologie. Le PSM qui est un modèle dépendant d‟une technologie<br />
particulière, permet de représenter une implémentation d‟un système conformément à une<br />
technologie particulière.<br />
Le passage d‟un type de modèle (e.g., CIM/PIM, PIM/PSM, etc.) à un autre se fait par<br />
transformation de modèle. Une transformation de modèles est définie comme une fonction<br />
ayant comme entrée un ensemble de modèles et qui produit en sortie un ensemble de<br />
modèles. Les modèles d‟entrée et de sortie doivent être conformes à leur métamodèle.<br />
L‟exécution d‟une transformation de modèle se fait au niveau des modèles, mais elle se<br />
spécifie au niveau des métamodèles. En effet, une transformation exprime des<br />
correspondances structurelles entre les modèles sources et cibles. Ces correspondances<br />
s‟appuient sur les métamodèles de ces modèles.
39<br />
Etat de l’art<br />
I.6.2. Approches MDA de développement des SOS<br />
Dans cette section, nous présentons des travaux de recherche qui combinent entre deux<br />
disciplines dans le domaine du génie logiciel à savoir l‟ingénierie dirigée par les modèles et les<br />
approches à base de services. En premier lieu, nous allons mettre l‟accent sur les approches<br />
MDA de développement des SOS. Ainsi, plusieurs travaux ont été présentés (Bezevin et al,<br />
2004) (Lopes et al, 2004)(Skogan et al., 2004)(Yu et al, 2007) (Torkman et al., 2006) (Patrasciou<br />
et al., 2004)(Gronmo et al., 2004a) (Baina et al., 2004). Nous avons classifié ces approches en<br />
deux classes selon le formalisme ou le langage de modélisation utilisé pour l‟élaboration des<br />
PIM. En effet, deux formalismes ont émergé pour la définition des PIMs : UML comme langage<br />
et standard universel de modélisation et le profil UML EDOC (OMG, 2002d) comme une<br />
extension d‟UML pour la modélisation des applications distribuées.<br />
En deuxième lieu, nous présentons quelques propositions pour la prise en compte de l‟utilisateur<br />
dans le contexte de MDA pour le développement des SOS.<br />
I.6.2.1<br />
PIM (UML) vers services Web<br />
(Bezevin et al., 2004) ont proposé l‟application de l‟approche MDA pour le développement des<br />
applications Internet sur des plateformes services web. Ils visent la séparation des aspects métiers<br />
des aspects technologique. Pour ce faire, Ils élaborent en premier lieu un PIM qui reflète les<br />
fonctionnalités, la structure et la dynamique d‟un système loin des détails technologiques. Un tel<br />
PIM, spécifié en UML ou EDOC, est manipulé et transformé selon des règles de transformation<br />
pour créer des PSMs basés sur trois plateformes technologiques : WSDL, J2EE, et dotNET.<br />
La figure 13 illustre les différents types de transformations définis :
40<br />
Etat de l’art<br />
Figure 13–Types de transformations : modèle vers modèle et modèle vers code (Bezevin et al.,<br />
2004).<br />
Ces différents types de transformation ont été illustrés à travers un exemple illustratif « Agence<br />
de voyage ». Cet exemple illustratif est modélisé de façon neutre comme un PIM en utilisant le<br />
langage de modélisation (UML). Ce PIM est transformé premièrement à un modèle WSDL pour<br />
la génération de la description du service web crée. Ensuite, Ce PIM est transformé vers le<br />
modèle J2EE ou dotNet pour pouvoir créer le code source du service, les fichiers de<br />
configuration et les fichiers de déploiement.<br />
La figure 14 présente le PIM de l‟agence de voyage. Ce PIM est constitué de six classes<br />
implémentant les principales caractéristiques du système de l‟exemple illustratif : Customer,<br />
ServiceTravelAg, ServiceAirLines, ServiceCarHire, ServiceHotel et ServiceBank.
41<br />
Etat de l’art<br />
Figure 14–Modèle PIM de l’étude de cas « agence de voyage » (Bezevin et al., 2004).<br />
Pour transformer le PIM (en UML) vers un PSM (WSDL), Bezevin et al.(Bezivin et al., 2004)<br />
ont défini le métamodèle source qui est UML et le métamodèle cible du WSDL ainsi que les<br />
différentes correspondances existantes entre les éléments des deux métamodèles. Les<br />
métamodèles source et cible doivent être conformes au MOF. Le métamodèle source choisi est<br />
UML qui est un standard conforme au MOF. Le métamodèle WSDL est créé à partir de son<br />
schéma conformément au MOF.<br />
La figure 15 illustre les différentes correspondances identifiées entre le métamodele UML et le<br />
métamodèle WSDL.
42<br />
Etat de l’art<br />
UML metamodel<br />
Mapping<br />
WSDL metamodel<br />
ModelElement<br />
Namespace<br />
Package<br />
AssociationEnd<br />
Class<br />
Interface<br />
Attribute<br />
Operation<br />
+specification<br />
+method<br />
Method<br />
Parameter<br />
DataType<br />
WSDLElement<br />
Documentation<br />
Type<br />
+types<br />
Part<br />
0..1<br />
0..*<br />
+part<br />
P2D<br />
+message<br />
Message<br />
0..*<br />
A2T<br />
Operation<br />
+operation 0..*<br />
C2S<br />
PortType<br />
+type<br />
0..*<br />
+portType<br />
0..*<br />
+binding<br />
Binding<br />
0..*<br />
+boperations<br />
O2O<br />
BindingOperation<br />
Port<br />
0..*<br />
+port<br />
M2Bo<br />
+service<br />
Service<br />
0..*<br />
P2Part<br />
Dt2T<br />
Definition<br />
+_targetNameSpace<br />
+name<br />
Figure 15–Correspondances UML/WSDL (Bezevin et al., 2004)<br />
Après l‟identification des correspondances, Bezevin et al.(Bezivin et al., 2004) ont utilisé le<br />
langage ATL pour la définition de transformation.<br />
La figure 16 présente les correspondances possibles entre le métamodèle UML et le métamodèle<br />
Java. Ces correspondances sont réalisées par un ensemble d‟éléments de correspondances qui<br />
spécifient les éléments du métamodele source qui sont équivalents aux metamodels cible (le<br />
métamodèle Java). A partir de chaque élément de correspondance, des règles de transformation<br />
sont définies pour transformer les éléments du modèle source en éléments du modèle cible.<br />
Après l‟identification des éléments équivalents entre les métamodèles d‟UML et java, les règles<br />
de transformations associées sont définies.
43<br />
Etat de l’art<br />
UML metamodel<br />
ModelElement<br />
Mapping<br />
Java metamodel<br />
JElement<br />
Namespace<br />
P2P<br />
Package<br />
AssociationEnd<br />
Ae2F<br />
Generaliation<br />
GeneralizableElement<br />
C2Jc<br />
Class<br />
Interface<br />
Attribute<br />
Operation<br />
+specification<br />
+method<br />
Method<br />
Parameter<br />
DataType<br />
I2I<br />
A2F<br />
OM2M<br />
Pr2Pr<br />
Dt2Jpt<br />
0..*<br />
+super<br />
0..1<br />
JPackage<br />
+nested<br />
JClassifier<br />
JClass<br />
0..*<br />
+implemetedby<br />
0..*<br />
+implements<br />
JInterface<br />
JPrimitiveType<br />
JMember<br />
JField<br />
JValue<br />
JMethod<br />
+owner<br />
+jparameters<br />
0..*<br />
0..*<br />
JParameter<br />
+type<br />
+type<br />
Figure 16–Correspondances UML/Java (Bezevin et al., 2004)<br />
(Gronmo et al., 2004b) proposent une méthodologie pour développer les SOS dans le cadre de<br />
l‟approche MDA. La figure 17 illustre cette méthodologie.<br />
Une telle méthodologie définit les étapes suivantes:<br />
• Discover Web Services : Le développeur utilise un navigateur Web et un client d‟annuaire pour<br />
chercher un service Web candidat pour la composition. Il obtient une liste de services Web et les<br />
localisations de leur description (représentée en WSDL).<br />
• Import Web Service Descriptions : Le développeur importe la description du service et la<br />
traduit en UML. Le résultat est un modèle UML conforme au WSDL.
44<br />
Etat de l’art<br />
WSDL<br />
UML<br />
Model composite Web services<br />
Service<br />
modeling<br />
Workflow<br />
modeling<br />
Discover Web<br />
Services<br />
Import Web<br />
Service Description<br />
Composite Web<br />
Service-WSDL<br />
Export Web Service<br />
Description<br />
Implement Composite<br />
Web Service<br />
Publish Composite<br />
Web Service<br />
Figure 17–Méthodologie de développement des SOS (Gronmo et al., 2004a).<br />
• Model Composite Web Service : Le développeur utilise un outil UML pour réviser et intégrer<br />
les modèles importés sous forme de modèle d‟un service composé. Cette étape est composée de<br />
la modélisation de la structure du service (Service modeling) et de la modélisation du<br />
comportement du service composé (Workflow modeling).<br />
• Export Web Services Description : Le modèle du service Web composé est exporté afin<br />
d‟obtenir un document WSDL du service Web composé.<br />
• Implement Composite Web Service : Le service Web est réalisé à partir d‟un document<br />
WSDL.<br />
• Publish Composite Web Service : Finalement, le service Web composé est publié dans un<br />
annuaire. La figure 18 présente un modèle UML et son équivalent en WSDL. Selon cette figure,<br />
une Class en UML est l‟équivalent de Types en WSDL. Une Interface en UML est l‟équivalent<br />
de PortType et Binding en WSDL. Une méthode en UML est l‟équivalent d‟Operation en<br />
WSDL. Une classe stéréotypée par BusinessServices est l‟équivalent de Service en WSDL.<br />
Ensuite, Gronmo et al. (Gronmo et al. 2004b) utilisent UMT (UML Transformation Tool)<br />
(SINTEF, 2004) pour créer les règles de transformation de UML en WSDL.
45<br />
Etat de l’art<br />
BasicWFS<br />
getCapabilities()<br />
describeFeatureType()<br />
getFeature()<br />
« Interface »<br />
TransactionWFS<br />
lockFeature()<br />
transaction()<br />
« BusinessService »<br />
MyWebService<br />
CreditCard<br />
number : string<br />
expires : date<br />
Payment<br />
validate(card :CreditCard) :<br />
boolean<br />
<br />
...<br />
<br />
...<br />
<br />
<br />
...<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
...<br />
...<br />
...<br />
...<br />
...<br />
<br />
<br />
...<br />
<br />
<br />
...<br />
...<br />
...<br />
...<br />
...<br />
<br />
...<br />
46<br />
Etat de l’art<br />
WSDL<br />
EDOC PIM<br />
BPEL<br />
Functional Decomposition<br />
Web Service<br />
EDOC<br />
PIM<br />
mapping<br />
WSD<br />
L<br />
WSD<br />
L<br />
mapping<br />
Web Service 2<br />
EDOC<br />
PIM<br />
WSD<br />
L<br />
mapping<br />
Web Service N<br />
EDOC<br />
PIM<br />
BPEL<br />
BPEL<br />
BPEL<br />
Implementation Platform 1 Implementation platform 2 Implementation platform N<br />
Figure 19–Processus de transformation du framework défini (Yu et al , 2007)<br />
(1) Des PIMs (EDOC) aux PSMs (WSDL)<br />
Chaque interface de service est décrite en utilisant le standard WSDL comme une technologie<br />
pour la description du service en se basant sur un schéma XML dédié. Pour automatiser la<br />
génération de WSDL à partir du profil EDOC-un profil UML permettant la spécification d‟un<br />
système distribué – deux transformations ont été définies. La première consiste en la génération<br />
du XMLSchema à partir du Modèle de document d‟EDOC-CCA. Pour réaliser cette<br />
transformation, un certain ensemble de règles en QVT ont été définies. Pour cela, il est<br />
nécessaire, dans un premier lieu, de disposer des métamodèles source et cible et dans un<br />
deuxième lieu d‟identifier les correspondances entre leurs éléments suivant une analyse<br />
sémantique d‟équivalence. La figure 20 illustre le métamodèle source. La figure 21 définit le<br />
métamodèle cible. Le tableau 4 définit les équivalences entre les différents éléments du<br />
métamodèle source et cible ainsi que les règles de transformation définies pour implémenter des<br />
règles en QVT.
47<br />
Etat de l’art<br />
Nom de la règle Entrée Sortie<br />
Dp2pdt DataType PrimitiveDatatype<br />
String<br />
String<br />
Integer<br />
Int<br />
Float<br />
Float<br />
Decimal<br />
Decimal<br />
Boolean<br />
Boolean<br />
Date<br />
Date<br />
En2st Enumeration SimpleType<br />
Cd2ct CompositeData ComplexType<br />
Tableau 4–Correspondances Model Document/Web service (YUet al., 2007)<br />
La deuxième transformation consiste en la génération d‟autres éléments de WSDL<br />
ProcessComponent<br />
Document Type<br />
+type<br />
DataElement<br />
Protocol<br />
uses<br />
PortOwner<br />
+owner<br />
1..* +ports<br />
Port<br />
FlowPort<br />
DataType<br />
Enumeration<br />
1<br />
+enumeration<br />
+Values<br />
*<br />
EnumerationValue<br />
OperationPort<br />
ProtocolPort<br />
0..*<br />
+attrs<br />
Attribute<br />
CompositeDataType<br />
+owner<br />
+features<br />
Figure 20–Métamodèle « Document Model » (Yu etal ., 2007)
48<br />
Etat de l’art<br />
Figure 21–Métamodèle WSDL (Yu et al., 2007)<br />
Rule Input(CCA) Output (WSDL)<br />
fp2mg FlowPort Message<br />
fp2ptop FlowPort <br />
Op2pto OperationPort <br />
Pp2PPT ProtocolPort <br />
Pp2bd ProtocolPort <br />
Pp2pt ProtocolPort <br />
Pc2s PC <br />
Pc2d PC <br />
Cca2wsdl PC WSDL File<br />
Tableau 5–Correspondances CCA/WSDL (Yu et al., 2007)
49<br />
Etat de l’art<br />
(2) Des PIM (EDOC) aux PSMs (BPEL)<br />
Dans le cadre du framework défini, tous les sous PIMs définis sont implémentés comme des<br />
services qui seront composés pour construire un Système d‟Information. Ainsi, après la<br />
génération des WSDL de chaque service, vient ensuite l‟étape de la génération des modèles<br />
BPEL pour la définition de la composition des services à partir des modèles dynamiques EDOC.<br />
0..1<br />
supertype<br />
Choreography<br />
*<br />
subtypes<br />
target<br />
+incomings<br />
Node<br />
AbstractTransition<br />
-name : String<br />
+source<br />
+outcoming<br />
s<br />
PortUsage<br />
PseudoState<br />
Transition<br />
-kind :PseudoSateKind<br />
-preCondition<br />
+represents<br />
Port<br />
<br />
PseudoStateKind<br />
-name : String<br />
-isSyne :Boolean<br />
-Transactional :Boolean<br />
-direction:DirectionType<br />
-postcondtion:Status<br />
+choice<br />
+fork<br />
+initial<br />
+join<br />
+failure<br />
Figure 22–Métamodèle Choreography (YU et al., 2007)<br />
Pour réaliser cette étape, il est nécessaire de définir les métamodèles source et cible ainsi que les<br />
correspondances entre les différents éléments des métamodèles. Le métamodèle source est celui<br />
de EDOC tandis que le métamodèle cible est celui de BPEL. La figure 22 définit le métamodèle<br />
source. La figure 23 définit le métamodèle cible. Le tableau 5 définit les éléments d‟entrée et
50<br />
Etat de l’art<br />
leurs contraintes associées ainsi que leurs correspondants dans le métamodèle cible et leurs<br />
règles associées<br />
Figure 23–Métamodèle BPEL (Yu et al., 2007)<br />
Patrasciuo et al. (Patrasciuo, 2004b) ont proposé une approche pour la transformation d‟un PIM<br />
élaboré en utilisant le profil UML EDOC vers une plateforme service web et notamment la<br />
transformation du PIM EDOC vers un modèle WSDL. Le modèle source doit être conforme au<br />
métamodèle d‟EDOC, qui à son tour doit être conforme au MOF. Le métamodèle cible est celui<br />
de WSDL, qui est élaboré en se basant sur le schéma de WSDL défini dans la spécification<br />
WSDL. Dans le but de générer le modèle WSDL à partir du modèle EDOC, un ensemble de<br />
règle de transformation a été défini en utilisant le langage YATL (Yet Another Transformation<br />
language) (Patrasciuo, 2004a). Pour valider et illustrer la transformation d‟un PIM (EDOC) vers<br />
une la plateforme services web, une étude de cas concernant l‟agence de voyage a été mise en<br />
évidence. Ainsi, la démarche adoptée consiste à définir un PIM de l‟agence de voyage en<br />
utilisant le profil EDOC. Ensuite, vient l‟étape de la définition des règles de la transformation en<br />
utilisant YATL comme langage de transformation de modèle pour la génération des descriptions<br />
WSDL de l‟agence de voyage. A signaler que pour transformer un modèle EDOC vers un
51<br />
Etat de l’art<br />
modèle WSDL, Patrascuio (Patrasciuo, 2004b) définit premièrement des règles de transformation<br />
pour la génération des schémas XML nécessaires pour la définition des types de données utilisés<br />
pour la description de message WSDL. Pour ce faire, le mapping se base sur le métamodèle<br />
«Document Model» comme métamodèle source (Cf. figure 24) et sur le «XML schema» comme<br />
métamodèle cible (cf. figure 25).<br />
Figure 24–Profil “Document Model” (Patrasciuo, 2004)<br />
Ensuite, pour la génération des autres éléments WSDL, le mapping entre les éléments de EDOC<br />
et les autres éléments du métamodèle WSDL (Cf. figure 26) a été défini.
52<br />
Etat de l’art<br />
Figure 25–Métamodèle du XML schéma<br />
Figure 26–Métamodèle WSDL (Patrsciou et al., 2004)
53<br />
Etat de l’art<br />
I.6.3. Approches MDA d’adaptation des SOS<br />
L‟approche MDA a été largement utilisée dans le cadre de la prise en compte des différents<br />
aspects des besoins de l‟utilisateur final. Dans cette optique, plusieurs travaux dans la littérature<br />
ont été proposés pour la prise en compte des propriétés non-fonctionnelles, de la gestion des<br />
droits d‟accès, de la qualité de service et du contexte.<br />
L‟objectif de cette section est de présenter ces différentes propositions.<br />
I.6.3.1<br />
Approches de gestion des propriétés non-fonctionnelles<br />
Ortiz et al. (Ortiz et al. 2006a) proposent une approche dirigée par les modèles pour la prise en<br />
compte des propriétés extra-fonctionnelles. Ces dernières concernent toutes les fonctionnalités<br />
supplémentaires qui ne font pas partie des fonctionnalités principales des systèmes (le métier des<br />
systèmes) telles que les propriétés de sécurité, de loging, du temps réel, etc. Cette approche se<br />
base essentiellement sur la définition en premier lieu d‟un profil UML pour la modélisation des<br />
propriétés extra-fonctionnelles indépendamment des standards (WS-policy ou SOAP) ou des<br />
technologies (AspectJ) (Kiczales et al., 2001). Elle se base aussi sur la définition d‟un processus<br />
de transformation dans le cadre de l‟approche MDA en définissant les métamodèles sources et<br />
cibles ainsi que les règles de transformation pour l‟automatisation de la génération de code et<br />
notamment, les différentes politiques, les aspects ou du code java.<br />
Le profil UML proposé, définit essentiellement deux stéréotypes pour la modélisation des<br />
propriétés extra-fonctionnelles : le stéréotype « extrafunctional property » et le stéréotype<br />
«service component». Ce dernier permet la modélisation des services en identifiant leurs<br />
interfaces fournies et requises via des references. Le stéréotype « extrafunctional<br />
property » étend la métaclasse « operation » ou la metaclasse « interface ». Ce stéréotype (cf.<br />
figure 27) est spécialisé en quatre stéréotypes : , , ,<br />
permettant respectivement la modélisation des informations de contrôle<br />
d‟accès, des propriétés temps réel, les informations de l‟invocation d‟opération et les<br />
informations de cryptage.<br />
La figure 27 présente le profil « extra-functional Property » avec ses métaclasses de base.
54<br />
Etat de l’art<br />
<br />
Operation<br />
<br />
Interface<br />
<br />
<br />
<br />
Extra-FunctionalProperty<br />
actionType : ActionType<br />
optional : Boolean<br />
ack : Boolean<br />
policyID : String<br />
policyDoc : String<br />
<br />
ActionType<br />
before<br />
after<br />
instead<br />
none<br />
Figure 27–Profil «Extra- functional Property » (Ortiz et al., 2006b)<br />
EFProperties<br />
<br />
Extra-functional Property<br />
<br />
Encryption<br />
<br />
Login<br />
<br />
Loging<br />
<br />
RealTime<br />
-encryptionKey : string<br />
-usersDB : string<br />
-recordFile : string<br />
-realTimeURL : string<br />
Figure 28–Stéréotype « Extra-functional property » (Ortiz et al., 2006b)<br />
Pour illustrer l‟utilisation du profil défini, une étude de cas concernant l‟E-Tourisme a été<br />
présentée. La figure 29 présente le service touristInformation. Ce service est représenté comme<br />
un composant stéréotypé serviceComponent qui fournit une interface. Pour inclure les propriétés<br />
extra-fonctionnelles au service, trois propriétés simples ont été conçues : la propriété log qui<br />
s‟applique à une opération et permet de stocker toutes les informations concernant les<br />
invocations d‟une telle opération. La propriété RealTime est requise par le client de service pour<br />
la prise en compte des propriétés temps réel lors de l‟invocation de l‟opération<br />
WetherInformation. La propriété login est utilisée pour gérer les droits d‟accès à l‟opération
55<br />
Etat de l’art<br />
«carRenting» puisqu‟il est accessible seulement aux utilisateurs qui ont un login et un mot de<br />
passe.<br />
<br />
touristServiceInterface<br />
<br />
TouristService<br />
+hotelInformation(…) :string<br />
+carRenting(…) : string<br />
+weatherInformation(…) :<br />
String<br />
<br />
actionType=after<br />
optional=false<br />
ack=true<br />
recordFile=logFL<br />
policyID=log<br />
<br />
actionType=instead<br />
optional=true<br />
ack=false<br />
realTimeURL=CNNWeathe<br />
r<br />
policyID=RealTime<br />
<br />
actionType=instead<br />
optional=false<br />
ack=true<br />
username=uName<br />
password=pw<br />
policyID=SecurityToken<br />
policyDoc=SecurityUri<br />
Figure 29–Service TouristService (Ortiz et al., 2006a)<br />
Après la modélisation de l‟application en se basant sur le profil UML défini, un processus de<br />
transformation a été défini. Ce dernier se base sur le profil défini pour l‟élaboration du PIM.<br />
Légende :<br />
CT : Conforms To<br />
Figure 30–Processus de transformation ATL (Ortiz et al., 2006a)<br />
Ensuite, ce PIM sera transformé vers les PSMs suivants : Policy Model, AOP model et SOAP<br />
Tag Model. La figure 30 présente le processus de transformation.
56<br />
Etat de l’art<br />
Le processus de transformation permet de transformer le PIM élaboré en se basant sur le profil<br />
UML. Le métamodèle de ce profil doit être conforme au MOF. Pour pouvoir le transformer vers<br />
des plateformes technologiques (aspect, SOAP Tag et Policy) dans le cadre de l‟approche MDA,<br />
il est nécessaire de définir leurs métamodèles comme le montre les figures suivante. La figure 31<br />
présente le méta modèle utilisé pour la génération des tags SOAP.<br />
SoapTagElement<br />
-name : String<br />
Package +packagess + classes PrimitiveType<br />
SoapTagClass<br />
-target : String<br />
-value : String<br />
-side : String<br />
-providerName : String<br />
Figure 31–Métamodèle cible SOAP (Ortiz et al., 2006a)<br />
La figure 32 est utilisée pour la génération des aspects. La figure 32 illustre le méta modèle<br />
utilisé pour la génération des politiques<br />
-name : String<br />
PolicyElement<br />
Package +packagess + classes<br />
PolicyClass<br />
PrimitiveType<br />
I.6.3.2<br />
-opt : String<br />
-acronym : String<br />
-target: String<br />
-targetName : String<br />
-policyRefrence: String<br />
-interface : String<br />
-service: String<br />
Figure I-32-<br />
Figure 32–Métamodèle Policy (Ortiz et al, 2006a)<br />
Approches de gestion des droits d’accès<br />
Alam et al. (Alam et al., 2007a) présentent un framework dirigé par les modèles pour la gestion<br />
de la sécurité des systèmes orientés services. La spécificité de tel framework est la gestion des
57<br />
Etat de l’art<br />
droits d‟accès des utilisateurs non pas au niveau technologique mais au niveau modèle métier,<br />
c'est-à-dire à un haut niveau d‟abstraction. Pour ce faire, le framework se base principalement sur<br />
un profil UML appelé SECTET-UML et sur un langage spécifique au domaine appelé SECTET-<br />
PL pour l‟élaboration des modèles métiers tout en y associant les informations des droits d‟accès<br />
des utilisateurs. Le framework permet dans un deuxième lieu la génération de politiques d‟accès<br />
ciblant une plateforme technologique particulière à savoir le XACML.<br />
SECTET-UML (Hafner et al., 2009) est un profil UML permettant la modélisation des services<br />
et de leurs interfaces, des informations échangées entre services ou entre clients de services ainsi<br />
que les droits d‟accès statiques. Ce profil définit un ensemble de stéréotypes étendant des<br />
métaclasses UML comme le montre le tableau 6. Ces différents stéréotypes sont utilisés pour<br />
l‟élaboration de quatre modèles définis dans le cadre de ce framework : le modèle des interfaces,<br />
le modèle des documents, le modèle des droits d‟accès et le modèle des rôles.<br />
Le modèle des interfaces (Interface Model) définit un ensemble d‟opérations abstraites fournies<br />
par chaque service à ses clients.<br />
Le modèle des documents (Document Model) permet de décrire les différents types de données<br />
échangés entre les différents partenaires dans le cadre d‟un SOS.<br />
Stereotype<br />
Metaclase UML<br />
Package<br />
Package<br />
<br />
Interface<br />
<br />
Package<br />
<br />
Class<br />
<br />
Class<br />
Package<br />
<br />
Attribute<br />
<br />
Class<br />
<br />
Interface<br />
<br />
Package<br />
Constraint<br />
Tableau 6–Stéréotypes du profil SECTET-UML (Alam et al., 2008)<br />
Le modèle de rôles (Role Model) permet de décrire les différents rôles ainsi que les droits<br />
d‟accès y associés en se basant sur les diagrammes de classes UML.<br />
Le profil SECTET-UML ne permet de modéliser que les droits d‟accès statiques, il ne permet<br />
pas la gestion des droits d‟accès dynamique. Pour faire face à cette lacune, le langage spécifique
58<br />
Etat de l’art<br />
au domaine SECTET-PL est défini. SECTET-PL associé au profil SECTET-UML , est un<br />
langage à base de prédicats inspiré du langage OCL qui permet d‟exprimer des politiques des<br />
droits d‟accès dynamiques indépendamment des technologies.<br />
SECTET-UML et SECTET-PL permettent d‟exprimer les droits d‟accès des différents<br />
utilisateurs d‟un système orienté service loin de toute technologie. Pour cibler une technologie<br />
particulière, des règles de transformations QVT ont été définies pour la génération des politiques<br />
d‟accès XACML. Ces transformations ont été effectuées en se basant sur les métamodèles des<br />
différents modèles ainsi que le métamodèle de la technologie cible à savoir la technologie<br />
XACML. La figure 33 montre le métamodèle des différents modèles définis au niveau PIM. La<br />
figure 34 illustre le métamodèle XACML.<br />
Figure 33–Métamodèle de SECTET-UML(Hafner et al.,2009)
59<br />
Etat de l’art<br />
Figure 34–Métamodèle XACML<br />
Pour la génération des politiques d‟accès XACML, le framework adopte deux transformations :<br />
une transformation modèle à modèle et une transformation modèle à code.<br />
I.6.3.3 Approches de gestion de la qualité de services<br />
D‟ambrogio et al. (D‟ambrogio, 2007) proposent une extension du standard WSDL appelé Q-<br />
WSDL pour la gestion des propriétés de la qualité des services requise par chaque client de<br />
service. Cette extension du standard WSDL est effectuée en se basant sur les standards et les<br />
principes de l‟approche MDA. Q-WSDL est utilisé principalement pour :<br />
Spécifier les exigences de la qualité de services associée aux différents services<br />
composant un système donné.<br />
Ajouter les propriétés de la qualité de services lors de la recherche des services web dans<br />
un annuaire UDDI.<br />
Définir les SLS (Service Level Specification) lors de l‟établissement des SLA (Service<br />
Level Agreement)
60<br />
Etat de l’art<br />
Automatiser la transformation des descriptions WSDL vers des descriptions Q-WSDL<br />
Supporter la transformation des modèles UML vers des descriptions WSDL.<br />
Dans l‟objectif de produire des documents Q-WSDL, un processus se composant d‟un ensemble<br />
d‟étapes a été défini. Ce processus se base principalement sur les modèles et les transformations<br />
des modèles comme le montre la figure 35.<br />
MOF<br />
Model<br />
<br />
Meta-Metamodel Layer<br />
WSDL<br />
XML<br />
Schema<br />
XMI<br />
WSDL<br />
Metamodel<br />
Metamodel<br />
transformation<br />
Q-WSDL<br />
Metamodel<br />
XMI<br />
Q-WSDL<br />
XML<br />
Schema<br />
Metamodel layer<br />
WSDL<br />
Metamodel<br />
WSDL<br />
Metamodel<br />
Model Layer<br />
Q-WSDL<br />
Model<br />
Q-WSDL<br />
Metamodel<br />
Figure 35–Processus de développement dirigé par les modèles (D’ambrogio, 2007)<br />
La première étape de ce processus consiste à élaborer le métamodèle de WSDL en s‟inspirant du<br />
schéma de WSDL. Cette étape se base sur des règles XMI (OMG, 2002b) et peut être<br />
automatisée entièrement.<br />
La deuxième étape du processus consiste en la définition d‟une extension du métamodèle WSDL<br />
pour définir le métamodèle de Q-WSDL en intégrant les propriétés de qualité de service telles<br />
que la performance, la disponibilité, le débit, etc. Le métamodèle Q-WSDL a été défini en<br />
s‟inspirant principalement de deux profils UML : UML Profile for QoS and fault tolerance<br />
(OMG, 2005a) et UML Profile for Schedulability, Performance and Time (OMG, 2005b). Il est<br />
utilisé pour faciliter la transformation d‟un modèle WSDL vers un modèle Q-WSDL dans le<br />
cadre de l‟approche MDA via la définition d‟un ensemble de règles de transformation. La<br />
troisième étape définie dans le cadre de ce processus est la génération des documents Q-WSDL<br />
suivant le métamodèle de Q-WSDL.
61<br />
Etat de l’art<br />
I.6.3.4<br />
Approches d’adaptation au contexte<br />
Dans le cadre de l‟approche MDA, plusieurs approches ont été proposées pour le<br />
développement des SOS contextuels. Ainsi, (Sheng et al., 2005) ont défini un profil UML<br />
appelé ContextUML pour la formalisation et la conception des SOSs contextuels. ContextUML<br />
se fonde sur un ensemble de stéréotypes (e.g., Context, ContextSource, ContextService,<br />
ContextServiceCommunity, ContextServiceCommunity, CAMechanism, etc. ) permettant d‟aider<br />
les concepteurs à l‟élaboration des modèles contextuels.<br />
Dans le même objectif que (Sheng et al., 2005), Maamar et al.(Maamar et al., 2006) ont défini<br />
une approche dirigée par les modèles pour le développement des SOSs contextuels. Selon<br />
Maamar et al.( Maamar et al., 2006), cette approche se diffère notamment de la proposition de<br />
(Sheng et al., 2005), en trois points : (i) la proposition de Maamar et al. étend les spécifications<br />
associées à la technologie des services web au niveau métamodèle (ii) l‟approche définie, traite<br />
les caractéristique du contexte de façon générique (ii) les caractéristiques du contexte sont prises<br />
en compte tout au long du cycle de vie du service, (e.g., définition, publication, invocation).<br />
L‟approche proposée se fonde essentiellement sur deux éléments : le premier élément est un<br />
profil UML appelé, lui aussi, ContextUML permettant la modélisation des SOS contextuels.<br />
Ce profil définit les stéréotypes suivants : Subject, CompositeSubject, AtomicSubject, Context,<br />
Visibilty, Visibility, VisibilityConstraint, Action et Description. La figure 36 présente le<br />
métamodèle du profil contextUML.<br />
Figure 36–Métamodèle ContextUML (Maamar et al., 2006)
62<br />
Etat de l’art<br />
I.6.3.5<br />
Discussion<br />
L‟ingénierie logicielle dirigée par les modèles et la technologie des services web ont émergé<br />
récemment pour le développement des SOS complexes et à large échelle. Le fait de combiner<br />
entre ces deux approches apporte plusieurs avantages, entre autres : l‟amélioration de la<br />
productivité, la facilitation de l‟évolution aussi bien technologique que métier, l‟agilité des<br />
systèmes et leur portabilité et interopérabilité.<br />
Nos constats sur l‟utilisation de l‟approche MDA pour le développement des SOS peuvent se<br />
résumer comme suit :<br />
l’absence d’un langage standard et unique pour l‟élaboration des PIM. En fait,<br />
plusieurs formalismes, profils UML et DSL, ont été proposés pour la description des<br />
PIM. Dans cette perspective, nous constatons l‟utilisation d‟UML (Bézévin et al., 2006)<br />
(Gronmo et al., 2004b), d‟EDOC( Patrasciuo, 2004) (Bézivin et al., 2004) (Yu et al.,<br />
2007), du DSL SECTET-PL(Alam et al., 2007a), d‟un profil UML à base de SCA(Ortiz<br />
et al., 2006a) (Ortiz et al., 2006b)et du profil pour la Qos (D‟amborogio et al., 2007).<br />
L’absence d’un langage de transformation unique pour la définition de transformation<br />
malgré la standardisation par l‟OMG de QVT comme un langage de transformation de<br />
modèles. Dans la littérature, plusieurs autres langages ont été utilisés tels que ATL<br />
(Bézévin et al., 2004) (Ortiz et al., 2006a), YATL(Patrasciou et al., 2007) ou QVT( Yu et<br />
al., 2007).<br />
Certaines approches permettent la prise en compte de l’utilisateur final au niveau PIM. Dans<br />
cette optique, (Alam et al, 2007a) proposent un DSL (SECTET-PL) permettant la modélisation<br />
des droits d‟accès des utilisateurs le plus tôt dans le cycle de développement des SOS. Ensuite,<br />
une automatisation de la génération des politiques XACML via un ensemble de règles de<br />
transformations. De telles politiques permettent la gestion des droits d‟accès des utilisateurs<br />
interagissant avec le service. Dans le même objectif, c‟est à dire, la prise en compte de<br />
l‟utilisateur final, D‟ambrogio permet la description de la Qos requise en utilisant le profil UML.<br />
Ensuite, et en s‟inscrivant dans le carde des standards et concepts MDA, une génération de code<br />
ciblant le QWSDL (D‟ambrogio, 2007), une extension de WSDL pour la gestion de la Qos<br />
requise par les différents utilisateurs de services. Quant à (Ortiz et al., 2006a), ils proposent une
63<br />
Etat de l’art<br />
approche MDA pour la prise en compte des propriétés non fonctionnelles (sécurité, temps réel,<br />
loging, etc). Cette approche se fonde principalement sur la description des propriétés non<br />
fonctionnelles en se basant sur un profil UML à base de SCA pour la description des propriétés<br />
non fonctionnelles au niveau PIM, ensuite une génération de code ciblant les plates-formes<br />
technologiques (Aspect, SOAP, politiques, JAX-RPC). L‟approche définie par (Maamar et al.,<br />
2007) se base sur le profil contextUML comme formalisme pour la spécification des<br />
caractéristiques du contexte. Cette approche ne traite pas la génération automatique du code<br />
selon les principes et les standards de l‟approche MDA.<br />
I.7.<br />
Synthèse générale<br />
Les travaux présentés dans ce chapitre «Etat de l‟art» s‟articulent autour de trois axes principaux:<br />
(i) les approches de modélisation des systèmes orientés services<br />
(ii) les approches d‟adaptation des SOSs<br />
(iii) les approches de développement dirigées par les modèles des SOSs.<br />
Les approches de modélisation ont défini des formalismes qui visent la spécification des SOSs<br />
indépendamment des technologies (dotNet, JWSDP, etc.) et des standards (SOAP, WSDL,<br />
UDDI, BPEL4WS, etc.). La définition de ces formalismes est d‟une importance capitale pour la<br />
maitrise de la complexité inhérente au développement des SOSs.<br />
En ce qui concerne les approches d‟adaptation des services, plusieurs propositions ont vu le jour.<br />
Elles ont visé la prise en compte des différentes dimensions des besoins de l‟utilisateur final. De<br />
telles préoccupations concernent particulièrement le contexte de l‟utilisateur, la Qos, la gestion<br />
des droits d‟accès ainsi que les propriétés non-fonctionnelles.<br />
Les approches MDA de développement des SOSs ont pour objectif de profiter des avantages de<br />
MDA (e.g., amélioration de la productivité, capitalisation des modèles métiers, amélioration de<br />
la portabilité et de l‟interopérabilité). Ces approches se fondent sur les concepts et les standards<br />
de l‟approche MDA pour la génération du code automatiquement à partir des modèles métiers.
64<br />
Etat de l’art<br />
Le tableau 7 suivant présente une synthèse des différentes approches étudiées dans le cadre de<br />
cet état de l‟art. Nous avons défini quatre critères pour faire comparer ces différentes approches :<br />
le formalisme/langage de modélisation utilisé pour la spécification des SOS, la prise en compte<br />
de l‟utilisateur (Oui, Non explicite), le niveau de prise en compte de l‟utilisateur (Le niveau PIM<br />
ou le niveau PSM), la préoccupation prise en compte de l‟utilisateur (Contexte, Droits d‟accès,<br />
Profils de l‟utilisateur, etc.) et aussi le critère de la génération automatique de code.<br />
approche<br />
Stojanovic et<br />
al.(Stojanovic<br />
et al, 2004)<br />
Zhang et<br />
al.(Zhang et<br />
al., 2006)<br />
Biesegel et<br />
al.(Biesegel<br />
et al., 2005)<br />
Johnston<br />
(LÓPEZ<br />
SANZ ET<br />
AL., 2008 )<br />
SoaML(OM<br />
G, 2009)<br />
Formalisme de<br />
modélisation<br />
UML, service<br />
component<br />
Profil UML<br />
pour SOA<br />
SoaML<br />
Automatisation<br />
de génération<br />
de code<br />
La prise en<br />
compte de<br />
l‟utilisateur<br />
Le niveau<br />
de prise en<br />
compte des<br />
utilisateurs<br />
Oui Non -- --<br />
Oui Non explicite -- --<br />
Préoccupation(<br />
s) prise(s) en<br />
compte<br />
(Fuchs ,<br />
2004)<br />
(Benslimane<br />
et al., 2005)<br />
(Maamar et<br />
al., 2006)<br />
(Sheng et al.,<br />
2005)<br />
(Lopezvelasco<br />
et<br />
al.,2005)<br />
(kouadri<br />
mostéfaoui et<br />
al., 2006)<br />
Pas de<br />
formalisme<br />
Non Oui PSM --<br />
SCD Non Oui PIM Contexte<br />
ContextUML Non Oui PIM Contexte<br />
ContextUML Non Oui PIM Contexte<br />
-- Non Oui PSM Contexte
65<br />
Etat de l’art<br />
VPL UML Oui Oui PIM Droits d‟accès<br />
Tao tao et al.,<br />
2007)<br />
Machine à<br />
états<br />
Non Oui PIM Profil de<br />
l‟utilisateur<br />
Chang et al. Notation<br />
spécifique<br />
Non Oui PIM Profil de<br />
l‟utilisateur<br />
( Bézivin et UML/EDOC Oui Non explicite -- --<br />
al., 2004<br />
(Patrasciou EDOC Oui Non explicite -- --<br />
al., 2004)<br />
(Gronmo et UML Oui Non explicite -- --<br />
al., 2004a)<br />
(Yu et al., EDOC Oui Non -- --<br />
2007)<br />
(Ortiz et al.,<br />
2007)<br />
Profil UML Oui Oui PIM Aspects non<br />
fonctionnels<br />
Alam (Alam SECTET-PL Oui Oui PIM Droits d‟accès<br />
et al. 2007a)<br />
(Alam et al.<br />
2007b)<br />
(D‟ambrogio<br />
et al., 2007)<br />
Non défini Oui Oui PIM Qos<br />
Tableau 7–Synthèse des différentes approches étudiées<br />
Comme nous le montre le tableau, il n‟y a aucune approche d‟ingénierie des SOSs adaptables qui<br />
définisse un formalisme/langage prenant en compte le profil de l‟utilisateur ou de son contexte<br />
tout en permettant la génération automatique du code conformément aux principes et standards<br />
de l‟approche MDA. La majorité de ces propositions ne se fondent pas sur des<br />
formalismes/notations adaptés à la spécification des SOSs Adaptables. En outre, elles ne<br />
permettent pas la génération automatique du code en respectant les standards de l‟approche<br />
MDA.<br />
Plus concrètement, l‟approche définie par (Maamar et al., 2005)(Benslimane et al. 2005) et<br />
l‟approche définie par (Fink et al., 2003) ne permettent pas la génération automatique de code.<br />
En ce qui concerne l‟approche définie par (Fuchs, 2004) qui se base sur les vues pour<br />
l‟adaptation des services aux types des utilisateurs (Interne/Externe), elle ne définit aucun<br />
formalisme pour la spécification des SOSs à un haut niveau d‟abstraction. Une telle approche<br />
prend en compte l‟utilisateur tard dans le cycle de développement, c‟est à dire au niveau code.
66<br />
Etat de l’art<br />
Les approches à base de la variabilité de service (Chang et al., 2007a) permettent le<br />
développement des SOSs adaptables en prenant en compte le profil de l‟utilisateur tout au long<br />
du cycle de développement. Cependant, cette proposition ne définit aucun formalisme pour la<br />
spécification des SOSs adaptables et elles ne permettent pas la génération automatique de code.<br />
L‟approche d‟adaptation à base du concept du service différencié (Tao et al., 2007) se base sur<br />
les machines à états finis pour la prise en compte des profils des utilisateurs interagissant avec le<br />
service. Cette approche prend en compte l‟utilisateur le plus tôt dans le cycle de développement.<br />
Toutefois, cette approche ne fournit aucun formalisme qui vise la représentation de la structure<br />
statique d‟un SOS. De plus, elle ne permet pas la génération automatique du code.<br />
Les approches qui ont visé l‟extension des standards associés à la technologies des services web<br />
tels que les travaux (lopez-velasco et al, kouadri mostéfaoui et al., 2006) (Maamar et al., 2006)<br />
pour la prise en compte du profil de l‟utilisateur ou de son contexte pour l‟adaptation des<br />
services posent plusieurs problèmes : (i)ces extensions ne sont pas accessibles et<br />
incompréhensibles aux différents stakeholders s‟intéressant au développement des SOSs vu leur<br />
verbosité ainsi que leur bas niveau d‟abstraction (ii) le manque de l‟automatisation de la<br />
génération de code correspondant aux extensions apportées à ces standards pénalise largement le<br />
développement des SOSs adaptables vu que le codage manuel de ces extensions est un exercice<br />
complexe, fastidieux et «error-prone». Par conséquent, il est nécessaire d‟offrir des formalismes<br />
et des notations facilement compréhensibles par les différents stakeholders et permettant<br />
l‟automatisation de la génération de code. Ce qui permet l‟amélioration de la productivité et une<br />
meilleure compréhension des SOS par les différentes stakeholders.<br />
Contrairement aux approches d‟adaptation, les approches de modélisation des SOSs ont défini<br />
différents formalismes pour la spécification des SOSs telles que les travaux à base de Service<br />
Component (Stojanovic et al, 2004) (Zhang et al., 2006), à base de Service Component<br />
Architecture (Biesegel et al., 2005) et à base de profils visant la modélisation des SOSs(Johnston<br />
et al., 2006) (LÓPEZ SANZ ET AL., 2008 et al., 2006) (Zeid et al.,2004). De telles approches<br />
ne prennent pas en compte l‟utilisateur final explicitement au début du cycle de développement.<br />
Les approches définies dans le cadre de MDA permettent l‟automatisation de la génération du
67<br />
Etat de l’art<br />
code. Toutefois, ces approches adoptent des formalismes qui ne sont pas adaptés à la<br />
spécification des SOSs. Elles se fondent sur le langage UML ou le profil EDOC. Or, ces deux<br />
formalismes ne sont pas définis pour la modélisation des systèmes orientés services. En outre, ils<br />
ne permettent pas la prise en compte de l‟utilisateur au niveau PIM.<br />
Concernant les approches MDA de développement des SOSs tout en prenant en compte<br />
l‟utilisateur final, plusieurs propositions ont été définies. Ainsi, pour la prise en compte de la<br />
qualité de service, D‟ambrogio (D‟ambrogio, 2007) s‟est basé sur un profil UML pour la<br />
spécification de la Qos. Le formalisme défini ne permet pas la spécification des SOS. Il se<br />
focalise seulement sur la représentation des caractéristiques de la qualité de service. L‟approche<br />
définie par (Alam et al., 2007a) (Alam et al. 2007b) se fonde sur un DSL dédié pour la gestion<br />
des droits d‟accès. Elle ne définit aucun formalisme pour la spécification des aspects statiques et<br />
dynamiques d‟un SOS. Quant à l‟approche définie par (Maamar et al., 2007), elle définit le<br />
profil contextUML comme formalisme pour la spécification du contexte. Cette approche<br />
n‟adopte pas les standards de l‟approche MDA pour la génération du code.<br />
L‟approche définie par (Ortiz et al., 2006a) traite les aspects non-fonctionnels (temps réels,<br />
login, etc). Certes, l‟approche permet la génération automatique du code suivant les standards et<br />
les principes de l‟approche MDA, cependant le profil défini ne permet pas la prise en compte du<br />
profil de l‟utilisateur mais elle prend en compte uniquement des aspects non fonctionnels.<br />
Pour répondre à la problématique de l‟ingénierie des systèmes orientés services, d‟une part, et<br />
l‟adaptation de tels systèmes à leurs utilisateurs finals, d‟autre part, notre travail de thèse cible à<br />
proposer une approche d‟ingénierie dirigée par les modèles pour le développement des SOSs<br />
adaptables. Une telle approche se base sur :<br />
(i) Un profil UML pour la modélisation et la spécification de ces systèmes tout en prenant en<br />
compte l‟utilisateur le plus tôt dans le cycle de développement. Ce profil définit les différents<br />
éléments de modélisation capables de représenter les différents artefacts d‟un SOS adaptables.<br />
(ii)Un processus de développement définissant les phases, les activités, les artefacts pour le<br />
développement des SOSs Adaptables.
68<br />
Etat de l’art<br />
(iii)Un outil logiciel défini dans le cadre de l‟approche MDA, permettant la génération du code à<br />
partir des modèles métier via un ensemble de règles de transformation.<br />
Dans le chapitre suivant, nous présentons notre profil UML défini pour la modélisation des SOSs<br />
adaptables. Ce profil constitue le premier élément de notre approche d‟ingénierie des SOSs<br />
adaptables.
69 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
II. VSoaML : Un profil UML de modélisation des systèmes orientés<br />
services adaptables<br />
II.1. Introduction<br />
La modélisation joue un rôle fondamental dans la maitrise de la complexité inhérente au<br />
développement des systèmes logiciels. Actuellement, la modélisation s‟est positionnée au centre<br />
du cycle de développement de ces systèmes notamment avec l‟émergence du paradigme MDD<br />
(Model Driven Development) et plus particulièrement de l‟approche MDA. MDA définit une<br />
panoplie très complète de standards et de technologies permettant la facilitation du<br />
développement, de l‟intégration, de l‟évolution et de la maintenance des systèmes en considérant<br />
les modèles comme des entités de première classe dans le processus du développement du<br />
logiciel. Dans le contexte du MDD, les modèles apportent plusieurs avantages, entre autres : (i)<br />
la facilitation de communication entre les différents stakeholders s‟intéressant au développement<br />
d‟un projet informatique (ii) l‟amélioration de la productivité en permettant la génération<br />
automatique du code à partir des modèles métiers de haut niveau (iii) la facilitation de<br />
l‟évolution (technologique ou métier) et de la maintenance.<br />
Pour tirer bénéfice des modèles dans le développement des systèmes logiciels dans le cadre du<br />
SOC, plusieurs approches de modélisation ont été proposées pour la spécification des Systèmes<br />
Orientés Services indépendamment des standards (WSDL, BPEL) et des plates-formes<br />
d‟implémentation (dotNet, J2EE, etc.), comme nous l‟avons présenté dans le chapitre I. En effet,<br />
le développement des systèmes orientés service est généralement basé sur la technologie des<br />
services web qui fournit une infrastructure incluant les standards WSDL, SOAP, UDDI et<br />
BPEL4WS lesquels permettent respectivement la description, l‟invocation, la<br />
découverte/publication et la composition de services. Certes, les technologies et les standards<br />
sont très importants pour l‟implémentation et le déploiement de tels systèmes, mais ils sont<br />
insuffisants pour le développement des systèmes d‟informations d‟entreprises complexes et<br />
distribués, vu que les différents stakeholders (les analystes métiers, les architectes, les utilisateurs<br />
finals, les développeurs, etc.) n‟ont pas forcément de connaissances techniques.
70 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Par conséquent, il est nécessaire d‟avoir un formalisme/notation, à l‟instar de UML pour les<br />
approches orientées objets permettant de représenter les services et de leur chorégraphie à un<br />
haut niveau d‟abstraction pour qu‟ils soient compréhensibles par les différents stakeholders<br />
s‟intéressant au développement d‟un système à base de services.<br />
Par ailleurs, la prise en compte de l‟utilisateur final est devenue une préoccupation majeure dans<br />
le développement des systèmes orientés services surtout avec l‟émergence de l‟informatique<br />
sensible au contexte (Dey, 2000). Dans cette optique, plusieurs approches ont été proposées<br />
visant la prise en compte des différentes dimensions des besoins des utilisateurs finals. De telles<br />
approches se basent sur de nouveaux concepts (Toa et al., 2007) (Bouguettaya et al., 2009) de<br />
nouvelles architectures (Rolland et al., 2007) (Chang et al., 2006) ou de nouvelles technologies<br />
(Kouadri Mostefaoui et al., 2005)(Lopez-velasco et al., 2005)(Keidl et al., 2004). Ces approches<br />
ne définissent pas les formalismes et notations pour la prise en compte assez tôt de l‟utilisateur<br />
final dans le cycle de développement des systèmes orientés services.<br />
Dans la perspective de la modélisation des systèmes orientés services, d‟une part, et la prise en<br />
compte de l‟utilisateur final, d‟autre part, nous proposons, dans le cadre de ce chapitre, un profil<br />
UML pour la modélisation des systèmes orientés services adaptables aux différents types<br />
d‟utilisateurs. Ce profil appelé VsoaML (View based Service Oriented Architecture Modeling<br />
Language) se base principalement sur le concept de services multivues. Le service multivues<br />
(Kenzi et al., 2008) est une entité de modélisation de première classe capable de représenter les<br />
besoins des utilisateurs et leurs exigences au plus tôt dans le cycle de développement des<br />
systèmes orientés services. Il permet la capture des besoins des utilisateurs et de leurs exigences<br />
tout en séparant leurs préoccupations fonctionnelles. Pour ce faire, le service multivues fournit,<br />
en plus des interfaces simples qui caractérisent le service, des interfaces de service capables de<br />
décrire les capacités suivant le profil de l‟acteur interagissant avec le service.<br />
En plus du concept de service multivues, le profil VSoaML définit différents stéréotypes dans<br />
l‟objectif de spécifier et modéliser les aspects structurels et comportementaux des systèmes<br />
orientés services adaptables aux différents types d‟utilisateurs. VSoaML permet de représenter<br />
les services constituant un SOS, leurs interfaces, leurs opérations ainsi que leurs messages<br />
d‟entrée/sortie. Il permet aussi de modéliser les différents processus métiers comme des
71 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
collaborations de services pour répondre à des exigences complexes auxquels un seul service ne<br />
peut pas répondre.<br />
Ce chapitre est organisé comme suit : La section 2 décrit notre étude de cas concernant un<br />
système d‟enseignement à distance. La section 3 présente le concept de service multivues comme<br />
un élement clé de notre approche. La section 4 illustre les différentes couches d‟abstractions que<br />
nous avons définies pour la spécification des SOSs adapatables en se basant sur le service<br />
multivue. La section 5 présente notre profil VSoaML pour la modélisation des systèmes orientés<br />
services en définissant les stéréotypes de ce profil ainsi que son métamodèle. La section 6<br />
présente la modélisation du système d‟enseignement à distance en utilisant notre profil VSoaML.<br />
II.2. Exemple illustratif : Le système d’enseignement à distance<br />
Notre étude de cas est une version simplifiée d‟un Système d‟enseignement à distance (DLS-<br />
Distance Learning System) (Nassar et al., 2005). Notre objectif est d‟utiliser ce système tout en<br />
l‟étendant avec des nouvelles fonctionnalités inspirée du systéme d‟enseignement à distance<br />
Moodle (http://docs.moodle.org/fr/Accueil). Ce système est en interaction potentiellement avec<br />
trois acteurs : l‟étudiant, l‟enseignant et l‟administrateur. Pour chaque acteur, il fournit les<br />
fonctionnalités qui correspondent à ses besoins. Ainsi, le système fournit les fonctionnalités<br />
nécessaires à l‟étudiant pour faire son inscription. Il lui permet de suivre les formations,<br />
d‟accéder aux exercices, de poser les questions, de consulter les projets d‟une formation donnée,<br />
de faire des quiz et d‟envoyer des messages aux forums de discussion spécifiques à une<br />
formation donnée, de passer les examens, de télécharger le sujet des examens, de poser les<br />
questions de compréhension et de consulter ses notes. Il permet aussi aux étudiants de<br />
télécharger les documentations nécessaires (fichiers pdf, audio/video, etc).<br />
Quant à l‟enseignant, il utilise le système pour créer des cours, pour répondre aux questions des<br />
étudiants, pour proposer des exercices et pour répondre aux messages des forums de discussion.<br />
Il utilise aussi le système pour charger les documents concernant une formation spécifique ainsi<br />
que pour la mise à jour ou la suppression des contenus des cours.<br />
Le système permet à l‟administrateur de gérer les inscriptions des étudiants, de fixer les frais
72 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
d‟inscription aux différentes formations et de décider des inscriptions des étudiants. L‟acteur<br />
administrateur utilise le système pour fixer les frais d‟une formation donnée, pour gérer le<br />
calendrier d‟une formation et pour affecter les responsables des formations. Il permet à<br />
l‟enseignant de proposer un examen et de répondre aux questions des examens.<br />
La figure 37 illustre les différents cas d‟utilisation de ce système.<br />
II.3. Le concept de service multivues<br />
Figure 37–Diagramme des cas d’utilisation du DLS<br />
L‟objectif de cette section est de présenter le concept de service multivues qui a été introduit<br />
comme un moyen de flexibilité et d‟adaptabilité. Pour ce faire, nous introduisons tout d‟abord le<br />
concept de vue. Ensuite, nous présentons le concept de service multivues comme une
73 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
combinaison entre le concept de vue et le concept de service.<br />
II.3.1. Le concept de vue<br />
Le concept de vue est largement utilisé dans plusieurs domaines de l‟informatique tels que les<br />
systèmes de gestion de base de données (Abiteboul et al., 1991), les systèmes de gestion des<br />
Worflows (Chebbi et al., 2006), les approches orientées objet (Coulette et al., 1996)(Kriouile et<br />
al., 1995) et tout récemment dans le domaine de la technologie des services (Fuchs, 2004)<br />
(Maamar et al., 2005).<br />
Dans le cadre de l‟utilisation des vues pour le développement des applications orientées objet,<br />
notre équipe a défini la méthode VBOOM (View Based Oriented Object Method) (Kriouile,<br />
1995) pour analyser et concevoir des applications orientées objet en se basant sur le concept de<br />
vue. VBOOM définit un processus itératif et récursif de trois phases, chacune d'elles étant<br />
composée de trois étapes. Elle possède aussi un atelier de génie logiciel appelé VBTOOL (Hair<br />
1997, Marzak 1997, Hair et al. 1998). Dans l‟objectif de situer la méthode VBOOM dans le<br />
cadre du standard UML et de faire face à ses limites (e.g., Subjectivité dans la définition des vues,<br />
Manque d'outils performants pour le support à VBOOM, etc.), un profil UML appelé VUML(View<br />
Based Unified Modeling Language) a été défini. VUML se base sur les vues. Il offre un<br />
formalisme étendant celui d‟UML et une démarche inspirée de celle de la méthode VBOOM<br />
(Nassar, 2004). L‟ajout principal à UML est le concept de classe multivues qui est composée<br />
d‟une base (partie partagée par tous les acteurs) et d‟un ensemble de vues (extensions de la base).<br />
Chaque vue correspond aux besoins spécifiques d'un acteur (utilisateur final, développeur, ...).<br />
VUML offre des mécanismes pour gérer les droits d‟accès aux classes multivues, spécialiser une<br />
classe multivues, spécifier les dépendances entre les vues, assurer la cohérence du modèle en cas<br />
de mises à jour, administrer les vues à l‟exécution, etc. En plus du concept de classe multivues,<br />
VUML introduit aussi le concept de composant multivues (El Asri, 2005) permettant de<br />
représenter une classe multivues au niveau du diagramme des composants. La spécificité d‟un<br />
composant multivues est la possibilité d‟avoir des interfaces dont l‟accessibilité et le<br />
comportement changent dynamiquement selon le point de vue de l‟utilisateur courant du<br />
système.
74 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Dans le but d‟accompagener l‟évolution de l‟ingénierie logicielle vers le paradigme SOC, nous<br />
adoptons le concept de vue comme un moyen permettant la séparation des préoccupations<br />
fonctionnelles. Les vues permettent la mise en évidence de ce qui est attendu par un utilisateur<br />
donné. En général, les vues apportent les avantages suivants (Maamar et al., 2005) :<br />
Elles améliorent la sécurité en cachant les éléments de la spécification des<br />
services variant d‟un utilisateur à un autre.<br />
Elles fournissent une flexibilité en identifiant les spécifications de services<br />
adaptées à chaque type de client en tenant compte son profil.<br />
Elles fournissent différentes perspectives aux différents utilisateurs avec<br />
différents niveaux d‟abstraction.<br />
Dans cette thèse, nous proposons l‟utilisation des vues comme mécanisme de séparation de<br />
préoccupations fonctionnelles, de flexibilité et d‟adaptabilité.<br />
II.3.2. Le service multivues<br />
SOC a pour objectif le développement et la maintenance des applications distribuées<br />
interopérables et agiles en optimisant les délais et les coûts. SOC se base sur le concept de<br />
service comme un élément fondamental pour le développement des Applications/Solutions. En<br />
SOC, le service est défini comme un élément informatique indépendant de la plateforme et<br />
autonome (self-contained) permettant le support de la composition des applications distribuées<br />
en couplage faible facilement et à moindre coût. Chaque service possède une description qui peut<br />
être publiée dans un annuaire de service. En se basant sur cette description, un client de service<br />
peut découvrir le service qui correspond à ses besoins pour pouvoir construire des applications<br />
composites à valeur ajoutée en faisant seulement la composition des applications existantes. Les<br />
applications à base de services sont développées comme des ensembles indépendants de services<br />
qui interagissent en fournissant des interfaces bien définies avec leurs utilisateurs potentiels.<br />
En SOC, un service peut interagir avec plusieurs utilisateurs ayant chacun un profil bien<br />
déterminé. Chaque client de service avec un profil donné, a des besoins spécifiques que le<br />
service doit y répondre. Dans le but d‟assurer une large utilisation, de la flexibilité et de<br />
l‟adaptabilité, le service doit fournir les fonctionnalités requises qui correspondent aux besoins
75 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
des utilisateurs l‟invoquant. De ce fait, le problème central qui se pose, au niveau<br />
Analyse/Conception des systèmes orientés services, est comment modéliser l‟aspect<br />
multidimensionnel des besoins des utilisateurs interagissant avec le service. La figure 38 montre<br />
la diversité des types de clients qui peuvent interagir avec le service.<br />
Publish<br />
Publish<br />
Annuaire de<br />
Services<br />
Publish<br />
Publish<br />
Find<br />
Find<br />
Find<br />
Find<br />
Client de<br />
service 1<br />
Client de<br />
service 2<br />
Client de<br />
service 3<br />
Client de<br />
service M<br />
Invoke<br />
Invoke<br />
Invoke<br />
Invoke<br />
Invoke<br />
Invoke<br />
Invoke<br />
Invoke<br />
Invoke<br />
Service 1<br />
Service 2<br />
Service 3<br />
Service N<br />
Description<br />
Description<br />
Description<br />
Description<br />
Implémentation<br />
Implémentation<br />
Implémentation<br />
Implémentation<br />
Figure 38–Modèle d’interaction des services avec leurs clients<br />
Pour faire face à ce problème, nous proposons le concept de service multivues (Kenzi et al.,<br />
2007) (Kenzi et al., 2008a) (Kenzi et al., 2008b) comme une entité de modélisation de première<br />
classe. Une telle entité permet la modélisation des besoins des utilisateurs et de leurs exigences<br />
tout au début du cycle de développement des systèmes orientés services en séparant leurs<br />
préoccupations fonctionnelles. Pour ce faire, le service multivues fournit/requiert un ensemble<br />
d‟interfaces de service visuelles(ViewServiceInterface). Chaque interface de service
76 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
visuelle(ViewServiceInterface) permet de décrire les capacités du service fournies/requises<br />
suivant le profil de l‟acteur interagissant avec le service. L‟intersection des différentes interfaces<br />
visuelles constitue une interface de service de base (baseServiceInterface) qui est accessible à<br />
tous les acteurs interagissant avec le service. L‟interface ViewServiceInterface dépend de la<br />
baseServiceInterface dans le sens où les fonctionnalités de la base sont implicitement incluses<br />
dans toutes les interfaces de service vues (ViewServiceInterface). Les interfaces de service vues<br />
(ViewServiceInterface) et l‟interface de service de base (baseServiceInterface) sont regroupées<br />
dans un package que nous appelons interface de service multivue (MVServiceInterface).<br />
A la conception, un service multivues possède un ensemble d‟interfaces de service vues. A<br />
l‟exécution, un service multivues se comporte comme un service régulier avec des interfaces<br />
régulières dont la définition à un moment donné est le résultat de la combinaison des<br />
fonctionnalités incluses dans l‟interface de service de base et les fonctionnalités incluses dans les<br />
interfaces de service vues qui correspondent à l‟acteur actif.<br />
La figure 39 illustre la métamodèle de l‟interface de service multivues.<br />
Figure 39–Métamodèle de l’interface MVServiceInterface
77 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Dans le cadre de notre cas d‟étude, nous avons identifié le service multivues Formation. Ce<br />
service multivues est en interaction avec trois acteurs : Enseignant, Etudiant et Administrateur<br />
(cf. figure 40). Chaque acteur a ses propres besoins auxquels le service doit répondre. Le service<br />
multivues est spécifié par la spécification ‘‘Formation’’. Une telle spécification contient la<br />
description de l‟interface de service de base qui reflète les fonctionnalités communes accessible<br />
aux trois acteurs qui interagissent avec le service Formation et les fonctionnalités spécifiques à<br />
chaque acteur encapsulées dans les interfaces «ViewServiceInterface». Ainsi, les trois acteurs<br />
peuvent invoquer les opérations définies dans l‟interface de service de base « Formation »<br />
composée principalement des opérations suivantes : consulterSynopsisFormation et<br />
consulterListFormation permettant respectivement aux différents acteurs d‟avoir un synopsis<br />
d‟une formation donnée et de voir la liste des cours fournis par un DLS. Par ailleurs, les<br />
interfaces "ViewServiceInterface" Formation_administrateur, "ViewServiceInterface"<br />
Formation_Etudiant et "ViewServiceInterface" Formation_Enseignant associées respectivement<br />
à l‟Administrateur, l‟Etudiant et l‟Enseignant ne sont accessibles qu‟à leurs acteurs associés.<br />
Plus précisément, l‟acteur administrateur peut invoquer seulement les opérations appartenant à<br />
"ViewServiceInterface" Formation_Administrateur. Un acteur Etudiant peut invoquer seulement<br />
les opérations "ViewServiceInterface" Formation_Etudiant et un acteur Enseignant peut<br />
invoquer seulement les opérations appartenant à l‟interface "ViewServiceInterface"<br />
Formation_Enseignant.<br />
La figure 40 montre l‟interface de service multivues du service multivues «Formation».<br />
Formation<br />
<br />
Formation_Enseignant<br />
CreerFormation()<br />
supprimerFormation()<br />
ajouterExercice()<br />
ajouterSolutionExercice()<br />
proposerProjet()<br />
poserQuestion()<br />
proposerForum()<br />
proposerTest()<br />
proposerGroupeProjet()<br />
consulterProjet()<br />
ajouterAnnounceFormation()<br />
respondreQuestions()<br />
<br />
Formation_Etudiant<br />
consulterFormation()<br />
consulterExercice()<br />
proposerSolutionExercice()<br />
posterMessage()<br />
proposerSoultionTest()<br />
consulterRessourceProjet()<br />
consulterProjet()<br />
consulterAnnounceFormation()<br />
<br />
<br />
<br />
Formation_Administrateur<br />
ajouterNouvelleFormation()<br />
ajouterAgendaFormation()<br />
ajouterAnnounceFormation()<br />
supprimerFormation()<br />
affecterResponsableFormation()<br />
<br />
<br />
Formation_base<br />
consulterSynopsisFormation()<br />
consulterListFormation()<br />
Figure 40–Interface de service multivues du service multivues «Formation »
78 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
II.4. Les couches d’abstraction d’un SOS Adaptable<br />
Un système orienté service se compose généralement de plusieurs couches. Chaque couche se<br />
base sur les fonctionnalités de la couche sous-jacente pour mener à bien sa mission.<br />
Concrètement, six couches ont été définies (Papazoglou, 2007) comme nous illustrons dans la<br />
figure 41 :<br />
La Couche Domaine métier: Cette couche permet la segmentation de l‟activité d‟une<br />
organisation donnée, en un ensemble de domaines fonctionnels. Chaque domaine fonctionnel<br />
définit un ensemble de processus métier qui partagent des ressources et des fonctionnalités et<br />
peuvent collaborer pour atteindre les objectifs de haut de niveau de l‟entreprise. Un exemple de<br />
domaines métier dans le cadre d‟une entreprise donnée, peut être le domaine fonctionnel finance,<br />
assurance, comptabilité, etc.<br />
La couche processus métier : La couche processus métier se compose d‟une multitude de<br />
processus métier associés aux différents domaines métier. Chaque processus métier définit une<br />
séquence d‟activités en vue de répondre pertinemment aux événements métier adressés à une<br />
entreprise.<br />
La couche Services métier : un processus métier se définit en termes d‟un ensemble d‟activités.<br />
Chaque activité est automatisée par l‟exécution d‟un service donné. La couche service métier qui<br />
constitue la troisième couche d‟un système orienté service se compose ainsi des différents<br />
services constituant le système et permettant de supporter les différents processus métiers de<br />
l‟entreprise. La couche services métier est la couche principale d‟un système orienté service. En<br />
effet, le service est l‟élément fondamental permettant de réaliser et d‟automatiser les différentes<br />
activités de l‟entreprise. Chaque entreprise peut être vue comme une interconnexion de services<br />
qui s‟exécutent pour atteindre les objectifs métiers de haut niveau de l‟entreprise tout en<br />
facilitant son évolution et son agilité.<br />
La couche service d’infrastructure : la couche service d‟infrastructure assure des fonctionnalités<br />
d‟infrastructure en se basant sur des services techniques de grosse granularité et réutilisable dans<br />
le cadre de plusieurs processus métiers. Elle est responsable de la provision d‟une infrastructure<br />
technique permettant le développement, la provision et la maintenance des services et des<br />
processus métier tout en facilitant leur intégration. Elle est aussi responsable de la qualité de<br />
services, de la messagerie fiable, du routage intelligent ainsi que de la supervision et la gestion
79 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
de services. Pour assurer de telles fonctions, la couche service d‟infrastructure définit plusieurs<br />
types de services : les services utilitaires, les services d‟accès, les services de management et de<br />
monitoring ainsi que les services d‟interaction. D‟un point de vue technique, les fonctionnalités<br />
de cette couche sont assurées généralement par un logiciel spécifique à savoir le bus de service<br />
Figure 41–Couches fonctionnelles d‟un SOS (Papazoglou, 2007)<br />
de l‟entreprise. En pratique, plusieurs ESB ont émergé récemment tels que Mule ESB, etc.<br />
La couche implémentation : Chaque service possède une implémentation de service. Un service<br />
fait une séparation entre la spécification de service et l‟implémentation de service. Une<br />
implémentation de service est créée selon deux scénarios. Le premier scénario consiste à<br />
développer un service en utilisant un langage de programmation donné tels que Java, C#, etc. Le<br />
deuxième scénario est l‟adaptation des applications existantes.<br />
La couche systèmes opératoires : Cette couche est utilisée par la couche « Implémentation des<br />
services à base de composant» pour l‟implémentation des processus et des services. La couche<br />
contient les systèmes existants et les applications tels que les systèmes de CRM, d‟ERP, les<br />
SGBD et les applications existantes, etc.<br />
Dans l‟objectif de maitriser la complexité du développement des systèmes orientés services<br />
adaptables aux différents types d‟utilisateurs, il est nécessaire de définir des couches<br />
d‟abstractions permettant de décrire les différents aspects (i.e., structurels ou comportementaux)
80 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
de tels systèmes. Dans cette optique, nous avons défini plusieurs couches pour la représentation<br />
des différentes perspectives adaptées aux différents stakeholders(e.g., Analyste métier,<br />
Architecte, Développeur, Utilisateur final, etc.) d‟un SOS adaptable. Chaque couche se compose<br />
d‟un ensemble de modèles qui correspondent aux besoins des différents stakeholders.<br />
Globalement, nous identifions les couches suivantes :<br />
La couche métier (Business Layer) : la couche métier est définie en se basant sur un ensemble<br />
de modèles permettant de décrire les exigences métiers. L‟objectif de cette couche est la<br />
spécification des exigences métiers. Principalement, cette couche se compose des modèles des<br />
cas d‟utilisation et des modèles BPMN. Les modèles des cas d‟utilisation permettent la<br />
formalisation des besoins des utilisateurs associés aux différents acteurs interagissant avec le<br />
système. Les modèles BPMN permettent la description des différents scénarios de réalisation des<br />
cas d‟utilisations.<br />
La couche logique : La couche logique se compose de différents modèles. Principalement, nous<br />
avons défini les modèles suivants :<br />
(1) Les modèles de services multivues (multiview services models) : Ces modèles permettent de<br />
représenter les différents services multivues composant le système. Ils constituent l‟élément<br />
central d‟un système orienté service adaptables aux différents types d‟utilisateurs. De tels<br />
modèles ont pour objectif la représentation des différents services multivues, de leurs interfaces,<br />
des entrés/sorties en termes de messages de chaque opération constituant l‟interface de services<br />
indépendamment des plateformes technologiques et des standards. Ce modèle permet aux<br />
différents stakeholders d‟un SOS adaptable aux différents types d‟utilisateurs, de comprendre sa<br />
structure.<br />
(2) Les modèles d’information : les modèles d‟informations permettent la définition des<br />
différentes structures de données échangées entre les différents services et leurs clients. En effet,<br />
chaque service possède un ou plusieurs interfaces se composant d‟un ensemble d‟opérations qui<br />
manipulent en entrée/ sorties des messages. Ces messages sont définis principalement à partir des<br />
modèles d‟informations associés à chaque système.<br />
(3) Les modèles de composition de services multivues : En SOC, un service est indépendant et<br />
autonome, mais il est composable pour la réalisation d‟un ou de plusieurs processus métiers.<br />
Les modèles de composition de services multivues visent la modélisation de la collaboration de
81 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
plusieurs services pour accomplir des objectifs métiers qu‟un seul service atomique ne peut pas<br />
atteindre. Les modèles de composition de services multivues sont définis principalement en<br />
utilisant différents diagrammes tels que les diagrammes BPMN, ou les diagrammes d‟activités<br />
UML ainsi que les diagrammes d‟états.<br />
La couche physique : La couche physique se compose des différents artefacts d‟un système<br />
orienté service adaptable selon une plateforme donnée. Il s‟agit principalement de la<br />
représentation des descriptions de services multivues, de leurs implémentations, de leurs<br />
compositions ainsi que des différents aspects non-fonctionnels tels que les politiques de contrôle<br />
des droits d‟accès XACML.<br />
La figure 42 illustre les différentes couches d‟abstraction définies ainsi que les modèles y<br />
associées.<br />
La couche métier<br />
Modèles des cas d‟utilisation<br />
Modèles BPMN<br />
La couche logique<br />
Modèles des services multivues<br />
Modèles d‟information<br />
Modèles de composition de<br />
services multivues BPMN<br />
La couche physique<br />
Composant Service 1<br />
Description<br />
XSD<br />
Composition de services BPEL<br />
Figure 42–SOS adaptable : Couches d’abstraction
82 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Pour l‟élaboration de ces différentes couches, nous nous appuyons sur un langage de haut<br />
niveau permettant de faciliter la communication entre les différents acteurs s‟intéressant à la<br />
construction des SOS adaptables. Ce langage permet d‟exprimer les différents modèles<br />
composant chaque couche reflétant les perspectives des différents acteurs.<br />
L‟objectif des sections suivantes est de présenter notre langage pour l‟élaboration des différents<br />
modèles composant chaque couche.<br />
II.5. Le profil VSoaML<br />
L‟objectif de cette section est de présenter VSoaML (Kenzi et al., 2009), un profil UML2.0 pour<br />
la modélisation des systèmes orientés services adaptables aux différents types d‟utilisateurs. Ce<br />
profil est une extension d‟UML2.0. Il définit les différents stéréotypes étendant les métaclasses<br />
UML2.0 dans l‟objectif de spécifier et modéliser des systèmes orientés services adaptables. Nous<br />
commençons tout d‟abord par présenter une vue d‟ensemble du profil VSoaML. Ensuite, nous<br />
présentons ses différents stéréotypes ainsi que leurs métaclasses<br />
de base UML2.0. Nous<br />
décrivons chaque stéréotype en présentant sa description, ses contraintes, ses attributs et ses<br />
associations tout en l‟illustrant avec des exemples concrets.<br />
II.5.1. Le profil VSoaML : Vue d’ensemble<br />
UML est un langage de modélisation à destination d‟un grand nombre de domaines d‟application<br />
et à tous types d‟applications logicielles. Cependant, chaque domaine a des notions particulières<br />
et des besoins spécifiques qu‟UML peut supporter par le biais de ses extensions, regroupées en<br />
«Profils UML ». Un profil UML est un moyen permettant de structurer les extensions apportées<br />
au langage standard<br />
constraints).<br />
UML via ses mécanismes d‟extension (tagged values, stereotypes et<br />
Plusieurs profils UML ont été standardisés par l‟OMG tels que EDOC (Enterprise Distributed<br />
Object Computing) (OMG, 2002d) (OMG, 2005) ou UML pour CORBA (OMG, 2002c) ou<br />
UML pour le temps réel, ou encore UML pour les EJB (Enterprise Java Beans).<br />
Un profil UML est une spécialisation du méta modèle UML pour un domaine d‟utilisation<br />
particulier. Il regroupe de manière cohérente des extensions du métamodèle UML et définit leurs<br />
règles de cohérence. Les profils UML peuvent hériter d‟autres profils, avoir des dépendances<br />
entre eux, ou encore être regroupés. Un modèle UML est construit sous un profil particulier,
83 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
c‟est à dire qu‟il est élaboré relativement à un contexte qui lui apporte une sémantique<br />
spécifique.<br />
Profil VSoaML<br />
<br />
Class<br />
<br />
Property<br />
<br />
Port<br />
<br />
Message<br />
<br />
Message Attachment<br />
<br />
Service<br />
<br />
Port<br />
<br />
Connector<br />
<br />
Collaboration<br />
<br />
MVService<br />
<br />
Service Channel<br />
<br />
Service Collaboration<br />
<br />
Package<br />
<br />
Interface<br />
<br />
Service Domain<br />
<br />
MVServiceInterface<br />
<br />
ViewServiceInterface<br />
<br />
BaseServiceInterface<br />
<br />
Artifact<br />
<br />
classifier<br />
<br />
MVServiceSpecification<br />
<br />
Specification<br />
<br />
Service Provider<br />
<br />
Service Requester<br />
Figure 43–Stéréotypes de VSoaML et leurs métaclasses de base UML2.0<br />
Comme nous l‟avons vu dans l‟état de l‟art, plusieurs profils ont été proposés pour la<br />
modélisation des applications SOA (Johnston et al., 2006) (Amir et al., 2004). Ces profils
84 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
définissent un langage de haut niveau pour la modélisation des services. Néanmoins, ces profils<br />
n‟intègrent que tardivement l‟utilisateur final dans le cycle de développement des systèmes<br />
orientés services.<br />
Dans le but de la prise en compte le plus tôt possible de l‟utilisateur final dans le cycle de<br />
développement des systèmes orientés services, nous proposons le profil VSoaML. Ce profil se<br />
base principalement sur le concept de service multivues présenté dans la section 3.<br />
Le profil VSoaML définit un ensemble de stéréotypes. La définition de ces stéréotypes est<br />
inspirée des concepts de l‟architecture SOA ainsi que des profils UML définis pour la<br />
Figure 44–Métamodèle de VSoaML
85 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
modélisation des applications SOA (Johnston et al., 2006). La figure 43 illustre les<br />
différentsstéréotypes de ce profil ainsi que leurs métaclasses de base UML2.0. La figure 44<br />
illustre le métamodèle du profil VSoaML.<br />
Le tableau 8 présente succinctement les différents stéréotypes du profil VSoaML. Dans la<br />
première colonne, nous présentons chaque stéréotype du profil VSoaML. Dans la deuxième,<br />
nous présentons la métaclasse de base de ce stéréotype. La troisième colonne présente une<br />
description succincte de chaque stéréotype.<br />
Stéréotype (VSoaML) Metaclasse Description<br />
(UML)<br />
Message<br />
Class<br />
est un élément de modélisation qui<br />
définit les structures de données échangées. Il<br />
spécifie aussi la propriété “Encoding” pour spécifier<br />
l‟encodage SOAP ou RPC.<br />
MessageAttachment<br />
Property<br />
est un élément de<br />
modélisation permettant d‟indiquer si le contenu d‟un<br />
message est un attachement ou pas<br />
Service<br />
Port<br />
est un élément de modélisation qui<br />
permet de représenter un point final de<br />
communication. Un service n‟identifie pas seulement<br />
ses interfaces fournies mais peut aussi identifier ses<br />
interfaces requises.<br />
MVService<br />
Port<br />
> est un élément de modélisation qui<br />
permet de représenter un service adaptable aux types<br />
de ses clients. La spécificité d‟un service multivues<br />
est qu‟il peut fournir comme il peut requérir des
86 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
interfaces qui s‟adaptent aux profils des utilisateurs.<br />
Channel<br />
Connector<br />
est un élément de modélisation<br />
permettant de décrire une connexion entre services. Il<br />
spécifie les liaisons avec les protocoles de transport<br />
(SOAP, HTTP, JMS, etc.)<br />
ServiceCollaboration<br />
Collaboration<br />
est un élément de<br />
modélisation qui spécifie le comportement d‟un<br />
ensemble de services ou de services multivues qui<br />
coopèrent<br />
Requester Classifier est un élément de modélisation qui<br />
représente un client de service<br />
ServiceDomain<br />
Package<br />
définit un groupement logique<br />
ou physique d‟un ensemble de services<br />
Provider<br />
Class<br />
est un élément de modélisation<br />
permettant la représentation d‟un fournisseur d‟un<br />
ou de plusieurs services.<br />
ServiceSpecification<br />
Artifact<br />
est un élément de<br />
modélisation permettant la spécification des<br />
opérations et leurs messages associés qui définissent<br />
le service.<br />
BaseServiceInterface<br />
Interface<br />
est un élément de<br />
modélisation qui représente un ensemble<br />
d‟opérations qui peuvent être invoquées par tous les
87 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
acteurs interagissant avec un service donné.<br />
permet de modéliser les<br />
fonctionalités du service accessible à tous les clients<br />
de service.<br />
ViewServiceInterface Interface<br />
permet de représenter une<br />
sorte d‟interface propres à un acteur donné<br />
interagissant avec le service. ViewServiceInterface<br />
permet de modéliser les capacités de services<br />
spécifiques à un acteur spécifique interagissant avec<br />
un service donné.<br />
MVServiceInterface Package est un élément de<br />
modélisation étendant la métaclasse Package. Ce<br />
stéréotype permet de regrouper des fonctionnalités<br />
logiquement cohésives. Il se compose d‟une interface<br />
de service de base accessible à tous types de clients<br />
de services et un ensemble des interfaces de service<br />
vues accessibles uniquement par un type particulier<br />
de clients de service.<br />
ServiceOperation Operation permet de représenter une<br />
opération d‟un service modélisant une fonctionnalité<br />
fournie d‟un service donné. La spécificité de<br />
est qu‟elle manipule des<br />
données de grosse granularité ayant une valeur dans<br />
le cadre d‟un processus métier.<br />
manipule en entrée, en sortie<br />
ou en erreur des messages.<br />
MVServiceSpecification Class permet de décrire les<br />
services multivues. Ainsi, chaque<br />
MVServiceSpecification contient la description d‟une
88 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
interface de service de base accessible à tous les<br />
acteurs et il contient la description des interfaces vue<br />
associés à un type particulier d‟acteur.<br />
> Dependency Le stéréotype permet de décrire une<br />
relation d‟inclusion entre une interface de service vue<br />
(viewServiceInterface) et une interface de service de<br />
base (baseServiceInterface)<br />
Dependency Le stéréotype permet de représenter<br />
une relation de spécification entre (Service,<br />
Specification) et entre (MVService,<br />
MVServiceSpecification).<br />
Tableau 8–Stéréotypes du profil VSoaML<br />
II.5.2. VSoaML : les stéréotypes<br />
L‟objectif de cette section est de présenter chaque stéréotype constituant le profil VSoaML.<br />
II.5.2.1<br />
Le stéréotype Service<br />
Le stéréotype Service est un élément de modélisation permettant de représenter un point final de<br />
communication. Un service n‟identifie pas seulement ses interfaces fournies mais peut aussi<br />
identifier ses interfaces requises.<br />
Ce stéréotype ne peut être utilisé qu‟avec des éléments (classes, composants, systèmes, etc.)<br />
stéréotypés comme . Un service possède un attribut binding qui permet de<br />
spécifier la liaison à utiliser telle que SOAP-HTTP ou SOAP-JMS.<br />
Le stéréotype Service étend la métaclasse Port comme métaclasse de base d‟UML2.0. La Figure<br />
45 illustre la métaclasse service et ses associations.
89 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Figure 45–Stéréotype Service<br />
La figure 46 illustre un exemple de service. Un service fournit une ou plusieurs interfaces.<br />
Chaque interface permet de représenter les fonctionnalités fournies par le service à ses clients.<br />
Agenda<br />
<br />
<br />
Agenda<br />
ajouterEvenement(e : Evenement);<br />
updateEvent(e :Evenement);<br />
supprimerEvenement(e:Evenement);<br />
Figure 46–Service Agenda
90 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Chaque opération de service possède un message en entrée et en sortie. Un message d‟entrée<br />
permet de représenter les données manipulées par une opération de service. Un message de sortie<br />
représente les données résultat de l‟exécution d‟une opération donné. La figure 46 présente un<br />
service Agenda. Ce service fournit une interface de service Agenda qui se compose<br />
d‟opérations : ajouterEvenement, updateEvenement, supprimerEvenement. Il permet à un<br />
l‟acteur Administrateur de gérer l‟agenda des formations. Ainsi, le service permet de créer des<br />
événements, de les modifier ou de les supprimer.<br />
II.5.2.2 Le stéréotype Message<br />
L‟objectif du stéréotype Message est la spécification des informations échangées entre un service<br />
et ses clients. Ces informations concernent les données constituant une entrée/sortie d‟une<br />
opération d‟un service donné. L‟usage de ce stéréotype peut être optionnel du moment où on<br />
peut identifier les messages à partir des paramètres d‟entrés ou de sortie des opérations<br />
constituant l‟interface de service.<br />
Le stéréotype message étend la métaclasse «Class ». Il possède un attribut encoding qui permet<br />
de définir le codage de données à utiliser (SOAP-RPC, ASN, etc.).<br />
Deux contraintes ont été associées à l‟utilisation du stéréotype Message :<br />
un message ne possède pas d‟opérations<br />
un message ne possède pas de comportements.<br />
La figure 47 illustre la métaclasse Message du profil VSoaML et ses associations.
91 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Figure 47–Stéréotype message<br />
La figure 48 montre un exemple de messages. En effet, chaque opération possède un message en<br />
entrée et un autre en sortie. L‟opération addcourse possède en entrée un message spécifiant les<br />
informations en entrée. Ce message se compose d‟un ensemble d‟attributs. Il permet de définir le<br />
nom complet du cours, la description de ce cours, un résumé, le format du cours (hebdomadaire,<br />
thématique, etc.), le module de ce cours ainsi que sa catégorie.<br />
Figure 48–Exemple d’un message<br />
II.5.2.3<br />
Le stereotype MessageAttachment<br />
Le stéréotype MessageAttachment permet d‟indiquer qu‟une partie d‟un message est un<br />
attachement. Chaque MessageAttachment a sa propre identité et il est séparé du corps du
92 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
message. Les attachements sont généralement créés et manipulés par des applications externes.<br />
Les documents Word, image, les documents pdf et des fichiers musiques sont des exemples<br />
concrets d‟attachement.<br />
Le stéréotype MessageAttachment est une spécialisation de la métaclasse Property. Les<br />
MessageAttachment sont utilisés et transmis en format binaire suivant un encodage spécifique<br />
qui est défini en utilisant l‟attribut Encoding. Cet attribut est utilisé pour fournir les informations<br />
d‟encodage d‟un attachement contenu dans un message.<br />
Le stéréotype MessageAttachment ne peut être utilisé que comme un constituant d‟un élément<br />
message.<br />
La figure 49 montre les associations de métaclasse MessageAttachment avec les autres<br />
métaclasses constituant le profil VSoaML.<br />
Figure 49–Stéréotype MessageAttachment<br />
II.5.2.4<br />
Le stéréotype Specification<br />
Le stéréotype Specification permet de définir la description des interfaces des services fournies<br />
par un service. Un service peut fournir bien évidemment plus d‟une interface. Pour chaque<br />
service, nous pouvons associer un protocole (machine à états, diagramme d‟activité, diagramme<br />
de séquence) pour spécifier l‟ordre d‟exécutions des opérations de services. Ce protocole permet<br />
de valider chaque service non uniquement structurellement mais aussi en tenant compte ses<br />
aspects comportementaux. Ce stéréotype possède une propriété « published » qui permet
93 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
d‟indiquer si le service doit être publié dans un annuaire de service. La spécification d‟un service<br />
peut contenir aussi des informations des propriétés non fonctionnelles telles que les propriétés de<br />
la qualité de service, de sécurité ou de performance.<br />
La spécification de service ne possède pas de propriétés et toutes les opérations doivent être<br />
publiques.<br />
La figure 50 illustre la métaclasse Specification ainsi que ses associations.<br />
Figure 50–Stéréotype specification<br />
La figure 51 montre un exemple d‟une spécification de service. Dans le cas des services web,<br />
une spécification de service correspond à une description WSDL. La description WSDL permet<br />
de décrire les interfaces de service, ses opérations d‟entrée et de sortie, les ports et les formats de<br />
messages.
94 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Agenda<br />
Agenda<br />
<br />
<br />
Agenda<br />
ajouterEvenement(e :Evenement);<br />
updateEvenement(e :Evenement);<br />
supprimerEvenement(e:Evenement);<br />
Bp : Business protocol<br />
par<br />
admin: Administrateur<br />
agenda :Agenda<br />
consultEvent(course: Course);<br />
ajouterEvenement(e :Evenement)<br />
ajouterEvenement(e :Evenement)<br />
updateEvenement(e :Evenement)<br />
II.5.2.5 Le stéréotype MVService<br />
Figure 51–Exemple de stéréotype Specification<br />
Le stéréotype MVService étend le stéréotype service. La spécificité d‟un service multivues est<br />
qu‟il peut fournir comme il peut requérir des interfaces spécifiques aux différents types<br />
d‟utilisateurs interagissant avec le service. En effet, comme nous l‟avons expliqué dans les<br />
sections précédentes, chaque service multivue fournit/requiert des interfaces de service vue<br />
permettant de représenter les fonctionnalités et les capacités de services accessible uniquement<br />
par un type d‟acteur donné.<br />
La figure 52 illustre la métaclasse MVService et ses associations.
95 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Figure 52–Stéréotype MVService<br />
La figure 53 illustre un service multivues Formation. Ce service multivues fournit plusieurs<br />
interfaces de service vues (ViewServiceInterface). L‟intersection des différentes<br />
ViewServiceInterface constitue l‟interface de service de base qui est accessible par tous types<br />
d‟acteurs. Les interfaces (ViewServiceInterface) ne sont accessibles que par un type particulier<br />
de client. Les différents types d‟interfaces de ce MVService sont encapsulées dans un package<br />
MVServiceInterface.<br />
<br />
Course<br />
Course<br />
<br />
<br />
Course_Professor<br />
CreateCourse()<br />
deleteCourse()<br />
addExercise()<br />
addExerciseSolution()<br />
proposeProject()<br />
askQuestion()<br />
proposeForumTopic()<br />
proposeTest_Quiz()<br />
proposeGroupProject()<br />
accessProject()<br />
addAnnounceCourse()<br />
respondStudentsQuestions<br />
Message()<br />
<br />
Course_Student<br />
accessCourse()<br />
accessExercise()<br />
proposeExerciseSolution()<br />
postMessage()<br />
proposeSoultionTestQuiz()<br />
accessProjectressources()<br />
accessProjetc()<br />
accessAnnounceCourse()<br />
<br />
<br />
<br />
Course_Adiministrator<br />
addNewCourse()<br />
addCoursesCalendar()<br />
addAnnounceCourse()<br />
deleteNewCourse()<br />
assignCourseResponsible()<br />
<br />
<br />
Course_base<br />
consultSynopsisCourse()<br />
consulListCourse()<br />
Figure 53–Exemple de service multivues
96 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
II.5.2.6<br />
Le stéréotype MVServiceSpecification<br />
Le stéréotype MVServiceSpecification permet de décrire les services multivues. La spécificité de<br />
ce stéréotype est qu‟il permet la description des interfaces de service multivues de chaque service<br />
multivues. Ainsi, chaque MVServiceSpecification contient la description d‟une interface de<br />
service de base accessible à tous les acteurs et il contient la description des interfaces de service<br />
vues (ViewServiceInterface) associées à des types particuliers de clients.<br />
Le stéréotype MVServiceSpecification étend le stéréotype ServiceSpecification. Ainsi, ce<br />
stéréotype possède une propriété « published » qui permet d‟indiquer si le service doit être publié<br />
ou pas dans un annuaire de service. permet la spécification des<br />
propriétés non fonctionnelles telles que les propriétés de la qualité de service de sécurité ou de<br />
performance.<br />
La figure 54 illustre la métaclasse MVServiceSpecification et ses associations. La Figure 55<br />
illustre un exemple d‟un MVServiceSpecification.
97 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Artifact(from UML2.0)<br />
BusinessProtocol<br />
0..*<br />
Specif ication 0..*<br />
Policy<br />
1<br />
1..*<br />
Serv iceInterf ace<br />
1<br />
MVServiceSpecification<br />
1<br />
1<br />
1..*<br />
0..1<br />
+base<br />
1<br />
BaseServiceInterface<br />
1<br />
1..*<br />
MVServiceInterface<br />
Include<br />
1<br />
1<br />
0..*<br />
0..1<br />
+view<br />
1<br />
ViewServiceInterface<br />
1..*<br />
Actor(f rom UML2.0)<br />
MVServ ice<br />
+prov ides<br />
1 +actor<br />
1..*<br />
+requires<br />
1..*<br />
1<br />
Figure 54–Stéréotype MVServiceSpecification<br />
Course<br />
<br />
<br />
Course<br />
<br />
Course_Professor<br />
CreateCourse()<br />
deleteCourse()<br />
addExercise()<br />
addExerciseSolution()<br />
proposeProject()<br />
askQuestion()<br />
proposeForumTopic()<br />
proposeTest_Quiz()<br />
proposeGroupProject()<br />
accessProject()<br />
addAnnounceCourse()<br />
respondStudentsQuestions<br />
Message()<br />
<br />
Course_Student<br />
accessCourse()<br />
accessExercise()<br />
proposeExerciseSolution()<br />
postMessage()<br />
proposeSoultionTestQuiz()<br />
accessProjectressources()<br />
accessProjetc()<br />
accessAnnounceCourse()<br />
<br />
<br />
<br />
Course_Adiministrator<br />
addNewCourse()<br />
addCoursesCalendar()<br />
addAnnounceCourse()<br />
deleteNewCourse()<br />
assignCourseResponsible()<br />
<br />
<br />
Course_base<br />
consultSynopsisCourse()<br />
consulListCourse()<br />
Figure 55–Exemple de MVServiceSpecification
98 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Dans notre cas de figure, nous avons défini une extension à WSDL pour pouvoir décrire les<br />
services Multivues appelée MVWSDL (MultiView WSDL) (voir section MVWSDL, chapitre<br />
IV). MVWSDL est une extension légère au standard WSDL permettant la spécification des<br />
service multivues. Il s‟agit d‟un schéma XML permettant la description des interfaces du service<br />
multivues.<br />
II.5.2.7 Le stéréotype Collaboration<br />
Le stéréotype Collaboration permet de spécifier à un haut niveau d‟abstraction une collaboration<br />
de plusieurs services/services multivues pour répondre à des exigences complexes auxquels un<br />
seul service ne peut répondre. Dans le cas des services web, cela correspond à l‟utilisation du<br />
standard BPEL4WS pour la définition de la composition de services. Ainsi, l‟objectif de ce<br />
stéréotype est de spécifier le comportement de services pour pouvoir générer automatiquement la<br />
description BPEL. La figure 56 illustre la métaclasse Collaboration et ses associations<br />
Figure 56–Stéréotype Collaboration<br />
La figure 57 présente une collaboration de service. Cette collaboration de services met en<br />
évidence la participation de plusieurs services pour répondre aux exigences complexes des<br />
clients de services. Un service interagit potentiellement avec plusieurs types de clients de<br />
services. De même, une collaboration de services qui définit un processus métier interagit<br />
potentiellement avec plusieurs acteurs (pour chaque acteur est associé un rôle). Ainsi, il est<br />
nécessaire de modéliser et de définir des processus adaptables suivant l‟acteur déclenchant le
99 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Collaboration : « SuivreFormation»<br />
Agenda<br />
« MVService »<br />
Formation<br />
« MVService »<br />
Examen<br />
«MVService»<br />
Documentation<br />
Figure 57–Exemple de collaboration de services
100 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
processus métier. Pour faire face à ce problème, nous proposons la modélisation de chaque<br />
processus comme une collaboration de services multivues ayant la caractéristique de fournir des<br />
interfaces adaptés aux différents acteurs interagissant avec le service. Une telle collaboration<br />
illustre l‟ensemble des services multivues participants ainsi que leurs interfaces qui représentent<br />
les fonctionnalités associées à un acteur spécifique. Pour chaque acteur interagissant avec la<br />
collaboration de services, seulement l‟interface correspondant à l‟acteur concerné est requise. La<br />
figure 57 illustre une collaboration de services multivues appelée « suivre Formation» dans le<br />
cadre de notre étude de cas. Le processus est conçu spécifiquement à un acteur étudiant.<br />
Seulement les interfaces associées à l‟acteur Etudiant sont utilisées dans l‟objectif de définir une<br />
collaboration de services.<br />
II.5.2.8 Le stéréotype ServiceChannel<br />
Le stéréotype Channel permet de représenter le chemin de communication entre un service et ses<br />
clients (Johsnston et al., 2006). Dans le domaine des services web, chaque service permet<br />
d‟indiquer ses liaisons associées de telle façon qu‟un client puisse y accéder. Notre profil permet<br />
de spécifier la liaison pour pouvoir invoquer deux services ou entre des clients de service et un<br />
service. Ce stéréotype possède un attribut channel pour spécifier la liaison utilisée pour générer<br />
la liaison WSDL correspondante. Un exemple de binding peut être SOAP-RPC, FTP, HTTP-<br />
GET, etc.<br />
Deux contraintes ont été associées au stéréotype Channel :<br />
[1] au moins l‟extrémité d‟une connexion doit être un service.<br />
[2] au plus une extrémité d‟une connexion doit être une classe stéréotypé ou bien<br />
un classifier stéréotypé .<br />
La figure 58 illustre la métaclasse Channel ainsi que ses associations.
101 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
II.5.2.9 Le stéréotype Requester<br />
Figure 58–Stéréotype Channel<br />
Le stéréotype Requester permet de représenter chaque classifier (Class, Component, etc.) qui<br />
peut être un consommateur de service. Ce stéréotype est utilisé pour spécifier les éléments d‟un<br />
modèle qui ne sont pas des services comme des clients de services. L‟utilisation de ce stéréotype<br />
est optionnelle.<br />
La figure 59 illustre la métaclasse Requester ainsi que ses associations.
102 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Figure 59–Stéréotype Requester<br />
La figure 60 montre un exemple d‟un service multivues qui est en interaction avec ses clients de<br />
services (i.e requester).<br />
Course<br />
<br />
<br />
Student<br />
Teacher<br />
Figure 60–Exemple de Requester<br />
II.5.2.10 Le stéréotype MVServiceInterface<br />
Dans le contexte du profil VSoaML défini dans le cadre du nouveau paradigme SOC, le<br />
stéréotype MVServiceInterface est un élément de modélisation qui étend la métaclasse Package.<br />
Ce stéréotype permet de regrouper des fonctionnalités logiquement cohésives. Ainsi, chaque<br />
MVServiceInterface regroupe un ensemble des interfaces de services vues<br />
(ViewServiceInterface) contenant des capacités de services accessibles uniquement par un type
103 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
particulier de clients de service. Un MVService peut avoir plusieurs MVServiceInteface qui sont<br />
associés à l‟élément de modélisation MVServiceSpecification.<br />
La figure 61 illustre la métaclasse MVServiceInterface ainsi que ses associations.<br />
Package(from UML2.0)<br />
Serv iceInterf ace<br />
MVServiceInterface<br />
1<br />
1..*<br />
Include<br />
0..1<br />
+base<br />
1<br />
BaseServiceInterface<br />
1<br />
1<br />
0..1<br />
0..*<br />
+view<br />
1<br />
ViewServiceInterface<br />
1..*<br />
+actor<br />
1<br />
1<br />
Actor(from UML2.0)<br />
Figure 61–Stéréotype MVServiceInterface<br />
La figure 62 illustre un exemple d‟une MVServiceInterface.<br />
<br />
Course<br />
<br />
Course_Professor<br />
CreateCourse()<br />
deleteCourse()<br />
addExercise()<br />
addExerciseSolution()<br />
proposeProject()<br />
askQuestion()<br />
proposeForumTopic()<br />
proposeTest_Quiz()<br />
proposeGroupProject()<br />
accessProject()<br />
addAnnounceCourse()<br />
respondStudentsQuestions<br />
Message()<br />
<br />
Course_Student<br />
accessCourse()<br />
accessExercise()<br />
proposeExerciseSolution()<br />
postMessage()<br />
proposeSoultionTestQuiz()<br />
accessProjectressources()<br />
accessProjetc()<br />
accessAnnounceCourse()<br />
<br />
<br />
<br />
Course_Adiministrator<br />
addNewCourse()<br />
addCoursesCalendar()<br />
addAnnounceCourse()<br />
deleteNewCourse()<br />
assignCourseResponsible()<br />
<br />
<br />
Course_base<br />
consultSynopsisCourse()<br />
consulListCourse()<br />
Figure 62–Exemple de MVServiceInterface<br />
II.5.2.11<br />
Le stéréotype BaseServiceInterface<br />
Dans le cadre de notre profil VSoaML défini pour la modélisation des SOSs adaptables aux<br />
différents types d‟utilisateurs, le stéréotype BaseServiceInterface permet de représenter un
104 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
ensemble d‟opérations de services qui peuvent être invoquées par tous les acteurs interagissant<br />
avec un service donné. Le stéréotype BaseServiceInterface est défini dans l‟objectif de contenir<br />
les opérations de services (ServiceOperation) appartenant à toutes les ViewServiceInterface en<br />
vue de faire face au probléme de la redondance de ces opérations de services. Chaque<br />
BaseServiceInterface est incluse (la relation entre le BaseServiceInterface et<br />
ViewServiceInterface) dans une ViewServiceInterface. La figure 63 illustre le stéréotype<br />
BaseServiceInterface. La figure 64 montre un exemple du stéréotype BaseServiceInterface.<br />
Serv iceInterf ace<br />
Interface(from UML2.0)<br />
1<br />
1..*<br />
0..1<br />
+base<br />
1<br />
BaseServiceInterface<br />
1<br />
MVServiceInterface<br />
Include<br />
1<br />
0..1<br />
+view<br />
MVServ ice<br />
0..*<br />
+provides<br />
1..*<br />
+requires<br />
1<br />
ViewServiceInterface<br />
1<br />
1<br />
+actor<br />
Actor(f rom UML2.0)<br />
1..*<br />
1..*<br />
Figure 63–Stéréotype baseServiceInterface<br />
<br />
Course_Professor Course_Student<br />
CreateCourse()<br />
deleteCourse()<br />
addExercise()<br />
addExerciseSolution()<br />
proposeProject()<br />
askQuestion()<br />
proposeForumTopic()<br />
proposeTest_Quiz()<br />
proposeGroupProject()<br />
accessProject()<br />
addAnnounceCourse()<br />
respondStudentsQuestions<br />
Message()<br />
accessCourse()<br />
accessExercise()<br />
proposeExerciseSolution()<br />
postMessage()<br />
proposeSoultionTestQuiz()<br />
accessProjectressources()<br />
accessProjetc()<br />
accessAnnounceCourse()<br />
<br />
<br />
<br />
Course_Adiministrator<br />
addNewCourse()<br />
addCoursesCalendar()<br />
addAnnounceCourse()<br />
deleteNewCourse()<br />
assignCourseResponsible()<br />
<br />
<br />
Course_base<br />
consultSynopsisCourse()<br />
consulListCourse()<br />
Un exemple d‟une<br />
interface de service<br />
de base<br />
Figure 64–Exemple de BaseServiceInterface
105 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
II.5.2.12<br />
Le stéréotype ViewServiceInterface<br />
Dans le contexte du profil VSoaML défini pour la modélisation des SOSs Adaptables aux<br />
différents types d‟utilisateurs, le stéréotype ViewServiceInterface permet de représenter les<br />
capacités d‟un service qui sont propres à un acteur donné interagissant avec le service. Le<br />
stéréotype «ViewServiceInterface» est un élément de modélisation qui fait partie de l‟élément de<br />
modélisation MultiviewServiceInterface. Il se compose donc des opérations du service de grosse<br />
granularité qu‟un acteur spécifique puisse invoquer. Chaque opération de service a pour<br />
entrée/sortie un Message. En entrée, un message contient les données nécessaires pour qu‟une<br />
opération de service puisse s‟exécuter. En sortie, le message contient le résultat de l‟invocation<br />
d‟une telle opération de service. La figure 65 illustre le stéréotype ViewServiceInterface et ses<br />
associations. La figure 66 illustre un exemple de ViewServiceInterface.<br />
Serv iceInterf ace<br />
Interface(fromUML2.0)<br />
1<br />
MVServiceInterface 0..1<br />
BaseServiceInterface<br />
1<br />
+base<br />
1<br />
1..*<br />
Include<br />
0..1<br />
1<br />
+v iew 1<br />
ViewServiceInterface<br />
0..*<br />
MVServ ice<br />
1..*<br />
+requires<br />
1..*<br />
1<br />
+prov ides<br />
1<br />
1..*<br />
Actor(f rom UML2.0)<br />
+actor<br />
Figure 65–Stéréotype ViewServiceInterface
106 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Exemple des interfaces de service<br />
vues<br />
<br />
Course_Professor<br />
CreateCourse()<br />
deleteCourse()<br />
addExercise()<br />
addExerciseSolution()<br />
proposeProject()<br />
askQuestion()<br />
proposeForumTopic()<br />
proposeTest_Quiz()<br />
proposeGroupProject()<br />
accessProject()<br />
addAnnounceCourse()<br />
respondStudentsQuestions<br />
Message()<br />
<br />
Course_Student<br />
accessCourse()<br />
accessExercise()<br />
proposeExerciseSolution()<br />
postMessage()<br />
proposeSoultionTestQuiz()<br />
accessProjectressources()<br />
accessProjetc()<br />
accessAnnounceCourse()<br />
<br />
<br />
<br />
Course_Adiministrator<br />
addNewCourse()<br />
addCoursesCalendar()<br />
addAnnounceCourse()<br />
deleteNewCourse()<br />
assignCourseResponsible()<br />
<br />
<br />
Course_base<br />
consultSynopsisCourse()<br />
consulListCourse()<br />
II.5.2.13 Le stéréotype Provider<br />
Figure 66–Exemple de ViewServiceInterface<br />
Le stéréotype Provider permet de représenter un fournisseur de services qui héberge le module<br />
logiciel implémentant un ou plusieurs services web accessibles via le réseau. Il définit une<br />
description de services et le publie en le faisant enregistrer dans un annuaire de services. Le<br />
demandeur de services invoque une opération de recherche pour trouver la description du service<br />
dans l‟annuaire de service. Il utilise alors la description du service pour établir une connexion<br />
avec le fournisseur de services et invoquer ou interagir avec l‟implémentation du service web.<br />
La figure 67 illustre la métaclasse Provider et ses associations.
107 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Figure 67–Stéréotype Provider<br />
II.5.2.14 Le stéréotype ServiceOperation<br />
Le stéréotype ServiceOperation étend la métaclasse Operation d‟UML 2.0. Il permet de<br />
représenter une opération d‟un service qui modélise une fonctionnalité fournie par un service<br />
donné. La spécificité d‟une opération de service (ServiceOperation) est qu‟elle manipule des<br />
données de grosse granularité ayant une valeur dans le cadre d‟un processus métier. Une<br />
opération de services manipule en entrée, en sortie ou en erreur des messages.<br />
La figure 68 illustre la métaclasse ServiceOperation et ses associations. La figure 69 illustre un<br />
exemple des ServiceOperation. En effet, l‟interface de service de base (BaseServiceInterface) et<br />
l‟interface de service vue (ViewServiceInterface) se composent principalement d‟opération de<br />
services.
108 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Figure 68–Stéréotype ServiceOperation<br />
<br />
Course_Professor<br />
CreateCourse()<br />
deleteCourse()<br />
addExercise()<br />
addExerciseSolution()<br />
proposeProject()<br />
askQuestion()<br />
proposeForumTopic()<br />
proposeTest_Quiz()<br />
proposeGroupProject()<br />
accessProject()<br />
addAnnounceCourse()<br />
respondStudentsQuestions<br />
Message()<br />
<br />
Course_Student<br />
accessCourse()<br />
accessExercise()<br />
proposeExerciseSolution()<br />
postMessage()<br />
proposeSoultionTestQuiz()<br />
accessProjectressources()<br />
accessProjetc()<br />
accessAnnounceCourse()<br />
<br />
<br />
<br />
Course_Adiministrator<br />
addNewCourse()<br />
addCoursesCalendar()<br />
addAnnounceCourse()<br />
deleteNewCourse()<br />
assignCourseResponsible()<br />
<br />
<br />
Course_base<br />
consultSynopsisCourse()<br />
consulListCourse()<br />
Un exemple d‟une<br />
opération de service<br />
Figure 69–Exemple de serviceOperation<br />
II.5.2.15 Le stéréotype ServiceDomain<br />
Le stéréotype permet de représenter les frontières logiques ou physiques<br />
d‟un système. Cet élément de modélisation joue un rôle important pour la structuration et
109 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
l‟organisation d‟un système en un ensemble de packages. Il joue un rôle important dans la<br />
définition des espaces de nommage.<br />
possède un attribut domain qui permet de regrouper les services d‟un<br />
domaine métier particulier. Un étend la métaclasse « Package » UML2.0.<br />
La figure 70 illustre le stéréotype Service Domain et ses associations.<br />
Figure 70–Stéréotype ServiceDomain<br />
II.5.3. Exemple illustratif DLS : Couches d’abstraction<br />
Pour le développement de notre système d‟enseignement à distance, nous nous basons sur notre<br />
profil VSoaML en vue de l‟élaboration des couches d‟abstraction permettant la représentation<br />
des différentes perspectives qui correspondent aux différents stakeholders (e.g., Analyste métier,<br />
Architecte, etc.). La couche métier de ce système se compose de deux artefacts clés : les modèles<br />
des cas d‟utilisation (cf. figure 37) et les modèles BPMN capables de représenter les scénarios<br />
permettant la réalisation des différents cas d‟utilisation. La figure 71 présente le modèle BPMN<br />
du cas d‟utilisation «Assurer Formation». La figure 72 illustre le modèle BPMN du cas<br />
d‟utilisation « Suivre formation».
110 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Figure 71–Modèle BPMN du cas d’utilisation « Assurer Formation ».
111 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Figure 72–Modèle BPMN du cas d’utilisation « Suivre formation»<br />
La couche logique est décrite par le modèle de service multivue et le modèle d‟information<br />
associés au DLS. Le modèle de service multivues se compose des services multivues suivants :<br />
Inscription, Formation, Documentation et Examen. Ces services sont multivues du moment où<br />
ils interagissent avec plusieurs acteurs : Enseignant, Etudiant et Administrateur. Le service<br />
multivue Inscription fournit les interfaces ViewServiceInterface suivantes :<br />
Inscription_Etudiant, <br />
Inscription_Enseignant, Inscription_Administrateur. Chaque<br />
interface modélise les fonctionnalités spécifiques à chaque acteur. Ainsi,<br />
Inscription_Etudiant contient les opérations de service nécessaires à<br />
un acteur Etudiant pour faire son inscription. <br />
Inscription_Administrateur contient les opérations permettant à un acteur administrateur de gérer<br />
les inscriptions des étudiants, de fixer les frais d‟inscription aux différentes formations et de<br />
décider des inscriptions des étudiants.<br />
Le service multivue Formation fournit les ViewServiceInterface suivantes :
112 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
Formation_Etudiant,<br />
<br />
Formation_Enseignant, Formation_Administrateur. L‟interface<br />
Formation_Etudiant modélise les fonctionnalités permettant à un<br />
acteur Etudiant de suivre des formations, d‟accéder aux exercices, de poser des questions, de<br />
consulter les projets d‟une formation donnée, de faire des quiz et d‟envoyer des messages aux<br />
forums de discussion spécifiques à une formation donnée. <br />
Formation_Administrateur modélise les fonctionnalités permettant à un acteur Administrateur<br />
de fixer les frais d‟une formation donnée, de gérer son calendrier et d‟affecter les responsables<br />
des formations.<br />
Formation_Enseignant modélise les fonctionnalités permettant à<br />
l‟enseignant de créer des formations, de répondre aux questions des étudiants, de proposer des<br />
exercices et de répondre aux messages des forums de discussion.<br />
Le service Documentation fournit deux interfaces : doc_Etudiant et<br />
Doc_Enseignant. La première interface modélise les fonctionnalités<br />
qui correspondent à l‟acteur Etudiant lui permettant de télécharger les documentations<br />
nécessaires (fichiers pdf, audio/video, etc.). La deuxième interface est associée à l‟acteur<br />
Enseignant. Elle lui permet de charger les documents concernant une formation spécifique, de les<br />
mettre à jour ou de les supprimer.<br />
Le service Examen fournit trois interfaces : Examen_Etudiant,<br />
Examen_Enseignant, <br />
Examen_Administrateur.<br />
Examen_Etudiant permet à l‟étudiant de télécharger le sujet d‟un<br />
examen, de poser des questions de compréhension et de consulter ses notes.<br />
Examen_Enseignant permet à un acteur Enseignant de proposer un<br />
examen et de répondre aux questions des examens. <br />
Examen_Administrateur permet à un acteur administrateur de gérer les examens ainsi que la<br />
gestion des notes.
113 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
La figure 73 illustre les différents services multivues constituant le système d‟enseignement à<br />
distance. Cette figure met en lumière la structure de différentes interfaces de service multivues.<br />
En fait, chaque interface de service multivues est composée d‟une interface de service de base<br />
qui représente les fonctionnalités communes entre les différents acteurs. Les interfaces de service<br />
vues représentent les fonctionnalités spécifiques à chaque acteur.<br />
<br />
Inscription<br />
<br />
<br />
Inscription_Etudiant<br />
<br />
<br />
Inscription<br />
demanderInscription()<br />
payerFraisInscription()<br />
<br />
<br />
Inscription_Base<br />
consulterDateLimite()<br />
consulterListeFormation()<br />
<br />
Inscription_Administrateur<br />
deciderInscription()<br />
ajouterListeAttente()<br />
fixerFraisInscription()<br />
<br />
<br />
Examen<br />
<br />
<br />
Examen_Etudiant<br />
consulterExamen()<br />
poserQuestionExamen()<br />
consulterNotes()<br />
<br />
Examen<br />
<br />
<br />
<br />
Examen_Enseignant<br />
ajouterExamen()<br />
repondreQuestionsExamen()<br />
evaluerExamen()<br />
ajouterNotes()<br />
<br />
<br />
Examen_base<br />
consulterCalendrierExamen()<br />
<br />
<br />
Examen_Admnistrateur<br />
consulterNotesEtudiant()<br />
definirCalendrierExamen()<br />
114 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
<br />
Documentation<br />
<br />
Documentation<br />
<br />
Doc_Enseignant<br />
chargerDocumentation()<br />
updateDocumentation()<br />
supprimerDocumentation()<br />
<br />
<br />
Doc_base<br />
consulterDocumentation()<br />
<br />
<br />
Doc_Student<br />
telechargerDocumentation()<br />
proposerSupplementDocumentation()<br />
<br />
Formation<br />
<br />
Formation_Administrateur<br />
<br />
ajouternouvelleFormation();<br />
ajouterCalendrierFormation() ;<br />
ajouterAnnounceFormation() ;<br />
supprimerFormation() ;<br />
affecterResponsableFormation() ;<br />
<br />
Formation<br />
<br />
Formation_Etudiant<br />
consulterFormation() ;<br />
consulterExercice() ;<br />
proposerSolutionExercice() ;<br />
posterMessage() ;<br />
proposerTestSolution() ;<br />
accessProjectRessource() ;<br />
consulterProjet() ;<br />
consulterAnnounceFormation() ;<br />
consulterForum() ;<br />
consulterTest(),<br />
consulterDevoir() ;<br />
<br />
Formation<br />
consultSynopsisFormation ;<br />
consultListFormation() ;<br />
<br />
<br />
Formation_Enseignant<br />
<br />
ajouterFormation();<br />
supprimerFormation() ;<br />
ajouterExercice() ;<br />
ajouterSolutionExercice() ;<br />
proposerProjet() ;<br />
poserQuestion() ;<br />
proposerForum() ;<br />
afficherForum() ;<br />
rechercherForum() ;<br />
proposerTest() ;<br />
ajouterGlossaire() ;<br />
rchercherGlossaire() ;<br />
ajouterTest()<br />
modifierTest(),<br />
ajouterAnnounceFormation() ;<br />
repondreQuestionsEtudiants() ;<br />
Figure 73–Modèle des services multivues du DLS
115 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
La figure 74 présente un extrait du modèle d‟information associé au modèle de services<br />
multivues. Ce modèle permet de spécifier les différents types d‟informations échangées entre les<br />
services et ses clients. En effet, chaque opération de service possède en entrée ou en sortie un<br />
message. Le modèle d‟information nous permet de définir les messages des différentes<br />
opérations de chaque service. Dans le cadre de notre étude de cas, nous avons identifié le modèle<br />
d‟informations présenté dans la figure 74. Chaque opération de notre étude de cas, possède des<br />
messages en entrée et en sortie.<br />
Figure 74–Extrait du modèle d’information du système d’Enseignement à Distance
116 VSoaML : Un profil UML de modélisation des systèmes orientés services adaptables<br />
II.6. Conclusion<br />
Dans ce chapitre, nous avons présenté un profil UML appelé VSoaML permettant la<br />
modélisation et la spécification des systèmes orientés services adaptables aux différents types<br />
d‟utilisateurs en faisant abstraction des plates-formes d‟implémentation et des standards<br />
technologiques. Nous avons par conséquent présenté les différents stéréotypes de ce profil ainsi<br />
que son métamodèle. Pour chaque stéréotype constituant le profil VSoaML, nous lui avons<br />
donné une description en spécifiant ses attributs, ses relations et les contraintes associées.<br />
Le profil VSoaML constitue l‟élément de base de notre approche d‟ingénierie des SOSs<br />
adaptables. Une telle approche se base aussi sur un processus pour maîtriser la complexité du<br />
développement des SOS adaptables aux différents types d‟utilisateurs. Ainsi, nous continuons<br />
dans le chapitre suivant à proposer un processus de développement d‟un système orienté services<br />
adaptables en se basant principalement sur le profil VSoaML et plus particulièrement sur le<br />
concept de service multivues.
117 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
III. Processus de Développement Dirigé par les Modèles des Systèmes<br />
Orientés Services Adaptables<br />
III.1. Introduction<br />
Comme nous l‟avons présenté dans le chapitre 2, le profil VSoaML permet la modélisation et la<br />
spécification des systèmes orientés service adaptables aux différents types d‟utilisateurs<br />
facilitant ainsi la compréhension des caractéristiques de tels systèmes par les différents<br />
stakehloders concernés. VSoaML se base principalement sur le concept de service multivues<br />
comme une entité de modélisation capable de décrire les besoins et les spécificités des<br />
utilisateurs finals assez tôt dans le cycle de développement des SOSs.<br />
Certes le profil VSoaML joue un rôle important pour le développement des systèmes orientés<br />
services adaptables aux différents types d‟utilisateurs, cependant il est nécessaire de définir un<br />
processus de développement pour rationaliser leur construction.<br />
Le but principal de ce chapitre est de présenter notre processus proposé pour le développement<br />
des systèmes orientés services adaptables aux différents types d‟utilisateur. Un tel processus<br />
associé au profil VSoaML a pour objectif principal l‟identification, la spécification des services<br />
multivues et leur implémentation à partir des exigences métiers. Pour ce faire, ce processus<br />
définit les phases, les artefacts et les activités nécessaires pour la transformation des exigences<br />
métiers en termes de services multivues selon une approche dirigée par les modèles.<br />
Ce chapitre est structuré comme suit. La section 2 présente globalement les phases, les activités<br />
et les artefacts d‟un processus de développement d‟un système orienté service. La troisième<br />
section a pour objectif de présenter les spécificités des processus de développement des systèmes<br />
logiciels dans le cadre de l‟approche MDA. La section 4 présente notre processus proposé pour<br />
le développement des SOSs adaptables aux différents types d‟utilisateurs dans le cadre de<br />
l‟approche MDA, en identifiant ses phases, ses artéfacts et ses activités.
118 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
III.2. Processus de développement des systèmes orientés services : phases,<br />
activités et artefacts<br />
SOC se base principalement sur le service comme un élément fondamental pour le<br />
développement des systèmes d‟information d‟entreprise distribués et à large échelle. L‟élément<br />
service possède des caractéristiques héritées de ses prédécesseurs tels que l‟objet ou le<br />
composant mais il ajoute d‟autres caractéristiques telles que sa grosse granularité, son<br />
indépendance, son autonomie et son couplage faible. Ainsi, les approches traditionnelles pour le<br />
développement des systèmes logiciels orientés objet ou à base de composant sont inadéquates<br />
pour le développement des systèmes orientés services. Pour faire face à ce problème, plusieurs<br />
processus de développements ont été proposés dans la littérature (Papazoglou et al., 2006)<br />
(Arsanjani et al. 2005) (Erradi et al., 2006) (Chang et al., 2007b) (Maamar et al., 2008) (Kim et<br />
al., 2006). Globalement, ces processus définissent un ensemble de directives et de principes<br />
méthodologiques pour spécifier, construire et implémenter des systèmes orientés services<br />
en se basant sur l‟élément service et sur l‟architecture SOA tout en optimisant les coûts et le<br />
temps de leur développement.<br />
Généralement, un processus de développement SOA, comme le montre la figure 75, repose sur<br />
un processus itératif et incrémental qui comporte six phases :<br />
1- Planification : la phase planification détermine la faisabilité, la nature et l‟étendu d‟une<br />
solution SOA dans le contexte d‟une entreprise. L‟objectif principal de cette phase est de<br />
comprendre l‟environnement métier et de s‟assurer que tous les contrôles nécessaires sont<br />
incorporés dans la conception des solutions SOA. Les activités principales de cette phase<br />
concernent principalement l‟analyse des besoins métiers, l‟étude des technologies et des<br />
scénarios possibles pour transformer les exigences métiers vers des implémentations de<br />
service. Trois scénarios sont identifiés (i) le premier scénario concerne l‟utilisation des<br />
applications existantes en les encapsulant dans des services (ii) le deuxième scénario<br />
concerne l‟utilisation des services d‟autres fournisseurs de services publiés dans un<br />
annuaire de services (iii) le troisième scénario concerne le développement de nouvelles<br />
implémentations de service.
119 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
Durant cette phase, on effectue aussi une analyse financière incluant les coûts et les<br />
bénéfices ainsi qu‟un plan de développement logiciel déterminant les tâches, les<br />
livrables ainsi qu‟un programme d‟action.<br />
Plannification<br />
Analyse et<br />
conception<br />
Exécution et<br />
monitoring<br />
Construction et<br />
Test<br />
Deploiement<br />
Approvisionnement<br />
Figure 75–Phases du cycle de vie méthodologique (Papazoglou et al., 2006)<br />
2- Analyse et conception des services et des processus : L‟analyse et conception des services et<br />
des processus a pour objectif principal l‟identification et la conception des processus métier<br />
en termes d‟un ensemble de services. Cette phase permet la modélisation des services en<br />
définissant leurs interfaces indépendamment des plateformes technologiques de développement.<br />
Elle est effectuée en deux étapes. La premiére étape permet l‟identification et la spécification des<br />
services. La spécification des services se fait principalement en réalisant quatre activités : la<br />
définition de l‟interface en utilisant le langage WSDL, la spécification des messages des<br />
opérations en entrée/sortie, la définition du protocole de transport et d‟échange de données en<br />
utilisant par exemple le protocole SOAP et la définition des opérations, des liaisons à un<br />
protocole concret ainsi que la définition de l‟emplacement du service à invoquer.
120 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
La deuxiéme étape consiste à identifier et spécifier les processus. L‟identification du processus<br />
métier consiste en l‟identification des services à faire composer. La spécification du processus<br />
se base sur trois activités (i) la définition de l‟objectif et de la structure du processus qui<br />
spécifie l‟ordre d‟exécution des services, les participants impliqués ainsi que les informations<br />
échangées entre eux, (ii) la définition des rôles que jouent les participants dans une conversation<br />
et (iii) la définition des besoins non-fonctionnels comme la sécurité des processus.<br />
3- Construction et test : Une fois la phase d‟analyse et conception des services et des processus<br />
est terminée, la phase de construction et test peut commencer. Elle comporte généralement trois<br />
activités principales. La premiére activité consiste au choix du style de programmation des<br />
services en distinguant principalement entre deux types notamment : RPC (Remote Procedure<br />
Call) et message/document. La deuxiéme activité consiste au développement des services en<br />
définissant leurs interfaces WSDL. La publication de la description WSDL est réalisée ensuite<br />
via l‟utilisation d‟un annuaire UDDI. L‟étape suivante consiste à générer le squelette du<br />
service à partir de l‟interface via l‟utilisation d‟un langage d‟implémentation donné (Java,<br />
C#). Enfin, les méthodes du service prédéfinies dans le squelette sont implémentées. La<br />
troisiéme activité est le développement des processus métier par la conception de leur<br />
logique métier à travers des spécifications exprimées par exemple en BPEL4WS.<br />
4- Approvisionnement : Dans le cadre de cette phase, différentes activités ont été identifiées<br />
pour contrôler le comportement d‟un service lors de son utilisation (gouvernance et certification<br />
des services, facturation, etc.).<br />
5- Déploiement : Dans le cadre de cette phase, trois activités ont été définies (i) la publication<br />
des interfaces de services dans un annuaire de services UDDI, (ii) le déploiement des services et<br />
des processus métiers en définissant les métadonnées necessaires pour leur execution et (iii) la<br />
publication des détails des implémentations des services en identifiant les informations y<br />
associées (e.g., liaisons aux protocoles concrets et au point d‟entrée du service) .<br />
6- Exécution : Dans le cadre de cette phase, les services ainsi que les processus métier sont<br />
déployés et opérationnels. Un client de service peut alors invoquer les opérations du service en se<br />
référant à la définition de son interface WSDL.
121 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
III.3. Processus de développement MDA : phases, activités et artefacts<br />
Dans l‟objectif de maitriser la complexité logicielle, l‟OMG a proposé l‟approche MDA pour le<br />
développement, l‟intégration et la maintenance des systèmes à prépondérance logicielle. MDA<br />
est une démarche de développement permettant la séparation des spécifications fonctionnelles<br />
d‟un système des spécifications de son implémentation sur une plateforme technologique<br />
donnée. Ainsi, MDA se base sur plusieurs types de modèles qui définissent différentes vues<br />
d‟un système: le CIM, le PIM et le PSM. Elle se base aussi sur la transformation de modèles<br />
comme une activité principale. L‟objectif de cette section est de présenter ces différents types de<br />
modèles ainsi que les artefacts et les activités d‟un processus de développement MDA.<br />
III.3.1.<br />
Les types de modèles et de transformation de MDA<br />
III.3.1.1<br />
Computation Independent Model (CIM)<br />
Le CIM (Computation Independent Model) aussi appelé Business Model ou Domain model<br />
permet de décrire les exigences du système et la situation dans laquelle le système sera utilisé. Il<br />
ne représente pas les détails de la structure du système et reste indépendant des technologies de<br />
son implémentation. Ce modèle permet d‟exprimer les liens de traçabilité avec les modèles qui<br />
seront élaborés dans les autres phases du cycle de développement. En effet, les exigences<br />
décrites dans ce modèle doivent pourvoir à la construction d‟autres modèles (PIM et PSM) qui<br />
les implémentent et vice versa. Le CIM place le système dans son contexte opérationnel et<br />
permet de représenter ce que le système devrait réellement assurer comme fonctionnalités.<br />
Dans UML, les modèles d‟exigences sont représentés par les diagrammes de cas d‟utilisation.<br />
Ces derniers décrivent de façon abstraite les différentes fonctionnalités du système ainsi que les<br />
acteurs qui interagissent avec ce système. Cependant, MDA ne fait aucune recommandation<br />
quant à l‟utilisation d‟UML ou non pour exprimer les CIM.<br />
III.3.1.2<br />
Platform Independent Model (PIM)<br />
Le PIM est un modèle de haut niveau d‟abstraction qui est indépendant de toute plateforme<br />
(J2EE, dotNet) ou technologie. Il décrit le système en masquant les détails de son utilisation sur
122 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
une plateforme technologique particulière. Le PIM permet de décrire la logique métier. Il décrit<br />
les systèmes logiciels comme un ensemble d‟entités fonctionnelles ainsi que leurs interactions<br />
tenant en considération seulement la logique métier des entreprises. Ce modèle doit être clair afin<br />
de permettre à des experts du domaine de le comprendre plus aisément qu‟un modèle<br />
d‟implémentation. Ainsi, ils peuvent vérifier que le PIM est complet et correct plus facilement.<br />
Le langage UML ainsi que les profils UML sont préconisés par l‟approche MDA pour<br />
l‟élaboration des PIM. L‟essentiel pour un PIM est d‟être pérenne et de faire le lien entre le<br />
modèle d‟exigences et le code de l‟application. Les modèles doivent aussi être productifs car ils<br />
constituent le socle du processus de génération de code.<br />
III.3.1.3<br />
Platform Specific Model (PSM)<br />
Le PSM est un modèle qui est dépendant de la plateforme technique. Il est utilisé principalement<br />
pour la génération automatique de code exécutable dans un environnement d‟exécution donné.<br />
Le PSM est une représentation de l‟implémentation d‟une technologie particulière. Par exemple,<br />
un PSM concernant la plateforme EJB contiendra des termes spécifiques aux EJB tels que home<br />
interface, remote interface, entity bean, session bean …<br />
Un PIM peut être transformé en un ou plusieurs PSM. En fait, pour chaque plateforme<br />
technologique spécifique, un PSM est généré. Au fur et à mesure de l‟évolution des outils de<br />
génération MDA, cette phase peut devenir de plus en plus automatisée.<br />
Pour l‟élaboration des PSM, deux approches sont préconisées. La première consiste à utiliser<br />
des profils UML pour élaborer les PSM. L‟utilisation de ces profils a le mérite de faciliter les<br />
transformations PIM vers PSM car les PIMs et les PSMs sont tous deux des modèles UML.<br />
La deuxième approche consiste en la définition de méta-modèles propres aux plates-formes.<br />
Cette approche offre une plus grande liberté dans l‟expression des plates-fromes ; cependant, elle<br />
présente l‟inconvénient de ne pas faciliter les transformations PIM vers PSM (Blanc, 2005).
123 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
CIM<br />
PIM<br />
PSM<br />
Code<br />
Figure 76–Types de transformations MDA (Blanc, 2005)<br />
La figure 76 illustre les principales transformations de modèles définies dans le cadre de<br />
l‟approche MDA. Les transformations préconisées par MDA sont essentiellement les<br />
transformations CIM vers PIM et PIM vers PSM. Généralement, les transformations peuvent être<br />
groupées en :<br />
Transformations CIM vers PIM : Ces transformations visent à construire des<br />
modèles PIM partiels à partir des modèles CIM. Elles permettent de garantir la<br />
traçabilité entre les modèles et les besoins exprimés dans les CIM.<br />
PIM vers PIM : Ces transformations s‟effectuent pour ajouter ou soustraire des<br />
informations aux modèles. Le passage de la phase d‟analyse à la phase de<br />
conception est la plus naturelle des transformations de ce genre. De telles<br />
transformations ne sont pas toujours automatiques, et demandent l‟intervention<br />
du développeur pour ajouter ou soustraire des informations. La plus naturelle<br />
des transformations est l‟enrichissement de PIM en étapes successives afin de<br />
le rendre plus complet.<br />
PIM vers PSM : ces transformations s‟effectuent lorsque les PIM sont<br />
suffisamment enrichis avec des informations pour pouvoir être transformés sur<br />
une plate-forme technologique. Un exemple de ce genre est la transformation
124 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
d‟un modèle métier en UML vers un modèle UML qui prend en compte la<br />
logique métier en utilisant une plate-forme comme les services Web.<br />
PSM vers PIM : ces transformations s‟effectuent pour séparer la logique métier<br />
de la plate-forme technologique. Par exemple, une transformation d‟un PSM<br />
(par exemple, un modèle UML qui utilise des profils CORBA) qui soustrait la<br />
plate-forme (par exemple, services Web) et retourne que la logique métier.<br />
Particulièrement, ce genre de transformation est le plus demandé dans les<br />
processus de reverse engineering.<br />
PSM vers PSM : ces transformations s‟effectuent lors des phases de<br />
raffinement de plates-formes technologiques, de déploiement, d‟optimisation<br />
ou de reconfiguration.<br />
III.3.2. Le processus de développement dans le contexte de MDA :<br />
MDA comme nouveau paradigme informatique a impacté les processus de développement<br />
logiciels. Certes, L‟approche MDA ne définit pas un processus de développement spécifique<br />
pour le développement des systèmes. Cependant, les modèles et les transformations de modèles<br />
jouent un rôle très important dans le processus de développement des systèmes logiciels dans le<br />
contexte de l‟approche MDA. En fait, les modèles sont les artefacts de chaque activité du<br />
processus de développement. Aussi, chaque activité consiste en une transformation de modèles<br />
d‟un niveau d‟abstraction à un autre.<br />
Un processus de développement MDA (Kadima et al., 2005) (Kleppe et al., 2005) (cf. figure 77)<br />
repose principalement sur une suite de modèles intégrant toutes les dimensions d‟un projet : du<br />
modèle métier à la génération de code. Chaque passage d‟un modèle à un autre se base sur un<br />
raffinement progressif des spécifications des applications et sur des transformations de modèles.<br />
Globalement, un processus de développement dans le cadre de l‟approche MDA définit les<br />
étapes suivantes :<br />
1- Elaboration des modèles d‟exigences (CIM).
125 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
Phases<br />
Expression<br />
des besoins<br />
Artefacts<br />
Texte<br />
Analyse<br />
Conception de<br />
bas - niveau<br />
PIM<br />
Codage<br />
PSM<br />
Test<br />
Code<br />
Déploiement<br />
Code<br />
Figure 77–Processus de développement MDA des systèmes logiciels<br />
2- Elaboration des modèles indépendants de toute plate-forme (PIM). les PIM doivent être<br />
en théorie, partiellement générés à partir des modèles CIM afin de garantir<br />
l‟établissement des liens de traçabilité.<br />
3- Enrichissement du modèle PIM par étapes successives.
126 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
4- Choix des plates-formes de mise en œuvre et génération des modèles spécifiques<br />
correspondants (PSM). Ces modèles sont obtenus par une transformation des PIM en y<br />
ajoutant les informations techniques relatives aux plates-formes choisies.<br />
5- Raffinement des PSM jusqu‟à l‟obtention d‟une implémentation exécutable.<br />
Comme illustré sur la figure 77, le processus de développement MDA ne semble pas si différent<br />
des modèles classiques. On y trouve les mêmes phases (partie gauche de la figure 77). Ce qui<br />
caractérise les processus de développement MDA est la nature des artéfacts (partie droite de la<br />
figure 77) générés au cours du processus de développement. En effet, les artéfacts générés dans<br />
chaque phase sont les différents modèles définis par l‟approche MDA à savoir le CIM, PIM et<br />
PSM.<br />
III.4. Processus MDA de développement des SOS adaptables<br />
Comme nous l‟avons présenté dans le chapitre II, VSoaML est un profil UML qui vise la<br />
modélisation et la spécification des systèmes orientés services adaptables indépendamment des<br />
technologies et des plateformes. VSoaML se base principalement sur le service multivues<br />
comme un élément fondamental pour le développement des systèmes orientés services<br />
adaptables.<br />
Dans l‟objectif de rationaliser le développement des systèmes orientés services adaptables aux<br />
différents types d‟utilisateurs en se basant sur VSoaML, il est nécessaire de définir un processus<br />
de développement permettant de guider le développement à partir des exigences métiers. Un tel<br />
processus définit les phases, les activités et les artefacts facilitant ainsi l‟identification, la<br />
spécification et l‟implémentation de services. Un tel processus se base principalement sur le<br />
service multivues comme élément fondamental pour le développement des systèmes orientés<br />
services adaptables. Un tel service a pour caractéristique fondamentale de fournir des interfaces<br />
de service multivues. Chaque interface de service multivues se compose d‟une interface de<br />
service de base accessible à tous les acteurs et d‟un ensemble d‟interfaces de service vues<br />
associées à chaque acteur. L‟objectif de cette section est de définir un processus de<br />
développement des systèmes orientés services adaptables qui permet d‟identifier les services
127 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
Elaboration des modèles des cas d‟utilisation<br />
CIM<br />
Identification des services par acteur<br />
Identification des services par acteur<br />
PIM-acteur1<br />
PIM-acteur N<br />
raffiné<br />
Spécification des interfaces de services<br />
Spécification des interfaces de services<br />
PIM-acteur1<br />
raffiné<br />
PIM-acteur N<br />
raffiné<br />
Fusion des modèles visuels<br />
PIM global<br />
Transformation des modèles et génération du code<br />
Transformation des modèles PIM vers des PSM<br />
PSMs<br />
Génération du code à partir des PSM<br />
Code<br />
Figure 78–Processus de développement des systèmes orientés services multivues dans le cadre<br />
de l’approche MDA
128 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
multivues, de les spécifier en identifiant leurs interfaces, leurs opérations et leurs messages<br />
d‟entrés/sorties, etc.<br />
La figure 78 illustre les principales phases de notre processus de développement des SOSs<br />
adaptables (Kenzi et al., 2008c) (Kenzi et al., 2009a). Ce processus est défini dans le contexte de<br />
l‟approche MDA.<br />
Les sections suivantes décrivent les différentes phases de notre processus de développement.<br />
III.4.1. Phase 1: Elaboration des modèles des cas d’utilisation<br />
La première phase de notre processus de développement est l‟élaboration des modèles des cas<br />
d‟utilisation. L‟objectif de cette phase est la capture et la spécification des besoins des utilisateurs<br />
ainsi que la description des processus métiers. Dans cette phase, nous déterminons, en premier<br />
lieu, les différents acteurs du système ainsi que les besoins de chaque acteur via les diagrammes<br />
des cas d‟utilisations. En effet, Les diagrammes cas d‟utilisation jouent un rôle très important<br />
pour l‟identification des besoins des utilisateurs. Ils décrivent de manière exhaustive les exigences<br />
fonctionnelles du système. Notre approche adopte les diagrammes des cas d‟utilisations pour<br />
plusieurs raisons : la majorité des analystes/concepteurs sont familiers avec l‟utilisation des cas<br />
d‟utilisations du fait de leur simplicité. Aussi, les cas d‟utilisations identifiés dans cette étape<br />
deviendront potentiellement des services et les relations entre les cas d‟utilisations sont un<br />
excellent indicateur de la collaboration et la composition des futurs services (Maamar et al,<br />
2007)(Ibrahim et al., 2006).<br />
L‟artefact caractérisant cette phase est le CIM qui contient les cas d‟utilisations ainsi que les<br />
différents acteurs interagissant avec eux. La figure 79 présente les cas d‟utilisation du système<br />
d‟enseignement à distance :
129 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
Figure 79–Cas d‟utilisation du DLS<br />
III.4.2.<br />
Phase 2: Identification des services par acteur<br />
La phase «Identification des services par acteur» a pour objectif principal la transformation les<br />
exigences métiers capturées à travers les modèles des cas d‟utilisation en une collection de<br />
services. Il s‟agit principalement d‟identifier les services candidats à partir des modèles des cas<br />
d‟utilisation associés à chaque acteur.<br />
L‟artefact clé de cette phase est un ensemble de PIMs associés aux différents acteurs du<br />
système. Chaque PIM se compose des différents services permettant de réaliser les besoins d‟un<br />
acteur spécifique. L‟identification des services se fait en adoptant des règles de refactoring. En<br />
effet, Kim et al. (Kim et al., 2007) ont défini plusieurs règles de refactoring permettant
130 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
l‟identification des services à partir des modèles de cas d‟utilisation. Chaque cas d‟utilisation est<br />
décomposé en termes d‟un ensemble de tâches permettant la réalisation des besoins des acteurs<br />
qui sont en interaction avec ce cas d‟utilisation. Chaque tâche est définie comme étant une unité<br />
de travail indivisible apportant une valeur ajoutée à l‟utilisateur dans le contexte d‟un processus<br />
métier. Une tâche fait partie des scénarios permettant de réaliser les cas d‟utilisation. Dans cette<br />
phase, un ensemble de tâches sont créés à partir des diagrammes des cas d‟utilisation pour<br />
chaque acteur. Cette phase peut être formalisée en se basant principalement sur les diagrammes<br />
de séquences définis en UML qui jouent un rôle fondamental pour la représentation des<br />
différents scénarios des cas d‟utilisation.<br />
Le refactoring des cas d‟utilisation est la redistribution des comportements en termes de tâches<br />
d‟un cas d‟utilisation à un autre. A partir des tâches des différents cas d‟utilisation, et en<br />
appliquant les règles de refactoring, nous pouvons identifier des cas d‟utilisation bien adaptés.<br />
Kim et al. (Kim et al., 2006) identifient cinq règles de refactoring : la règle de refactoring par<br />
décomposition, la règle de refactoring par équivalence, la règle de refactoring par généralisation,<br />
la règle de refactoring par fusion et la règle de refactoring par suppression.<br />
La règle de refactoring par décomposition est appliquée lorsque nous avons des cas d‟utilisation<br />
compliqués. Dans cette situation, il est nécessaire de faire décomposer ce cas d‟utilisation en des<br />
sous-cas d‟utilisation plus simples. Ceci est effectué en utilisant l‟ensemble des tâches associées<br />
à chaque cas d‟utilisation. En effet, pour chaque cas d‟utilisation, nous élaborons les tâches<br />
permettant de réaliser le cas d‟utilisation. A partir de ces tâches, nous pouvons déduire des<br />
fonctionnalités indépendantes et par conséquent, définir des sous-ensembles de tâches qui<br />
correspondent à des nouveaux cas d‟utilisations.<br />
Le refactoring par équivalence s‟applique à des cas d‟utilisations ayant des tâches équivalentes.<br />
Dans ce cas, nous pouvons conclure que les deux cas d‟utilisations ont le même comportement et<br />
on peut les traiter comme un seul cas d‟utilisation correspondant à un seul service.<br />
Le refactoring par généralisation peut s‟appliquer lorsque nous avons des cas d‟utilisation qui<br />
partagent des tâches communes. Dans ce cas, nous créons un cas d‟utilisation de base contenant<br />
les tâches communes ainsi que de nouveaux cas d‟utilisation étendant le cas d‟utilisation de base.
131 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
Le refactoring par fusion est appliqué lorsque nous avons des cas d‟utilisation de granularité fine<br />
qui modélisent des fonctionnalités sémantiquement reliées. Dans ce cas, nous fusionnons les<br />
deux cas d‟utilisation pour avoir un cas d‟utilisation plus consistant.<br />
Le refactoring par suppression est défini lorsque nous avons un cas d‟utilisation qui n‟a aucune<br />
relation que ce soit avec les autres cas d‟utilisation ou avec les acteurs du système. Dans cette<br />
situation, le cas d‟utilisation est redondant et par conséquent on peut le supprimer du système.<br />
Dans le cadre de notre étude de cas, nous avons identifié les cas d‟utilisation qui interagissent<br />
avec un acteur prédéfini. Nous décrivons chaque cas d‟utilisation par un ensemble de tâches,<br />
comme présenté dans la figure 80 pour le cas d‟utilisation « assurer Formation » associé à<br />
l‟acteur Enseignant. Pour chaque acteur (Etudiant, Enseignant, Administrateur), nous identifions<br />
les différents modèles métiers se composant des services correspondant et répondant aux besoins<br />
d‟un acteur donné.<br />
T1. L‟enseignant consulte l‟agenda<br />
T2. L‟enseignant gére les forums<br />
T2.1 L‟enseignant consulte un forum<br />
T2.2 L‟enseignant recherche un forum donné<br />
T2.3 L‟enseignant poste un message dans un forum<br />
T3.l‟enseignant gère les tests<br />
T3.1 l‟enseignant ajoute un test<br />
T3.2 L‟enseignant consulte un test<br />
T3.3 L‟enseignant propose une solution à un test<br />
T4. L‟enseignant gére les ateliers<br />
T4.1 L‟enseignant peut consulter un atelier<br />
T4.2 L‟enseignant propose une solution à l’atelier<br />
T5.l‟enseignant gére les devoirs<br />
T5.1 L‟Enseignant peut consulter un devoir<br />
T5.2 L‟Enseignant propose une solution à un devoir<br />
T6. L‟enseignant gérer la documentation d‟une formation.<br />
T6.1 L‟enseignant peut consulter la documentation d‟une formation donnée<br />
T6.2 L‟enseignant ajoute la documentation d‟une fomation<br />
T6.3 l‟enseignant supprime la documentation d‟une formation<br />
T7. L‟enseignant peut gérer les glossaires d‟une formation donnée<br />
T7.1 L‟enseignant consulte un glossaire<br />
T7.2 L‟enseignant ajoute un article dans un glossaire<br />
T7.3 L‟enseignant recherche un article dans un glossaire<br />
T8. L‟enseignant participe dans les chats.<br />
T8.1 L‟enseignant ajoute un chat<br />
T8.2 L‟enseignant modifie un chat<br />
T8.3 L‟enseignant participe à un chat<br />
T9.L‟enseignant gére les examens<br />
T9.1 L‟enseignant consulte l‟agenda des examens<br />
T9.2 L‟enseignant propose le sujet de l‟examen<br />
T9.3 L‟enseignant corrige les copies de l‟examen<br />
T9.4 L‟Enseignant saisit les notes d‟un examen d‟une formation donnée<br />
Figure 80–Scénario associé au cas d’utilisation «assurer Formation» associé à l’acteur<br />
Enseignant
132 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
En ce qui concerne l‟acteur Enseignant, comme illustré dans la figure 81, le cas d‟utilisation<br />
«Assurer formations» est décomposé entre trois cas d‟utilisation «Documentation», «Examen»,<br />
et «Formation». Chaque cas d‟utilisation est décrit par un ensemble de fonctionnalités<br />
indépendantes. Ainsi, chaque cas d‟utilisation devient un service. Au contraire, le cas<br />
d‟utilisation «Gestion de formations» est décrit par des fonctionnalités qui ont des relations avec<br />
le service « Formation». Dans ce cas, le service identifié sera fusionné avec le service Formation<br />
puisque les deux services fournissent des activités sémantiquement proches.<br />
PIM-Enseignant<br />
Formation<br />
Documentation<br />
Examen<br />
Agenda<br />
Figure 81–Identification des services associés à l’acteur « Enseignant »<br />
La figure 82 montre les différents services qui composent le modèle de services correspondant à<br />
l‟acteur Administrateur. Pour cet acteur, le cas d‟utilisation Inscription est décrit avec des tâches<br />
indépendantes. Dans cette situation, ce cas d‟utilisation devient automatiquement un service. Au<br />
contraire, le cas d‟utilisation «Gestion de formations» est décomposé en de sous-cas d‟utilisation<br />
Agenda, Examen et Formation. Chaque cas d‟utilisation est décrit par un ensemble indépendant<br />
des fonctionnalités indépendantes. Ainsi, chaque cas d‟utilisation deviendra un service.
133 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
PIM-Administrateur<br />
Formation<br />
Inscription<br />
Examen<br />
Agenda<br />
Figure 82–Identification des services associés à l’acteur «Administrateur»<br />
Figure 83 illustre les différents services qui composent un modèle correspondant à l‟acteur<br />
Etudiant. Pour cet acteur, le cas d‟utilisation «Inscription» est décrit par des ensembles de tâches<br />
indépendantes. Ainsi, ce cas d‟utilisation devient un service. Au contraire, le cas d‟utilisation<br />
«Suivre formation» est décomposé en quatre cas d‟utilisations Agenda, Documentation,<br />
Examen et Formation. Chaque cas d‟utilisation est décrit par des fonctionnalités indépendantes.<br />
En conséquence, chaque cas d‟utilisation devient un service.<br />
PIM-Etudiant<br />
Formation<br />
Inscription<br />
Documentation<br />
Examen<br />
Agenda<br />
Figure 83–Identification des services associés à l’acteur «Etudiant »<br />
III.4.3.<br />
Phase 3 : Spécification des interfaces de services<br />
Un service est caractérisé par ses interfaces fournies aux différents clients du service. Dans cette<br />
phase et après l‟identification de services, vient ensuite l‟étape de la définition des interfaces de
134 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
services. Chaque interface décrit les fonctionnalités que le service peut fournir à ses clients.<br />
Ainsi, chaque interface de service se compose des opérations fournies par le service ainsi que ses<br />
messages en entrée/sortie. Généralement, les interfaces de services, les opérations de service et<br />
les messages d‟entrée et de sortie sont identifiés lors de la description des cas d‟utilisation via un<br />
ensemble de tâches. En effet, chaque interaction entre un acteur et un service ou entre services<br />
permet l‟identification des opérations ainsi que leurs messages en entrée ou en sortie.<br />
L‟artefact clé caractérisant cette phase est un PIM raffiné qui correspond à un acteur donné. Ce<br />
PIM se base sur les PIMs définis dans la précédente phase. Il se compose des services et de la<br />
spécification de leurs interfaces. La figure 84 et la figure 85 décrivent les interfaces des services<br />
de notre étude de cas correspondant aux acteurs Etudiant et Administrateur. Nous fournissons<br />
pour chaque service ses interfaces associées aux différents acteurs.<br />
PIM raffiné-Etudiant<br />
<br />
Agenda<br />
consulterAgenda() ;<br />
<br />
Documentation<br />
consulterDocumentation()<br />
telechargerDocumentation() ;<br />
proposerSuplementDocumetation() ;<br />
<br />
Examen<br />
consulterCalendrierExamen() ;<br />
consulterExamen() ;<br />
poserQuestionExamen() ;<br />
deposerCopies() ;<br />
consulterNotes() ;<br />
<br />
Formation<br />
consulterFormation() ;<br />
consulterExercice() ;<br />
proposerSollutionExercice() ;<br />
posterMessage() ;<br />
proposerTestSolution() ;<br />
accessProjectRessource() ;<br />
consulterProjet() ;<br />
consulterAnnounceFormation() ;<br />
consultSynopsisFormation ;<br />
consultListFormation() ;<br />
consulterForum() ;<br />
afficherForum() ;<br />
rechercherFOrum() ;<br />
consulterDevoir() ;<br />
afficherDevoir() ;<br />
rechercherDevoir() ;<br />
consulterGlossaire() ;<br />
afficherGlossaire() ;<br />
ajouterArticleGlossaire() ;<br />
importerGlossaire() ;<br />
consulterTest() ;<br />
afficherTest() ;<br />
afficherChat() ;<br />
participerChat() ;<br />
Figure 84–PIM raffiné associé à l’acteur Etudiant
135 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
PIM raffiné-Administrateur<br />
<br />
Inscription<br />
consulterDateLimite();<br />
consulterListeFormation();<br />
deciderInscription();<br />
ajouterListeAttente() ;<br />
fixerFraisInscription() ;<br />
Examen<br />
consulterCalendrierExamen();<br />
definirCalendrierExamen();<br />
consulterNotesEtudiants();<br />
Formation<br />
ajouterNouvelleFormation();<br />
ajouterAnnounceFormation();<br />
supprimerFormation();<br />
affecterResponsableFormation();<br />
consulterSynopsisFormation();<br />
consulterListFormation();<br />
Agenda<br />
ConsulterAgenda()<br />
ajouterEvenement()<br />
supprimerEvenement()<br />
Figure 85– PIM raffiné associé à l’acteur Administrateur<br />
III.4.4.<br />
Phase 4 : Fusion des modèles visuels<br />
Une fois les modèles par acteurs élaborés, la phase de fusion de ces modèles peut commencer.<br />
L‟objectif de cette phase est la production d‟un modèle global à base de services représentant les<br />
différents besoins des différents acteurs sans pour autant perdre les spécificités de chaque acteur.<br />
La première étape de la phase de fusion consiste en la comparaison des différents modèles<br />
associés aux différents acteurs élaborés dans les précédentes phases pour éventuellement détecter<br />
les incohérences ou les ambiguïtés sur les services (nommages, messages d‟entrée/sortie des<br />
opérations, interfaces de services, services). Une fois cette étape élaborée, nous procédons par la<br />
suite à produire un modèle métier global multidimensionnel représentant notre système. Dans<br />
cette phase, chaque service apparaissant dans plusieurs modèles visuels est un service multivues<br />
ayant une interface de service multivues. Cette interface se compose d‟une interface de service<br />
de base contenant les opérations communes entre les différents services identifiés dans les<br />
différents modèles associés aux acteurs, et un ensemble d‟interfaces de services vues<br />
représentant les besoins et les spécificités de chaque acteur.<br />
La phase de fusion peut être formalisée mathématiquement en se basant sur la théorie des<br />
graphes. En effet, notre équipe a déjà développé une approche à base des graphes pour la fusion<br />
des diagrammes de classes UML (Anwar, 2009) pour produire des diagrammes des classes
136 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
multivues. Dans le cadre de notre étude de cas, le service Agenda, Inscription, Formation,<br />
Examen et Documentation apparaissent dans plusieurs modèles visuels. Dans ce cas, nous<br />
concluons que ces services sont des services multivues. En conséquence, nous procédons à la<br />
définition de leurs interfaces de service multivues.<br />
Après l‟exécution des activités de cette phase, nous obtenons un PIM global qui se compose des<br />
différents services multivues ainsi que de leurs interfaces de service multivues. La Figure 86<br />
illustre l‟interface de service multivues du service Formation.<br />
Formation<br />
<br />
Formation_Administrateur<br />
<br />
ajouternouvelleFormation();<br />
ajouterCalendrierFormation() ;<br />
ajouterAnnounceFormation() ;<br />
supprimerFormation() ;<br />
affecterResponsableFormation() ;<br />
<br />
Formation<br />
<br />
Formation_Etudiant<br />
consulterFormation() ;<br />
consulterExercice() ;<br />
proposerSollutionExercice() ;<br />
posterMessage() ;<br />
proposerTestSolution() ;<br />
accessProjectRessource() ;<br />
consulterProjet() ;<br />
consulterAnnounceFormation() ;<br />
<br />
Formation<br />
consultSynopsisFormation ;<br />
consultListFormation() ;<br />
<br />
<br />
Course_Enseignant<br />
<br />
ajouterFormation();<br />
supprimerFormation() ;<br />
ajouterExercice() ;<br />
ajouterSolutionExercice() ;<br />
proposerProjet() ;<br />
poserQuestion() ;<br />
proposerForum() ;<br />
proposerTest() ;<br />
ajouterAnnounceFormation() ;<br />
repondreQuestionsEtudiants() ;<br />
Figure 86–Extrait du résultat de l’étape de fusion du service Formation
137 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
III.4.5.<br />
Phase 5: Transformation des modèles et génération de code<br />
L‟objectif des phases précédentes est la spécification d‟un système orienté service<br />
indépendamment des technologies d‟implémentations (dotNet, JWSDP, etc) et des standards de<br />
la technologie des services web (e.g., WSDL, UDDI, SOAP, BPEL4WS, etc). Le résultat de ces<br />
phases est un modèle métier de haut niveau se composant principalement d‟un ensemble de<br />
services multivues qui décrivent la structure et les fonctionnalités du système à concevoir. Pour<br />
la prise en compte des plates-formes technologiques, l‟objectif de cette phase est la génération de<br />
code à partir des modèles métiers définis en se basant sur un ensemble de transformations. Cette<br />
génération de code concerne la génération de l‟implémentation et de la description des services<br />
multivues.<br />
Pour atteindre ces objectifs, la phase de transformation de modèles peut être effectuée en la<br />
décomposant en plusieurs étapes : (1) la première étape consiste en la création des métamodèles<br />
ou l‟utilisation des métamodèles existants pour la construction des PIMS. Généralement, ces<br />
métamodèles doivent être conformes au MOF. Dans notre cas de figure, nous utilisons le<br />
métamodèle de notre profil défini VSoaML qui permet la modélisation et la spécification des<br />
systémes orientés services adaptables. Ce métamodèle est conforme au MOF. (2) La deuxième<br />
étape de la phase de transformation vise principalement le choix ou la création des métamodèles<br />
en vue de l‟élaboration des plateformes technologiques. Il s‟agit de choisir un métamodèle<br />
existant d‟une plateforme technologique telles que .Net ou J2EE ou créer un nouveau<br />
métamodèle qui permet la définition d‟un PSM dans le cas de l‟apparition d‟une nouvelle<br />
technologie surtout si on sache que les technologies évoluent rapidement et sans cesse.<br />
(3) la troisième étape de la phase de transformation permet la définition des correspondances<br />
entre le métamodèle source (i.e le métamodèle du PIM) et le métamodèle cible (i.e , le<br />
métamodèle du PSM). Pour chaque élément constituant le métamodèle, il faut identifier les<br />
éléments du métamodèle cible qui lui sont similaires et équivalents.<br />
(4) la quatrième étape vise la définition des règles de transformations via l‟utilisation d‟un<br />
langage de transformation donné tel que ATL (ATL ,2004), YATL, BOTL (Bidirectional Object
138 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
oriented Transformation Language) (Marschall et al., 2003) tout en se basant sur les<br />
correspondances définies dans l‟étape précédente.<br />
(5) la cinquième étape de la phase de transformation vise l‟utilisation de la définition de<br />
transformation pour pouvoir transformer un modèle métier d‟entrée en un modèle de sortie<br />
spécifique à une plateforme (PSM). Ensuite, nous vérifions si les PSMs générés sont complets<br />
ou pas. S‟ils sont incomplets, cette étape nécessite l‟intervention des développeurs pour les<br />
compléter.<br />
(6) la dernière étape de cette phase a pour objectif la génération du code, des fichiers de<br />
configuration et de déploiement à partir des PSMs finaux générés lors des précédentes étapes.<br />
PIM(VSoaML)<br />
Tranformation des modéles<br />
PSMs<br />
Génération du code<br />
Code<br />
Figure 87-Phase de transformation de modèle et génération du code
139 Processus de Développement Dirigé par les Modèles des Systèmes Orientés Services Adaptables<br />
III.5. Conclusion<br />
Dans le cadre de ce chapitre, nous avons présenté un processus de développement des systèmes<br />
orientés services adaptables aux différents types d‟utilisateurs en se basant sur le profil VSoaML.<br />
La caractéristique principale d‟un tel processus est sa définition dans le cadre de l‟approche<br />
MDA. Ce processus définit les phases, les artéfacts et les activités nécessaires pour identifier,<br />
spécifier et implémenter les services multivues. Les phases principales de ce processus sont :<br />
(1) l‟élaboration des cas d‟utilisations permettant de formaliser les besoins métiers des differénts<br />
utilisateurs<br />
(2) l‟identification des services par acteurs (rôles)<br />
(3) la spécification des interfaces des services associées à chaque acteur<br />
(4) la fusion des différents modèles visuels,<br />
(5) la phase de transformation des différents modèles et de génération du code vers des<br />
plateformes d‟implémentation.<br />
Ce processus est illustré à travers une étude de cas concernant un système d‟enseignement à<br />
distance.<br />
Après avoir présenté le profil VSoaML (Cf.chapitre 2) ainsi que le processus de développement<br />
des SOSs, deux composantes de notre approche d‟ingénierie des SOSs adaptables, l‟objectif du<br />
chapitre suivant est de présenter la troisième composante de cette approche. Il s‟agit de l‟outil<br />
permettant l‟automatisation de la génération du code à partir des modèles métiers de haut niveau<br />
exprimé en se basant sur notre profil et élaboré selon notre processus de développement.
140 VSoaMLTool : Outil de génération de code automatique<br />
IV. VSoaMLTool : Outil de génération de code automatique<br />
IV.1. Introduction<br />
Ce chapitre présente l‟outil VSoaMLTool (Kenzi et al., 2009b) ayant pour objectif la génération<br />
de code à partir des modèles métiers abstraits de haut niveau. VSoaMLTool est défini dans le<br />
cadre de l‟ingénierie dirigée par les modèles en se basant plus particulièrement sur les standards<br />
et les concepts de l‟approche MDA. En effet, après l‟élaboration des modèles métiers,<br />
VSoaMLTool se base principalement sur des transformations ciblant différentes plateformes<br />
technologiques pour la génération des différents artéfacts d‟un Système Orienté Services.<br />
VSoaMLTool peut être vu comme étant un atelier de génie logiciel associé au profil VSoaML.<br />
Comme nous l‟avons présenté dans le chapitre 2, VSoaML permet de modéliser et de spécifier<br />
un système orienté service adaptable indépendamment des plates-formes d‟implémentation<br />
(J2EE, dotNet, etc.) et les standards de la technologie des services web (SOAP, WSDL, UDDI,<br />
BPEL4WS). VSoaML se base fondamentalement sur le concept de service multivues comme une<br />
entité de modélisation capable de représenter les besoins et les spécificités des utilisateurs<br />
suivant leurs profils. Le service multivues est une nouvelle entité de modélisation qui fournit, en<br />
plus des interfaces de services, des interfaces qui se caractérisent par leur flexibilité et<br />
adaptabilité aux différents acteurs interagissant avec le service. Ce profil est utilisé<br />
essentiellement comme formalisme de modélisation permettant l‟élaboration d‟un PIM. Ce PIM<br />
fera l‟objet de transformations en vue de la génération de la description de chaque service<br />
multivues et de son implémentation suivant différentes plateformes technologiques (e.g., J2EE,<br />
.Net).<br />
La première transformation concerne la génération de la description de chaque service multivues<br />
composant le PIM d‟un système donné. En effet, nous avons défini une légère extension au<br />
standard WSDL pour la description de service multivues, appelée MVWDL. Cette extension de<br />
WSDL permet la représentation en XML aussi bien des interfaces d‟un service donné que les<br />
informations concernant les acteurs interagissant avec ce service. Cette transformation est définie
141 VSoaMLTool : Outil de génération de code automatique<br />
par un ensemble de règles de transformation en utilisant le langage ATL comme un langage de<br />
transformation de modèles.<br />
La deuxième transformation concerne la génération du code constituant l‟implémentation de<br />
chaque service multivues ciblant principalement la plateforme d‟implémentation J2EE.<br />
Chaque transformation de modèles a été décomposée en deux étapes : la première étape concerne<br />
la spécification des correspondances. La deuxième étape permet la définition de transformations<br />
en se basant sur le langage de transformation de modèle ATL. En fait, la spécification de<br />
correspondances vise à définir les correspondances entre les éléments des métamodèles source et<br />
cible, et la définition de transformations permet de décrire en détail et d‟exécuter les étapes de la<br />
transformation d‟un modèle en un autre modèle en respectant la spécification de<br />
correspondances. Cette approche va dans le même sens que la vision de l‟OMG pour le<br />
développement des systèmes informatiques à savoir la séparation des préoccupations. En fait,<br />
une spécification de correspondances peut être vue comme un PIM et une définition de<br />
transformations comme un PSM.<br />
Une fois générées la description de chaque service multivues et son implémentation, nous<br />
illustrons comment faire le déploiement de tels artefacts suivant l‟architecture SOA.<br />
La structure de ce chapitre est la suivante. La section 2 présente un aperçu global de l‟outil<br />
VSoaMLTool en identifiant ses principaux modules et leurs fonctionnalités. La section 3 illustre<br />
les différentes transformations effectuées par l‟outil VSoaMLTool pour la génération<br />
automatique de code. La section 4 permet d‟illustrer le déploiement des artefacts générés par<br />
l‟outil VSoaMLTool selon l‟architecture SOA.<br />
IV.2. VSoaMLTool : modules et fonctionnalités<br />
VSoaML est un profil UML capable de décrire un système orienté service adaptable à un haut<br />
niveau d‟abstraction. Il permet d‟exprimer des modèles métiers indépendamment des platesformes<br />
d‟implémentation et des standards. Pour outiller ce profil, nous avons développé un<br />
outil logiciel, appelé VSoaMLTool, à l‟instar d‟Objecteering ou RSA. VSoaMLTool permet
142 VSoaMLTool : Outil de génération de code automatique<br />
l‟édition des modèles métiers, de transformer ces modèles en vue de la génération du code<br />
concret. Il permet aussi le déploiement des différents artefacts générés d‟un SOS adaptable : les<br />
descriptions des services multivues ainsi que leurs implémentations selon différentes plateformes<br />
technologiques. Le module déploiement a pour objectif principal le déploiement des différents<br />
services d‟un SOS adaptable. Il s‟agit principalement de déployer les implémentations ainsi que<br />
des descriptions de chaque service multivues suivant l‟architecture de référence de la technologie<br />
des services web. La figure 88 illustre les différents modules de l‟outil VSoaMLTool :<br />
Module Edition de<br />
modèle<br />
<br />
PIM(VSoaML)<br />
<br />
Module Transformation de modèles<br />
<br />
<br />
<br />
Description<br />
Implémentation (Java,<br />
C#)<br />
Composition de services BPEL<br />
<br />
<br />
Module Déploiement<br />
<br />
Figure 88–Modules de VSoaMLTool<br />
Dans le cadre de ce chapitre, nous nous concentrons tout particulièrement sur le module de<br />
transformation de modèles et de génération du code ainsi que le module de déploiement. Le<br />
module d‟édition des modèles n‟est pas encore développé. Nous projetons utiliser les outils<br />
associés aux DSL pour la réalisation de ce module. En particulier, le GMF (Graphical Modeling<br />
Framework) qui permet le développement de générateurs d‟éditeurs de modèles.
143 VSoaMLTool : Outil de génération de code automatique<br />
IV.3. VSoaMLTooL : Transformation de modèle et génération de code<br />
Pour bénéficier des avantages de MDA, nous avons défini une approche MDA pour le<br />
développement des systèmes orientés services adaptables. Ainsi, pour le développement d‟un<br />
système orienté services adaptable, nous définissons premièrement un PIM en se basant sur notre<br />
profil VSoaML. Ce PIM reflète la structure et les fonctionnalités d‟un système suivant les<br />
acteurs interagissant avec chaque service. Pour chaque service qui compose le système, nous<br />
représentons les exigences métiers en identifiant les fonctionnalités communes et les<br />
fonctionnalités variant d‟un acteur à un autre. Les fonctionnalités communes requises par tous les<br />
acteurs sont représentées en utilisant l‟élément de modélisation “baseServiceInterface” et les<br />
fonctionnalités spécifiques à chaque acteur sont représentées en utilisant l‟élément de<br />
modélisation “ViewServiceInterface”.<br />
Une fois le PIM élaboré en utilisant le profil VSoaML, nous définissons deux transformations :<br />
une transformation pour la génération de la description de chaque service multivues composant<br />
le système. Une deuxième transformation permettant la génération des implémentations de<br />
service multivues ciblant la plateforme J2EE.<br />
La figure 89 illustre les différentes transformations définies dans le cadre de notre approche.<br />
PIM (VSoaML)<br />
et<br />
Transformation<br />
modèle vers<br />
modèle<br />
MVWSDL(PSM)<br />
J2EE(PSM)<br />
Transformation<br />
modèle vers code<br />
Code (document<br />
MVWSDL)<br />
Code (Code Java)<br />
Figure 89–Processus de génération de code à partir des PIMs (VSoaML)<br />
La démarche MDA permettant d‟effectuer la transformation des modèles PIM en vue de la
144 VSoaMLTool : Outil de génération de code automatique<br />
génération du code selon différentes plateformes, se définit en plusieurs étapes. Premièrement,<br />
nous commençons par la création ou l‟utilisation des métamodèles existants des PIMs et des<br />
PSM. En deuxième lieu, nous spécifions les correspondances entre le métamodèle source et le<br />
métamodèle cible. Il s‟agit de définir les équivalences entre un élément du métamodèle source et<br />
les éléments qui lui sont équivalents du métamodèle cible. En troisième lieu, nous définissons les<br />
règles de transformation en utilisant un langage de transformation de modèles donné. En<br />
quatrième lieu, nous appliquons ces règles de transformation sur un modèle métier en entrée,<br />
pour obtenir, en sortie, un modèle spécifique à une plateforme donnée. En cinquième lieu, on<br />
vérifie ce PSM, s‟il est incomplet, on le complète. Dans le cas contraire, nous générons le code.<br />
Les sections suivantes illustrent le processus défini dans la figure 85. La section 4 présente le<br />
PIM de notre étude de cas à base de service multivues. La Section 5 illustre le métamodèle du<br />
profil VSoaML. La section 6 décrit la transformation du PIM(VSoaML) permettant la génération<br />
du code MVWSDL. La section7 décrit les différentes transformations permettant la génération<br />
du code java par transformation du PIM(VSoaML). La section 8 décrit le module de déploiement<br />
suivant l‟architecture SOA des artefacts générés.<br />
IV.4. Le PIM (VSoaML) de l’étude de cas DLS<br />
Notre étude de cas est une version simplifiée d‟un Système d‟enseignement à distance. Notre<br />
objectif est d‟utiliser cette version simplifiée pour illustrer et valider notre approche. Ainsi, nous<br />
avons identifié certains services multivues du DLS : Inscription, Formation, Documentation et<br />
Examen. Ces services sont multivues du moment où ils interagissent avec plusieurs acteurs :<br />
Enseignant, Etudiant et Administrateur. Le service Inscription fournit les fonctionnalités<br />
nécessaires à l‟étudiant pour faire son inscription. Il permet à l‟administrateur de gérer les<br />
inscriptions des étudiants, de fixer les frais d‟inscription aux différentes formations et décider des<br />
inscriptions des étudiants. Le service Formation fournit à l‟étudiant les fonctionnalités lui<br />
permettant de suivre des formations. Ils peuvent accéder aux exercices, poser des questions,<br />
consulter les projets d‟une formation donnée, faire des quiz et envoyer des messages aux forums<br />
de discussion spécifiques à une formation donnée. Le service Formation permet à l‟étudiant de<br />
créer des formations, de répondre aux questions des étudiants, de proposer des exercices et de<br />
répondre aux messages des forums de discussion. L‟acteur administrateur utilise le service
145 VSoaMLTool : Outil de génération de code automatique<br />
Formation pour fixer les frais d‟une formation donnée, pour gérer son calendrier et pour affecter<br />
les responsables des formations. Le service Documentation permet à un enseignant de charger les<br />
documents concernant une formation spécifique, de mettre à jour ou de supprimer leur contenu.<br />
Il permet aux étudiants de télécharger les documentations nécessaires (fichiers pdf, audio/video,<br />
etc). Le service Examen permet à l‟étudiant de passer des examens, de télécharger le sujet, de<br />
poser des questions de compréhension et de consulter ses notes. Il permet à l‟enseignant de<br />
proposer un examen, de répondre aux questions des examens.<br />
Le service multivues La spécification associée L‟interface de service multivues<br />
associée<br />
Service Formation<br />
<br />
Formation<br />
MultiviewServiceinterface<br />
Formation<br />
Service Documentation<br />
<br />
Documentation<br />
MultiviewServiceinterface<br />
Documentation<br />
Service Examen<br />
<br />
Examen<br />
MultiviewServiceinterface<br />
Examen<br />
Service Inscription<br />
<br />
Inscription<br />
MultiviewServiceinterface<br />
Inscription<br />
Tableau 9–Services multivues du Systéme d’Enseignement à distance<br />
Pour élaborer notre PIM en utilisant le profil VSoaML, nous avons pris en compte les<br />
caractéristiques du service en SOC. En effet, un service est autonome, indépendant et peut être<br />
utilisable dans plusieurs contextes et processus métiers. Ainsi, dans notre cas d‟étude nous avons<br />
identifié les services qui permettent l‟implémentation des fonctionnalités principales du DLS.<br />
Chaque service identifié est autonome, indépendant et il encapsule des fonctionnalités cohésives.
<br />
146 VSoaMLTool : Outil de génération de code automatique<br />
Le Tableau 9 présente les services multivues du DLS ainsi que leurs spécifications (chaque<br />
service a une « Specification » et chaque spécification contient la description des interfaces de<br />
services ainsi que la description des interfaces de service multivues). La figure 90 illustre les<br />
différents types d‟interfaces des différents services multivues. Cette figure illustre la structure<br />
Le PIM (VSoaML) du DLS<br />
<br />
Formation_Enseignant<br />
<br />
Formation_Enseignant<br />
<br />
Examen_Enseignant<br />
<br />
Course_Base<br />
ajouterFormation() ;<br />
supprimerFormation() ;<br />
ajouterExercice() ;<br />
ajouterSolutionExercice() ;<br />
proposerProjet() ;<br />
poserQuestion() ;<br />
ProposerForum(),<br />
repondreQuestionsEtudiants() ;<br />
proposerTest() ;<br />
proposerQuiz() ;<br />
consultSynopsisFormation() ;<br />
consultListFormation() ;<br />
<br />
ajouterExamen() ;<br />
repondreQuestionExamen() ;<br />
evaluerExamen() ;<br />
ajouterNotes() ;<br />
<br />
Exam_Student<br />
consulterCalendrierExamen() ;<br />
<br />
<br />
Formation_Etudiant<br />
<br />
<br />
consulterExamen() ;<br />
poserQuestionsExamen() ;<br />
consulterNotest() ;<br />
<br />
consulterFormation() ;<br />
consulterExercice() ;<br />
proposerSolutionExercice() ;<br />
posterMessage();<br />
proposeSolutionTest() ;<br />
consulterAnnounceFormation() ;<br />
<br />
Examen_Administrateur<br />
consulterNotesEtudiant() ;<br />
definirCalendrierExamen() ;<br />
<br />
Course_Professor<br />
ajouterNouvelleFormation();<br />
ajouterCalendrierFormation(),<br />
supprimerFormation() ;<br />
affecterResponsableFormation() ;<br />
<br />
Doc_enseignant<br />
<br />
Doc_Enseignant<br />
<br />
Inscription_Etudiant<br />
<br />
Inscription<br />
chargerDocumentation() ;<br />
updateDocumentation() ;<br />
supprimerDocumentation() ;<br />
consulterDocumentation()<br />
;<br />
demanderInscription() ;<br />
payerFraisInscription();<br />
consulterDateLimite() ;<br />
consulterListFormation() ;<br />
<br />
<br />
<br />
Insciption_Administrateur<br />
<br />
<br />
Doc_etudiant<br />
deciderInscription() ;<br />
ajouterListeAttente() ;<br />
fixerFraisInscription() ;<br />
telechargerDocumentation() ;<br />
proposerSuplementDocumentati<br />
on() ;<br />
Figure 90–Extrait des interfaces de service multivues des services multivues du DLS
147 VSoaMLTool : Outil de génération de code automatique<br />
des interfaces de services multivues. En fait, chaque interface de service multivues est composée<br />
d‟une interface de service de base qui représente les fonctionnalités communes entre les<br />
différents acteurs. Les interfaces de service vues représentent les fonctionnalités spécifiques à<br />
chaque acteur.<br />
IV.5. Le métamodèle du profil VSoaML<br />
Comme nous l‟avons expliqué dans la section IV.3, la transformation de modèle nécessite la<br />
création de nouveaux métamodèle ou l‟utilisation des métamodèles existants. Dans notre cas de<br />
Figure 91–Métamodèle VSoaML
148 VSoaMLTool : Outil de génération de code automatique<br />
figure, et dans l‟objectif de l‟automatisation de la génération de code, nous avons défini un<br />
métamodèle de notre profil VSoaML comme expliqué dans le deuxième chapitre. La figure 91<br />
illustre le métamodèle du profil VSoaML.<br />
IV.6. Du PIM (VSoaML) vers des descriptions (MVWSDL)<br />
L‟objectif de cette section est de présenter les transformations définies pour la génération des<br />
descriptions MVWSDL à partir d‟un PIM exprimé en VSoaML. Dans un premier temps, nous<br />
présentons MVWSDL notre extension du standard MVWSDL ainsi que son métamodèle. Dans<br />
un second temps, nous présentons la transformation du PIM élaboré en utilisant le profil<br />
VSoaML vers un PSM à base de MVWSDL en spécifiant les correspondances entre métamodèle<br />
source et cible et en définissant les règles de transformation en utilisant un langage de<br />
transformation de modéles tel que ATL (ATL, 2004).<br />
IV.6.1.1<br />
Le Multiview WSDL pour la description des services multivues<br />
WSDL (Web Service Description Language) est un standard W3C qui définit un format de<br />
description des services web fondé sur XML. Les services sont représentés en WSDL comme un<br />
maillage de terminaisons agissant sur des messages contenant des informations sur des<br />
documents ou des procédures indépendamment des protocoles de transport de messages utilisés.<br />
WSDL permet principalement la description d‟un service web et plus spécifiquement :<br />
Ses interfaces<br />
Ses opérations fournies<br />
Les paramètres d‟entrée/sortie<br />
Le type des paramètres de chaque opération<br />
Les points d‟entrées (URL) des différentes opérations.<br />
Dans la pratique, le standard WSDL définit un langage pour l‟élaboration des documents XML<br />
pour la description des services. Chaque document WSDL contient une ou plusieurs définitions<br />
de Services Web reprenant, pour chacun d‟entre eux, les différents composants (types de<br />
données, messages, types de port, liaisons et ports). Il est également possible d‟utiliser la balise<br />
pour fragmenter et rassembler les documents WSDL. Comme pour SOAP, la définition<br />
de WSDL mentionne des Namespaces de référence où se trouvent les définitions XMLSchema
149 VSoaMLTool : Outil de génération de code automatique<br />
des balises WSDL elles-mêmes. Le squelette général d‟un document WSDL est illustré par le<br />
schéma suivant (cf. figure 92) :<br />
<br />
<br />
…<br />
<br />
<br />
…<br />
… <br />
…<br />
<br />
<br />
…<br />
<br />
<br />
… <br />
… <br />
<br />
<br />
Figure 92–Structure d'un document WSDL<br />
Plusieurs extensions du standard WSDL ont été proposées dans la littérature pour la prise en<br />
compte de différentes préoccupations non prises en compte initialement par le standard WSDL.<br />
Dans ce sens, Q-WSDL, C-WSDL, SAWSDL(Farrel et al., 2007) ont été définies pour la prise en<br />
compte respectivement de la qualité de service, du contexte ou de la sémantique. Dans notre<br />
approche, nous proposons MVWSDL comme une légère extension du standard WSDL. En effet,<br />
le standard WSDL définit un schéma XML pour la description du service. Ce schéma XML se<br />
base sur six éléments principaux (Types, Messages, PortType, Binding, Port, Service) permettant<br />
de définir les interfaces de services, leurs opérations, les paramètres d‟entrée/sortie de chaque<br />
opération, le type de ces paramètres ainsi que les points d‟entrée (URL) de ces opérations.<br />
Cependant, ce standard ne permet pas la prise en compte du profil de l‟acteur interagissant avec<br />
le service. En effet, deux clients de service avec de profils différents peuvent avoir la même<br />
description WSDL. Ainsi, nous définissons une extension du standard WSDL pour la description<br />
d‟un service multivues. Une telle extension est appelée MVWSDL (MultiView WSDL). Cette<br />
extension permet de faire adapter chaque élément du WSDL à l‟acteur interagissant avec le<br />
service. L‟objectif de cette extension est, d‟une part, de décrire dans un seul document XML<br />
l‟ensemble des interfaces fournies des services qu‟elles soient simples ou multivues. D‟autre part,<br />
elle permet d‟adapter cette description à l‟exécution suivant le profil de l‟utilisateur interagissant
150 VSoaMLTool : Outil de génération de code automatique<br />
avec le service en fournissant à chaque utilisateur la description WSDL standard correspondant à<br />
son profil.<br />
Dans l‟objectif de génération de code conformément aux principes et aux standards de<br />
l‟approche MDA, nous avons établi le métamodèle de MVWSDL comme une extension du<br />
métamodèle WSDL pour la prise en compte du type d‟acteur interagissant avec le service via<br />
l‟ajout de la métaclasse «actor» au métamodèle WSDL. Une telle métaclasse permet de définir le<br />
type d‟acteur interagissant avec le service, et s‟associe aux principales métaclasses du<br />
métamodèle WSDL (cf. figure 93) qui doivent s‟adapter aux profils des utilisateurs.<br />
Le métamodèle de MVWSDL définit les éléments suivants :<br />
Definition : Definition est l‟élément principal du métamodèle de MVWSDL. il<br />
contient les éléments : Import, Type, Message, PortType, Binding et Service<br />
Import : cet élément permet l‟association d‟un espace de noms à la localisation<br />
d‟un document XML.<br />
Types : cet élément est utilisé pour la définition des types simples ou<br />
complexes en se basant sur un schéma XML. Dans l‟objectif de maximiser<br />
l‟interopérabilité entre plateformes hétérogènes, WSDL adopte le XSD comme<br />
un système de types.<br />
Message : cet élément permet la représentation abstraite des données que le<br />
service envoie ou reçoit. Chaque Message se compose des parties (élément<br />
Part) permettant la description d‟une partie d‟un message.<br />
PortType : cet élément permet la définition des interfaces de service. Chaque<br />
PortType se compose d‟un ensemble d‟opérations abstraites. Chaque opération<br />
possède en entrée /sortie un message. les opérations constituant les portType<br />
d‟un service sont caractérisées par les éléments onewyaoperation,<br />
RequestResponseoperation, sollicitResponse et notificationOperation.<br />
Binding : l‟élément binding permet de spécifier un protocole concret de<br />
transport (SOAP, HTTP/GET, SMTP, etc.). Il permet aussi de spécifier les<br />
formats de données pour les opérations et les messages définis dans un<br />
portType donné. L‟élément bindingOperation contient les éléments input,<br />
output et fault décrits selon la réalisation concrète de l‟appel.
151 VSoaMLTool : Outil de génération de code automatique<br />
Port : cet élément permet de spécifier une adresse d‟une liaison définissant un<br />
simple point terminal de communication.<br />
Service : cet élément permet de décrire un service en identifiant ses interfaces<br />
et leur localisation<br />
Actor : cet élément permet la définition des acteurs potentiels intéragissant avec<br />
le service. Il est en relation avec les éléments principaux du métamodèle<br />
WSDL (Types, Message, PortType, Binding, Service).<br />
Figure 93–Métamodèle MVWSDL<br />
IV.6.1.2<br />
Du PIM(VSoaML) vers PSM(MVWSDL)<br />
Dans le cadre de l‟approche MDA, la transformation d‟un PIM vers un PSM nécessite<br />
premièrement la spécification des correspondances entre le métamodèle source et le métamodèle<br />
cible. Ces correspondances sont définies en étudiant les équivalences entre les éléments du<br />
métamodèle source et les éléments du métamodèle cible. En effet, deux ou plusieurs éléments des<br />
différents métamodèles s‟ils sont compatibles et ne présentent pas de contradiction entre eux.<br />
Dans notre cas de figure, nous utilisons le métamodèle de VSoaML comme métamodèle source et
152 VSoaMLTool : Outil de génération de code automatique<br />
le métamodèle de MVWSDL comme métamodèle cible. Le tableau 10 illustre les<br />
correspondances entre les éléments de ces deux métamodèles ainsi que les règles de<br />
transformation y associées.<br />
Après l‟identification des correspondances entre les éléments des deux métamodèles, nous<br />
procédons à la définition des règles de transformation en utilisant le langage de transformation<br />
ATL (ATL, 2004). Ce dernier fournit un plugging sous Eclipse (Eclipse, 2010) dédié à<br />
l‟implémentation des règles de transformation.<br />
Eléments du<br />
métamodèle VSoaML<br />
Eléments du métamodèle<br />
MVWSDL<br />
Régle de transformation<br />
Specification Definition Speci2definition<br />
BaseServiceInterface<br />
Types, PortType,<br />
Binding, Service,<br />
BaseInterface2WSDL<br />
ViewServiceInterface<br />
Types, Portype,<br />
Binding, Service<br />
ViewInterface2WSDL<br />
Parameter Part Param2part<br />
ServiceOperation<br />
PortypeOperation,<br />
Operation2operation<br />
BindingOperation,<br />
InputMessage,<br />
ouputMessage,<br />
ComplexType<br />
dataType Types dataType2type<br />
Tableau 10–Correspondances VSoaML/MVWSDL<br />
La règle de transformation Viewinterface2WSDL permet la création des instances de cinq<br />
éléments du métamodèle du MVWSDL : PortType, Types, Binding, Port et Service. Ainsi,
153 VSoaMLTool : Outil de génération de code automatique<br />
Chaque instance de l‟élément PortType est assignée avec les valeurs des attributs et les<br />
références de l‟élément ViewServiceInterface du métamodèle du SMV. L‟attribut nom de<br />
l‟instance Porttype créée est affecté avec la valeur v.name. La référence actor est affectée avec la<br />
valeur du nom de l‟acteur (v.actor.name) associé à l‟élément viewinterface du métamodèle<br />
MVservice!viewInterface. La référence operations est affectée avec toutes les opérations créés en<br />
faisant appel à la règle de la transformation. La règle Viewinterface2WSDL crée aussi une<br />
instance de l‟élément Types associée à chaque acteur en créant un schéma XML. Pour chaque<br />
schema généré, ses attributs et références sont affectés avec les attributs et les références de<br />
l‟élément viewinterface. Dans ce sens, l‟attribut namespace est initialisée avec le nom de<br />
l‟interface alors que la référence complextype est affectée avec les types de données complexes<br />
crée avec la règle.<br />
La figure 94 illustre cette règle de transformation.<br />
rule Viewinterface2WSDL{<br />
from v: MVService!viewInterface<br />
to out : WSDL!PortType(<br />
name
154 VSoaMLTool : Outil de génération de code automatique<br />
BaseServiceInterface vers cinq éléments du métamodèle : Types, PortType, Binding, Service et<br />
Port. Cette règle est très similaire à la règle de transformation ViewInterface2ws. La différence<br />
principale consiste en l‟attribut actor. En effet, cet attribut contrairement à la précédente règle est<br />
affecté avec la valeur „allactors‟ du moment où l‟interface de service de base représente les<br />
fonctionnalités accessibles par tous les acteurs.<br />
La figure 95 illustre la règle BaseInterface2WSDL.<br />
rule BaseInterface2WSDL{<br />
from v: MVService!baseInterface<br />
to out : WSDL!PortType(<br />
name
155 VSoaMLTool : Outil de génération de code automatique<br />
le contexte de chaque élément du métamodèle MVWSDL.<br />
La figure 96 contient une requête utilisée pour effectuer la transformation modèle-rs-code.<br />
query wsdl2code_query = WSDL!Definition.allInstances()-><br />
collect(x|x.toString().writeTo('C:/SourceCodet11octobre/WSDL/'+ x.name.replaceAll('<br />
.', '/') + '/' + x.name + '.wsdl')); -- Query Template<br />
uses MVWSDL2code;<br />
Figure 96–Requête de génération de code MVWSDL<br />
La figure 97 présente le code ATL des helpers permettant la génération de code. Dans cette<br />
figure, l‟opération allInstances() retourne une collection constituée de toutes les instances de<br />
l‟élément WSDL!Definition présentes dans le modèle MVWSDL. L‟opération sur les collections,<br />
appelée collect(), permet ensuite de récupérer chaque élément de cette collection (représenté par<br />
x), et d‟invoquer l‟opération toString() sur chacun d‟eux. Cette opération est un helper en ATL<br />
défini dans la bibliothèque MVWSDL2code. Après l‟exécution de ce helper, la chaîne de<br />
caractères est écrite dans un fichier « *.wsdl » par le biais de l‟opération writeTo. L‟helper<br />
toString() défini dans le contexte de MVWSDL!PortType enchaîne aussi d‟autres appels à<br />
d‟autres helpers définis dans le contexte de Service, Port, PortType et ainsi de suite.<br />
library MVWSDL2code; -- Library Template<br />
helper context MVWSDL!Definition def: toString() : String =<br />
''+<br />
'\n' +<br />
self.printTypes() +<br />
self.printMessage() +<br />
self.printPortType() +<br />
self.printBinding() +<br />
self.printService() +<br />
'\n';<br />
...<br />
helper context MVWSDL!PortType def: toString(): String =<br />
'\n' +<br />
self.operations-> iterate(i; acc:String='' | acc+ i.toString())+<br />
'\n';<br />
…<br />
;<br />
Figure 97–Code ATL pour la génération de code MVWSDL<br />
La description MVWSDL générée représente la définition des interfaces de services multivues<br />
suivant les acteurs potentiels interagissant avec le service. Le code ci-dessous présente la
156 VSoaMLTool : Outil de génération de code automatique<br />
description MVWSDL du service „Course‟. Ce service multivues est associé à l‟interface de<br />
service multivues composée d‟une interface de service de base et des interfaces de service vues<br />
(ViewServiceInterface). Pour illustrer notre approche, nous avons choisi seulement deux<br />
<br />
<br />
<br />
...<br />
<br />
<br />
...<br />
<br />
<br />
<br />
<br />
...<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
<br />
Figure 98–Code MVWSDL généré<br />
opérations des interfaces associées à deux acteurs qui sont l'étudiant et l'enseignant (Student,<br />
Professor) et deux opérations constituant l‟interface de service de base. Cette derniére contient<br />
les opérations : String consultSynopsisCourse (Course : String) et String consultCourseList (level<br />
:String). L‟interface associée à l‟enseignant contient les opérations suivantes : String addExercice<br />
(exerciseID : integer, Exercise : String) et String addExerciseSolution (ExerciseId : integer,<br />
ExerciseSolution : String). L‟interface associée à l‟etudiant contient les opérations : String<br />
postMessageForum (Course : String, message : String) et String ProposeExerciseSolution
157 VSoaMLTool : Outil de génération de code automatique<br />
(ExerciseId : integer, Solution : String). La figure 98 illustre un extrait du code généré suivant le<br />
méta-modèle de MVWSDL. Dans cet extrait, nous nous focalisons seulement sur l‟élément<br />
PortType parce que les autres éléments se génèrent de la même façon.<br />
IV.7. Du PIM (VSoaML) vers PSM (JaxRPC)<br />
En SOC, chaque service possède une description de service ainsi qu‟une implémentation de<br />
service. Pour générer automatiquement les descriptions de services ainsi que leurs<br />
implémentations, nous avons défini deux transformations du même PIM ciblant deux platesformes<br />
différentes comme illustré dans la figure 99 (le processus de transformation selon<br />
l‟approche MDA). La première transformation permet la génération de la description des services<br />
multivues suivant le métamodèle MVWSDL discuté dans les sections précédentes. La deuxième<br />
transformation permet la génération de l‟implémentation de service ciblant la plateforme<br />
d‟implémentation JAX-RPC. En effet, JAX-RPC est un élément principal définissant des APIs et<br />
des librairies du Pack JWSDP (SUN, 2004) de la plateforme J2EE. JAX-RPC est dédié<br />
principalement à l‟implémentation des services web.<br />
PIM (VSoaML)<br />
et<br />
Transformation<br />
modèle vers<br />
modèle<br />
MVWSDL(PSM)<br />
J2EE(PSM)<br />
Transformation<br />
modèle vers code<br />
Code (document<br />
MVWSDL)<br />
Code (Code Java)<br />
Figure 99–Processus de génération des implémentations des services à partir des PIMs (VSoaML)<br />
Dans l‟objectif de la génération automatique de l‟implémentation du service multivues ciblant<br />
JAX-RPC comme plateforme d‟implémentation, nous devons, en premier lieu, définir le<br />
métamodèle JAX-RPC. En deuxième lieu, nous devons définir les correspondances entre les<br />
élements du métamodèle source à savoir le métamodèle du service multivues et les éléments du<br />
métamodèle cible à savoir le métamodèle de JAX-RPC. En troisième lieu, nous avons défini les<br />
règles de transformations permettant d‟implémenter les correspondances entre les éléments des
158 VSoaMLTool : Outil de génération de code automatique<br />
deux métamodèles. En dernier lieu, nous avons défini des helpers ATL pour la génération du<br />
code constituant le code Java constituant l‟implémentation du service multivues. Les sections<br />
suivantes ont pour objectif la description des étapes de transformation définies ci dessus.<br />
IV.7.1. Le métamodèle JAX-RPC<br />
Le processus de transformation MDA nécessite un métamodèle source et un métamodèle cible<br />
qui doivent être conformes au MOF pour pouvoir effectuer la transformation des modèles. Dans<br />
notre approche, le métamodèle source choisi est celui de VSoaML qui est conforme au MOF. Le<br />
métamodèle cible est le métamodèle JAX-RPC qui est conforme aussi au MOF.<br />
La figure 100 présente un métamodele de JAX-RPC comme une plateforme d‟implémentation.<br />
Figure 100–Métamodèle JAX-RPC<br />
Les éléments principaux du métamodèle JAX-RPC sont :<br />
JaxRpcElement – cet élément du métamodèle est une généralisation des autres<br />
éléments tels que JaxRpcPackageElement, JavaMember et JavaParameter.<br />
JaxRpcPackageElement – cet élément du métamodèle est une généralisation<br />
de JaxrpcPackage et jaxrpcClassifier.<br />
JaxrpcPackage –Cet élément du métamodèle est un conteneur des classes<br />
(jaxrpcClass) et des interfaces java (Interface). Il permet de définir les<br />
packages qui peuvent contenir des éléments JaxrpcElement.<br />
jaxrpcClassifier- Cet élément du métamodèle est la base des éléments<br />
JavaPrimitiveType, JavaClass et Interface.
159 VSoaMLTool : Outil de génération de code automatique<br />
JavaPrimitiveType - Cet élément du métamodèle définit les types primitives<br />
qui sont utilises pour l‟élaboration des modèles. Il peut être Byte, Short,<br />
Boolean, String, integer, etc<br />
jaxrpcClass –cet élément du métamodèle est une spécialisation de<br />
JavaClassifier qui posséde JavaField et JavaMethod comme membres.<br />
Chaque jaxrpcClass implémente une ou plusieurs interfaces (Interface).<br />
Interface –cet élément du métamodèle est une spécialisation de JavaClassifier<br />
qui possède les prototypes d‟un ensemble de méthodes java (JavaMethod).<br />
JavaMember – cet élément du métamodèle définit les membres de chaque<br />
classe (jaxrpcClass) et notamment ses champs et ses méthodes. Il étend<br />
l‟élément JaxrpcElement et il est associé à l‟élément jaxrpcClass pour<br />
spécifier la classe à laquelle appartient javaMember et pour spécifier son type.<br />
JavaMethod – Cet élément du métamodèle permet la définition des méthodes.<br />
Il étend l‟élément ClassMember. Il est associé à JavaParameter pour la<br />
définition des paramètres de chaque méthode.<br />
javaParameter – cet élément du métamodèle permet la définition des<br />
paramètres d‟une méthode donnée. Cet élément étend l‟élément JaxrpcElement.<br />
JavaParameter est associé à JavarpcClass et JavaMethod pour spécifier le type<br />
d‟un paramètre d‟une méthode donnée et définir la méthode à laquelle le<br />
paramètre appartient.<br />
javaField – Cet élément du métamodèle étend ClassMember. Il permet la<br />
définition des champs d‟une classe donnée.<br />
IV.7.2. Spécification des correspondances entre le métamodèle de<br />
VSoaML et le métamodèle JAX-RPC<br />
La transformation de modèles nécessite la détermination des équivalences entre le métamodèle<br />
source et le métamodèle cible. Le tableau 11 illustre les correspondances entre le métamodèle du<br />
service multivues aux éléments du métmodéle JAX-RPC. Cette correspondance (mapping) est<br />
réalisée grâce à un ensemble des règles de transformation qui spécifient les éléments du<br />
métamodèle source qui sont équivalents aux éléments du métamodèle cible. Dans cette table, la<br />
premiere colonne contient les éléments du métamodèle source. La deuxième colonne présente<br />
leurs équivalents du métamodèle JAX-RPC. La troisième colonne contient les règles de
160 VSoaMLTool : Outil de génération de code automatique<br />
transformations associées. Ces règles permettent l‟implémentation des transformations des<br />
éléments du métamodèle cible vers le métamodèle cible.<br />
Les éléments du<br />
métamodèle VSoaML<br />
Les éléments du métamodèle La régle de transformation<br />
JAX-RPC<br />
ServiceDomain JaxRpcPackage Partition2Package<br />
MVService JaxrpcClass MVService 2jaxrpcClass<br />
BaseServiceInterface Interface binterface2Interface<br />
ViewServiceInterface Interface Viewinterface2interface<br />
Parameter JavaParameter Param2part<br />
ServiceOperation Method Operation2Method<br />
dataType Types Data2Primitive<br />
Tableau 11–Spécification des correspondances VSoaML/JAX-RPC<br />
IV.7.3.<br />
Les règles de transformation<br />
La spécification des correspondances permet la détermination des équivalences entre les éléments<br />
du métamodèle source et cible. La deuxième étape dans le processus de transformation consiste<br />
en la définition des transformations en se basant sur les règles de transformation en utilisant le<br />
langage ATL pour pouvoir réaliser les correspondances (mapping) entre le métamodèle de<br />
VSoaML et le métamodèle JAX-RPC.<br />
Comme illustré dans le tableau 11, nous avons défini plusieurs règles pour la transformation des<br />
modèles. Le but de cette section est de présenter les principales règles de transformation définies.<br />
La règle Domain2Package, comme illustre la figure 101, permet la création des instances<br />
Package comme une instance du métamodèle JAX-RPC à partir de l‟élément Namespace du<br />
métamodèle du service multivues. En conséquence, les caractéristiques de chaque élément cible
161 VSoaMLTool : Outil de génération de code automatique<br />
sont affectés avec les caractéristiques de l‟élément ServiceDomain. Ainsi, le nom du package est<br />
affecté avec la valeur e.name (le nom de namespace).<br />
rule Domain2Package<br />
{<br />
from d: VSoaML!ServiceDomain<br />
to p: jaxrpc!JaxrpcPackage(<br />
name
162 VSoaMLTool : Outil de génération de code automatique<br />
rule Operation2Method {<br />
from e : MVService!Operation<br />
to out : jaxrpc!JavaMethod (<br />
name first().type,<br />
parameters select(x|x.kind'OUT')<br />
->asSequence()->collect(p|thisModule.MyP2F(p)) )<br />
}<br />
Figure 103–Règle de transformation Operation2Method<br />
La règle viewinterface2interface et la règle baseinterface2interface permettent la création des<br />
instances interface en affectant les caractéristiques de baseinterface et viewinterface. La figure<br />
104 illustre la règle viewinterafce2interface.<br />
rule viewinterface2interface {<br />
from d: MVService!viewInterface<br />
to out:jaxrpc!Interface (<br />
name
163 VSoaMLTool : Outil de génération de code automatique<br />
query jaxrpcquery = jaxrpc!JavaClass.allInstances()-><br />
collect(x | x.toString().writeTo('C:/Codesource/' + x.package.name.replaceAll('.', '/') + '/' + x.name + '.java'));<br />
uses jaxrpc2code;<br />
Figure 105–Requête de génération de code Java<br />
La figure 105 contient la requête utilisée pour déclencher la transformation modèle-code.<br />
L‟opération allInstances() retourne une collection constituée de toutes les instances de l‟élément<br />
jaxrpc!JavaClass présentes dans le modèle Java. Ensuite, une opération sur les collections appelé<br />
collect() nous permet de récupérer chaque élément de cette collection (représenté par x) et<br />
d‟appeler l‟opération toString() sur chacun d‟eux. Cette opération est un helper en ATL défini<br />
dans la bibliothèque jaxrpc2code Après l‟exécution de cet helper, la chaîne de caractères est<br />
écrite dans un fichier « *.java » par le biais de l‟opération writeTo(). L‟helper toString() défini<br />
dans le contexte de jaxrpc!JaxrpcClass et de jaxrpc!Interface enchaîne aussi d‟autres appels à<br />
d‟autres helpers définis dans le contexte de JavaField, JavaParameter, et ainsi de suite.
164 VSoaMLTool : Outil de génération de code automatique<br />
helper context jaxrpc!JaxrpcPackage def: toString() : String =<br />
self.contents ->iterate(i; acc : String = '' |<br />
acc + i.name +'.java\n' );<br />
helper context jaxrpc!Interface def : getmethods() : Set(<br />
jaxrpc1!JavaMethod)=<br />
self.javamethod->asSet()<br />
;<br />
helper context jaxrpc!JaxrpcClass def: toString() :<br />
String =<br />
'package ' + self.packagerpc.name + ';\n\n'+<br />
'\npublic class ' + self.name + ' implements '+<br />
self.interfaces ->iterate ( i ; acc: String ='' | acc + i.name + ',')<br />
+'{\n'+<br />
self.interfaces->collect ( e| e.javamember) -> iterate ( i; acc: Sequence<br />
(jaxrpc1!JavaMethod)= Sequence{}| acc ->union( i))<br />
->iterate(i; acc : String = '' |<br />
acc + i.toString()+ ' {\n\t //[Implementation Code to beCompleted]\n}' )<br />
+ '\n}';<br />
helper context jaxrpc!Interface def: toString() : String=<br />
'package ' + self.packagerpc.name + ';\n\n'+<br />
'\nimport java.rmi.Remote;'+<br />
'\nimport java.rmi.RemoteException;\n'+<br />
'\npublic interface ' + self.name + ' extends Remote {\n' +<br />
self.javamember->iterate(i; acc : String = '' |<br />
acc + i.toString()+'throws RemoteException;'<br />
)+ '\n}';<br />
helper context jaxrpc!JavaPrimitiveType def: toString() : String =<br />
if self.name = 'Integer' then 'int '<br />
else if self.name = 'Boolean' then 'boolean '<br />
else if self.name = 'String' then 'java.lang.String '<br />
else if self.name = 'Long' then 'long '<br />
else 'void '<br />
endif endif endif endif;<br />
helper context jaxrpc!JavaField def: toString() : String =<br />
self.type.name + ' ' + self.name + ';\n';<br />
helper context jaxrpc!JavaMethod def: toString() : String =<br />
'\npublic '+ self.istypeof.name + ' ' + self.name + '(' +<br />
self.parameters->iterate(i; acc : String = '' |<br />
acc +<br />
if acc = '' then ''<br />
else ', '<br />
endif + i.toString() ) +')';<br />
helper context jaxrpc!JavaParameter def: toString() : String =<br />
self.istypeof.name + ' ' + self.name;<br />
Figure 106–Code ATL pour la génération de code java<br />
La figure 107 illustre le code généré de la classe implémentant le service multivues Course avec
165 VSoaMLTool : Outil de génération de code automatique<br />
import java.rmi.Remote;<br />
import java.rmi.RemoteException;<br />
public interface Course_Teacher extends Remote {<br />
public Integer addExerciseSolution(Integer ExerciseId, String<br />
ExerciseSolution)throws RemoteException;<br />
public Integer addExercice(Integer exerciseID, String Exercise)throws<br />
RemoteException;<br />
}<br />
package DLS;<br />
import java.rmi.Remote;<br />
import java.rmi.RemoteException;<br />
public interface Course_Student extends Remote {<br />
public String postMessageForum(String Course, String message)throws<br />
RemoteException;<br />
public Integer ProposeExerciseSolution(Integer ExerciseId, String<br />
Solution)throws RemoteException;<br />
}<br />
package DLS;<br />
import java.rmi.Remote;<br />
import java.rmi.RemoteException;<br />
public interface Course_base extends Remote {<br />
public String consultCourseList(String level)throws RemoteException;<br />
public String consultSynopsisCourse(String Course)throws RemoteException;<br />
}<br />
package DLS;<br />
public class Course implements Course_Teacher,Course_Student,Course_base,{<br />
public Integer addExerciseSolution(Integer ExerciseId, String<br />
ExerciseSolution) {<br />
//[Implementation Code to beCompleted]<br />
}<br />
public Integer addExercice(Integer exerciseID, String Exercise) {<br />
//[Implementation Code to beCompleted]<br />
}<br />
public String postMessageForum(String Course, String message) {<br />
//[Implementation Code to beCompleted]<br />
}<br />
public Integer ProposeExerciseSolution(Integer ExerciseId, String Solution)<br />
{<br />
//[Implementation Code to beCompleted]<br />
}<br />
public String consultCourseList(String level) {<br />
//[Implementation Code to beCompleted]<br />
}<br />
public String consultSynopsisCourse(String Course) {<br />
//[Implementation Code to beCompleted]<br />
}<br />
}<br />
Figure 107–Code java généré à partir du PIM(VSoaML)<br />
une interface de service multivues se composant d‟une interface de service de base et de deux<br />
interfaces de service vues associées respectivement à l‟acteur Etudiant et l‟acteur Enseignant.
166 VSoaMLTool : Outil de génération de code automatique<br />
L‟interface de service de base se compose des opérations : String consultSynopsisCourse (Course<br />
: String) et String consultCourseList (level :String). L‟interface associée à l‟acteur Enseignant<br />
contient les opérations suivantes : String addExercice (exerciseID : integer, Exercise : String) et<br />
String addExerciseSolution (ExerciseId : integer, ExerciseSolution : String). L‟interface associée<br />
à l‟acteur Etudiant contient les opérations : String postMessageForum (Course: String, message :<br />
String) et String ProposeExerciseSolution (ExerciseId : integer, Solution : String).<br />
le code généré correspond à l'interface de service de base Course_base , à l'interface associé à<br />
l'acteur Etudiant (Course_Student), à l'interface associée à l'acteur Enseignant ainsi que classe<br />
(class Course ) qui doit implémenter toutes les interfaces et leurs méthodes.<br />
IV.8. VSoaMLTool : déploiement selon l’architecture SOA<br />
L‟architecture orientée service (SOA) définit principalement trois acteurs et trois opérations :<br />
le fournisseur de service qui possède l‟implémentation de service et la description du service<br />
publie (l‟opération) cette dernière dans l’annuaire des services. L‟annuaire de<br />
service permet par ailleurs à un client de service de trouver les services correspondant à ses<br />
besoins (l‟opération) et de les invoquer en leur transmettant les données métiers<br />
requises (l‟opération ). Une telle architecture ne prend pas en compte le profil de<br />
l‟utilisateur interagissant avec le service. Pour répondre à cette limite, nous avons introduit le<br />
concept de service multivues pour la prise en compte des profils des utilisateurs. Ensuite, nous<br />
avons généré pour chaque service multivues une description suivant le format MVWSDL comme<br />
nous l‟avons expliqué dans les précédentes sections.<br />
Les documents MVWSDL générés, contiennent la description des interfaces de service multivues<br />
ainsi que les informations concernant les acteurs qui vont interagir avec le service multivues. A<br />
partir des documents MVWSDL, nous devons extraire une description standard WSDL<br />
spécifique à chaque acteur interagissant avec le service. Dans cet objectif, nous avons développé<br />
un module logiciel intégré à l‟outil VSoaMLTool (Kenzi et al., 2008d)(El Asri, Kenzi et al.,<br />
2009). Ce module logiciel prend en entrée un document MVWSDL et produit en sortie une<br />
description WSDL standard spécifique à l‟acteur qui va interagir avec le service multivues. Pour<br />
ce faire, le module de déploiement de l‟outil VSoaMLTool se base sur la valeur de l‟attribut actor<br />
intégré aux éléments principaux du WSDL : Types, PortType, Binding et Service. Ce module
VSOAMLTOOL(MODULE DE DEPLOIEM<strong>EN</strong>T)<br />
167 VSoaMLTool : Outil de génération de code automatique<br />
PIM(VSoaML)<br />
Service metadata<br />
VSoaMLTool<br />
(transformer module)<br />
WSDL<br />
Acteur S1,1<br />
WSDL<br />
<br />
S1<br />
MVWSDL<br />
WSDL<br />
Acteur S1,J<br />
<br />
Acteur S1,S1max<br />
<br />
Acteur S1,1 Acteur S1,J<br />
Acteur S1,S1max<br />
WSDL<br />
<br />
S2<br />
MVWSDL<br />
WSDL<br />
Acteur S2,1<br />
<br />
<br />
WSDL<br />
Acteur S2,J<br />
Acteur S2,1 Acteur S2,J<br />
Acteur S2,S2max<br />
Acteur S2,S2max<br />
<br />
SN<br />
MVWSDL<br />
WSDL<br />
<br />
<br />
Acteur SN,1<br />
Acteur SN,1 Acteur SN,J<br />
Acteur<br />
SN,SNmax<br />
WSDL<br />
Légende<br />
WSDL<br />
Acteur SN,J<br />
input<br />
output<br />
publish<br />
Acteur SN,S1max<br />
Figure 108–Architecture de déploiement des services multivues
168 VSoaMLTool : Outil de génération de code automatique<br />
logiciel est développé en utilisant l’API DOM qui fournit un ensemble de classes et d‟interfaces<br />
dédiées spécifiquement à la manipulation des documents XML tels que MVWSDL.<br />
Concrètement, et dans le cadre de notre cas d‟étude, le MVWSDL généré représente toutes les<br />
interfaces du service multivues associées à tous les acteurs interagissant avec le service :<br />
Etudiant, Enseignant, Administrateur. Si un client de service de type Etudiant, Enseignant ou<br />
Administrateur interagit avec le service multivues, il n‟obtient que la description WSDL qui<br />
correspond à ses besoins qui n‟intègre pas les descriptions des interfaces associées aux autres<br />
acteurs. La figue 108 illustre le rôle du module de déploiement de l‟outil de VSoaMLTool.<br />
IV.9. Conclusion<br />
L‟adaptabilité est l‟une des qualités reines pour le développement de tout système informatique.<br />
Dans cette optique, nous avons proposé une approche d‟ingénierie dirigée par les modèles des<br />
systèmes orientés services adaptables aux différents types d‟utilisateurs.<br />
Ainsi, nous avons proposé dans le deuxieme chapitre, un profil UML pour la modélisation des<br />
SOS adaptables. Dans le troisiéme chapitre, nous avons proposé un processus pour le<br />
développement des SOS adaptables. Dans ce chapitre, nous avons présenté l‟outil VSoaMLTool<br />
en montrant ses fonctionnalités tout en se focalisant sur les transformations de modèles et de la<br />
génération du code. Ainsi, nous avons défini, en premier lieu, un PIM en se basant sur le profil<br />
VSoaML qui vise la modélisation d‟un système orienté service tout en identifiant les besoins et<br />
les spécificités des différents acteurs interagissant avec les services. Ensuite, nous avons défini<br />
des transformations ciblant différentes plateformes technologiques (e.g., J2EE, dotNet) et la<br />
plateforme services web et notamment notre extension du standard WSDL. Ces transformations<br />
permettent la génération du code à partir des PIMs. En particulier, la description de chaque<br />
service ainsi que leurs implémentation en java et C#. Chaque transformation est effectuée en<br />
deux étapes : une étape de spécification de correspondances et une étape de définition de<br />
transformation en se basant sur un langage de transformation de modèle à savoir le langage ATL.<br />
L‟approche que nous avons proposée durant les trois derniers chapitres, présente un ensemble<br />
d‟avantages en répondant à la problématique de l‟ingénierie des SOSs adaptable et ouvre un<br />
ensemble de perspectives décrite dans le chapitre suivant « conclusion générale ».
169 Conclusion générale et perspectives<br />
Conclusion générale et perspectives<br />
Dans le cadre de cette thèse, nous avons proposé une approche d‟ingénierie des systèmes orientés<br />
services adaptables aux différents types d‟utilisateurs. Cette approche se base principalement sur :<br />
(i) un profil UML (VSoaML) pour la modélisation des systèmes orientés services adaptables aux<br />
différents types d‟utilisateurs (ii) Un processus de développement des systèmes orientés services<br />
adaptables dans le cadre de l‟approche MDA et (iii) un outil logiciel permettant la génération du<br />
code à partir des modèles métiers de haut niveau exprimés avec le profil VSoaML. Cet outil<br />
logiciel se base sur un ensemble de règles de transformations implémentées en utilisant le<br />
langage ATL.<br />
L‟objectif principal de VSoaML est la spécification des systèmes orientés services adaptables aux<br />
différents types d‟utilisateurs indépendamment des plates-formes d‟implémentation (J2EE,<br />
dotNet, etc) et des standards de la technologie des services web (SOAP, WSDL, UDDI,<br />
BPEL4WS, etc.). VSoaML est centré utilisateur et se base fondamentalement sur le concept de<br />
service multivues comme une entité de modélisation de première classe capable de représenter les<br />
besoins et les spécificités des utilisateurs suivant leurs profils. Le service multivues est une<br />
nouvelle entité de modélisation qui fournit/requiert des interfaces qui se caractérisent par leur<br />
flexibilité et adaptabilité aux différents acteurs interagissant avec le service. Ainsi, le service<br />
multivues permet la capture des exigences des utilisateurs et de leurs spécificités tout en séparant<br />
leurs préoccupations fonctionnelles suivant le profil de l‟utilisateur interagissant avec le service.<br />
Parallèlement à la proposition du Profil VSoaML, nous avons défini un processus de<br />
développement dans le cadre de l‟approche MDA pour identifier les services multivues, les<br />
spécifier et les développer. Ce processus définit les phases, les activités et les artefacts permettant<br />
de transformer les exigences métier en termes d‟un ensemble de service flexibles et adaptables.<br />
La spécificité d‟un tel processus est l‟identification des services en partant des modèles des cas<br />
d‟utilisation métiers. Ce processus de développement qui s‟inscrit dans le cadre de l‟approche<br />
MDA, permet l‟élaboration des modèles et de gérer la transition d‟un modèle à un autre via des<br />
transformations de modèles. Ainsi, après l‟élaboration des modèles métiers à base de service<br />
multivues, nous avons défini deux transformations pour la génération de code :
170 Conclusion générale et perspectives<br />
La première transformation permet la génération de la description de chaque service multivues<br />
composant le PIM d‟un système donné. En effet, nous avons défini une légère extension du<br />
standard WSDL pour la description de service multivues appelé MVWDL. Cette extension de<br />
WSDL permet la représentation en XML aussi bien des interfaces des services que les<br />
informations concernant les acteurs interagissant avec le service. Pour permettre l‟automatisation<br />
de la génération du code MVWSDL, nous avons défini un ensemble de règles de transformation<br />
en utilisant le langage ATL comme langage de transformation de modèles.<br />
La deuxiéme transformation concerne la génération de code constituant l‟implémentation de<br />
chaque service multivues selon la plateforme cible J2EE.<br />
Chaque transformation de modèles a été effectuée en deux étapes : la première concerne la<br />
spécification de correspondances. La deuxième étape a pour objectif la définition de<br />
transformations en se basant sur le langage de transformation de modèle ATL.<br />
Une fois générées la description de chaque service multivues et son implémentation, nous avons<br />
illustré comment faire l‟adaptation des services en prenant en compte les acteurs interagissant<br />
avec le service suivant l‟architecture SOA.<br />
Travaux en cours et futurs :<br />
L‟approche que nous avons proposée pour l‟ingénierie des systèmes orientés services adaptables,<br />
demande à être développée en plusieurs points. En premier lieu, nous visons d‟inclure d‟autres<br />
caractéristiques de l‟utilisateur surtout dans le cadre de l‟Informatique Sensible au Contexte. En<br />
deuxième lieu, nous projetons de générer la totalité du code pour concrétiser vraiment la vision<br />
MDA. En toisiéme lieu, nous projetons à moyen terme d‟associer à notre approche une base<br />
mathématique solide. Enfin, nous visons à transposer l‟approche pour l‟ingénierie des<br />
applications «Cloud computing»<br />
L’adaptation des services en prenant en considération d‟autres paramètres du contexte : Dans le<br />
cadre de cette thèse, nous nous sommes concentrés tout particulièrement sur l‟adaptation des<br />
services au rôle de l‟utilisateur. Cependant, il est possible d‟adapter les services en tenant compte<br />
d‟autres caractéristiques du contexte en continuité avec nos travaux de recherche dans le domaine<br />
(Kenzi et al., 2007). En effet, l‟informatique sensible au contexte exige l‟adaptation des systèmes
171 Conclusion générale et perspectives<br />
logiciels selon plusieurs dimensions. Globalement, le contexte comprend les caractéristiques liées<br />
à l‟utilisateur, à sa localisation, à son dispositif d‟accès ou même au contexte des différents<br />
services composant le système (Maamar et al., 2006b).<br />
La génération totale du code : Nous avons adopté une approche de génération de «grosse<br />
granularité» qui vise la génération du squelette des différents services suivant une plateforme<br />
technologique. Comme perspective de cette thèse et l‟un de nos objectifs à court terme est de<br />
permettre la génération de code à granularité fine c'est-à-dire la génération du code des méthodes<br />
de chaque service via l‟utilisation des « actions semantics ».<br />
La formalisation de l’adaptation des services : Dans le domaine du SOC, plusieurs approches<br />
ont été proposées visant la définition d‟une base mathématique solide pour traiter les différents<br />
aspects d‟un SOS (statiques et dynamiques). Dans cette optique, plusieurs techniques ont été<br />
utilisées (i) la théorie des graphes (Yu et al., 2008) (Baresi et al., 2006) pour la gestion des<br />
aspects dynamiques d‟un SOS ou la définition d‟un système de gestion de services à l‟instar d‟un<br />
système de gestion de base de données dans les cas des données(ii) les réseaux de Petri en vue<br />
de gérer les différentes préoccupations liées aux SOS (iii) les machines à états finis (Tao et al.,<br />
2007) pour la formalisation de l‟adaptation des services. Ainsi, nous envisageons comme<br />
perspective de ce travail, d‟utiliser certaines des techniques précitées (Réseaux de Pétri, théorie<br />
de graphe, les machines à états finis) pour la formalisation de notre approche. Plus<br />
particulièrement, nous comptons utiliser la théorie des graphes comme une technique puissante et<br />
prometteuse pour la formalisation des aspects dynamiques d‟un système orienté service<br />
adaptable.<br />
L’ingénierie des Systémes « Cloud Computing » : l‟approche définie dans le cadre de cette<br />
thése, vise la définition d‟une approche d‟ingénierie des SOSs adaptables dans le cadre du<br />
paradigme SOC. Cependant ce paradigme évolue vers un nouveau paradigme à savoir le Cloud<br />
Computing qui se base sur trois concepts : « Software as Service », « Infrastructure as Service »<br />
et « Platform as Service ». Ainsi, nous visons à transposer notre approche d‟ingénierie des SOSs<br />
pour le développement des systémes « Cloud Computing».
172 Liste des publications<br />
Liste des publications<br />
Cette section regroupe par ordre chronologique inverse, les publications que nous avons produites<br />
pendant cette thèse<br />
1) Adil Kenzi, Bouchra El Asri, Mahmoud Nassar, Abdelaziz Kriouile., «Engineering<br />
Adaptable Service Oriented Systems: A Model Driven approach”, IEEE International<br />
Conference on Service-Oriented Computing and Applications (SOCA'09), pages 9-16,<br />
Taipei, Taiwan, 14-15 December 2009, IEEE Computer Society Press..<br />
2) Adil Kenzi, Bouchra El Asri, Mahmoud Nassar, Abdelaziz Kriouile, "A model driven<br />
framework for multiview service oriented system development," 2009 IEEE/ACS<br />
International Conference on Computer Systems and Applications(AICCSA09), pages 404<br />
– 411, Rabat, Maroc, 10-13 May 2009, IEEE Computer Society Press.<br />
3) Bouchra El Asri, Adil Kenzi, M. Nassar, A. Kriouile. Multiview Components for User-<br />
Aware Web Services, in Joaquim Filipe, José Cordeiro, Editors, Enterprise Information<br />
Systems, Volume 24, pages 196-207, LNBIP, Springer, 2009.<br />
4) Bouchra El Asri, Adil Kenzi, Mahmoud Nassar, Abdelaziz Kriouile., “Vers une<br />
architecture MVSOA pour la mise en œuvre des composants multivue.», Conférence<br />
Francophone sur les Architectures Logicielles (CAL 09), pages 1-16, Nancy, 2009,<br />
Editions Cépaduès, RNTI.<br />
5) Adil Kenzi, Bouchra El Asri, Mahmoud Nassar, Abdelaziz Kriouile, "The Multiview<br />
Service: A New Concept for the Development of Adaptable Service Oriented Systems",<br />
2008 IEEE International Symposium on Service-Oriented System Engineering<br />
(SOSE‟08), Jhongli, Taiwan, 18-19 December 2008, pages 38-43, IEEE Computer<br />
Society Press.<br />
6) Adil Kenzi, B. El Asri, M. Nassar, A. Kriouile, SOA vs MVSOA : Une architecture<br />
orientée services multivues, Colloque Africain sur la Recherche en Informatique et en<br />
Mathématiques Appliquées (CARI‟08), pages 585-592, Rabat, 27-30 Octobre 2008.<br />
7) Adil Kenzi, B. El Asri, M. Nassar, A. Kriouile, Vers une approche orientée modèle pour<br />
l’adaptation des services aux profils des utilisateurs, Proceedings of the 10th Conference<br />
on Software Engineering and Artificial Intelligence–Maghrebian Conference on<br />
Information Technologies (MCSEAI‟08), 6 pages IEEE, Oran, Algérie, 28 - 30 Avril<br />
2008.
173 Liste des publications<br />
8) Adil Kenzi, B. El Asri, M. Nassar, A. Kriouile, Multi-functional service oriented system<br />
development for user-driven adaptability, Proceedings of the 3 rd International<br />
Conference on Information & Communication Technologies: from Theory to<br />
Applications (ICTTA‟08), Pages 1431-1437, Damascus, Syria, April 7 - 11, 2008, IEEE.<br />
9) Adil Kenzi, Bouchra El Asri, Mahmoud Nassar, Abdelaziz Kriouile, “Modeling Multi-<br />
Functional services: A User Driven Approach for dynamic accessibility”, accepté mais<br />
non inscrit à la conférence ICEIS 2008.<br />
10) Adil Kenzi, Bouchra El Asri, Mahmoud Nassar, Abdelaziz Kriouile , “ A model driven<br />
approach for the development of adaptable service oriented systems”, accépté mais non<br />
inscrit à la conférence 10th International Conference on Information Integration and<br />
Web-based Applications & Services (iiWAS2008), 24-26 November 2008, Linz, Austria<br />
11) Adil Kenzi, Bouchra El Asri, Mahmoud Nassar, Abdelaziz Kriouile, “ Des composants<br />
multivues aux services web : une approche dirigée par les modèles”, 2ème Journées<br />
d'informatique et de mathématiques décisionnelles (JIMD'2008), Rabat, 3-5 Juillet, 2008.<br />
12) Adil Kenzi, B. El Asri, M. Nassar, A. Kriouile, Vers des services multivues contextuels,<br />
Actes du 1er Workshop International sur «Informatique Mobile et Applications»<br />
(WMCA‟2007), En parallèle avec NOTERE 2007 (Nouvelles TEchnologies de la<br />
REpartition), pages 129-135, Marrakech, 4-8 Juin 2007.<br />
13) Adil Kenzi, Bouchra El Asri, Mahmoud Nassar, Abdelaziz Kriouile, « Modélisation<br />
orientée service multivues des systèmes », WorkShop sur les Technologies de l'Information<br />
et de la Communication (Wotic‟07), 5-6 Juillet, Rabat.
174 Références<br />
Références<br />
[Abiteboul et al. 1991] Abiteboul S., Bonner A., “Objects and Views”, Proc. of ACM<br />
SIGMOD, 1991, pp. 238-24.<br />
[anwar, 2009] Anwar A, Formalisation par une approche IDM de la composition de modèles<br />
dans le profil VUML. Thèse de doctorat, Université de Toulouse-le-Mirail, décembre 2009.<br />
[Alam et al., 2007a] Alam M., Seifert J.P., Zhang X., “A Model-Driven Framework<br />
for Trusted Computing Based Systems”, EDOC 2007: 75-86<br />
[Alam et al., 2007b] Alam M., Breu R., Hafner M.,: Model-Driven Security<br />
Engineering for Trust Management in SECTET. JSW 2(1): 47-59 (2007)<br />
[Alam et al., 2008] Alam M., Hafner M., Breu R.,: Constraint based role based access<br />
control in the SECTET-frameworkA model-driven approach. Journal of Computer<br />
Security 16(2): 223-260 (2008)<br />
[Amir et al., 2004] Amir R., Zeid A.: A UML profile for service oriented<br />
architectures. OOPSLA Companion 2004: 192-193<br />
[Andrews et al., 2003] Andrews T., Business process execution language for Web<br />
services, Version 1.1, (2003).<br />
[Arsanjani et al., 2005] Arsanjani A., Service-oriented modeling and architecture<br />
(SOMA). http://www128.ibm.com/developerworks/webservices/library/ws-soadesign1<br />
[ATL, 2004] ATL. ATL Development Tools. INRIA, LINA et Université de Nantes,<br />
december 2004. Disponible sur http://www.sciences.univ-nantes.fr/lina/atl/,<br />
[Baina et al., 2004] Baïna, K., Benatallah, B. Casati, F, Toumani, F.. Model-Driven<br />
Web Service Development. Proc. of CAiSE‟04, Riga, Latvia, June 2004.<br />
[Baresi et al., 2006] Baresi, L., Heckel, R., Thone, S., Varro, D.: Style-based modeling<br />
and refinement of service-oriented architectures. Software and System<br />
Modeling(2006) 187-207<br />
[Benatallah et al., 2009] Benatallah, B., Casati, F., Kongdenfha, W., Skogsrud,<br />
H.,Toumani, F., “Conceptual Modeling of Service-Driven Applications”,In Service<br />
Oriented Computing, M.Papazoglou and Dimitrios Georgakopoulos, Eds.,: MIT press,<br />
2009 , pp.29-50.<br />
[Benslimane et al., 2005] Benslimane D., Maamar Z., Ghedira C., A View-based<br />
Approach for Tracking Composite Web Services. ECOWS 2005: 170-181<br />
[Bezivin et al., 2004] Bézivin J., Hammoudi S., Lopes, Jouault F., Applying MDA<br />
approach for web service platform. Proc of the 8th IEEE International Enterprise<br />
Distributed Object Computing conference (EDOC 2004).
175 Références<br />
[Biesiegel et al., 2005] Beisiegel M., Blohm H., Booz D.,et al., Service Component<br />
Architecture. Building Systems using a Service Oriented Architecture.<br />
http://download.boulder.ibm.com/ibmdl/pub/software/dw/specs/wssca/SCA_White_Paper1_09.pdf,<br />
November 2005<br />
[Blanc, 2005] Blanc X., MDA en action, Edition Eyrolles, 2005.<br />
[Bordbar et al., 2004] BORDBAR B., STAIKOPOULOS A., Automated Generation<br />
of Metamodels for Web Service Languages. Second European Workshop on Model<br />
Driven Architecture (MDA) with an emphasis on Methodologies and Transformations<br />
(EWMDA), September 2004.<br />
[Bouguettaya et al.,, 2009] Bouguettaya, A., Yang, X.,“Access to Mobile Services”,<br />
Springer, 2009.<br />
[Chang et al., 2006] Chang M., He J., Tsai, W. T., Xiao B., Chen Y., : UCSOA: User-<br />
Centric Service-Oriented Architecture. IEEE International Conference on e-Business<br />
Engineering (ICEBE 2006), 248-255<br />
[Chang et al., 2007a] Chang S.H, Kim S. D. , A Comprehensive Approach to<br />
Service Adaptation, IEEE International Conference on Services Oriented Computing<br />
and Applications (SOCA 2007), 2007<br />
[Chang et al., 2007b] Chang S.H, Kim S. D., A Service-Oriented Analysis and<br />
Design Approach to Developing Adaptable Services, pp. 204-211, IEEE International<br />
Conference on Services Computing (SCC 2007), 2007<br />
[Chebbi et al., 2006] Chebbi I., Dustdar S., Tata S., The view-based approach to<br />
dynamic inter-organizational workflow cooperation. Data Knowl. Eng. 56(2): 139-173<br />
(2006)<br />
[Chinnici et al., 2001] Chinnici R., Gudgin M.,Moreau J.-J., Schlimmer<br />
J.,Weerrawarana S., Web Services Description Language (WSDL) version 2.0 Part 1 :<br />
Core language, W3C<br />
[Clement et al., 2004] Clement L., Hately A., Riegen C., Rogers T., UDDI version<br />
3.0.2 spécifications, Technical Commitee Draft, Octobre, 2004,<br />
http://uddi.org/pubs/uddi_v3.htm<br />
[Coulette et al., 1996]Coulette B., Kriouile A., Marcaillou S., "L‟approche par points<br />
de vue dans le développement orienté objet des systèmes complexes", Revue l‟Objet,<br />
vol. 2, n°4, février 1996, pp. 13-20.<br />
[D‟Ambrogio et al., 2006] D'Ambrogio, A., A Model-driven WSDL Extension for<br />
Describing the QoS of Web Services. IEEE International Conference on Web Services<br />
(ICWS 2006), 18-22 September 2006 pages:789-796<br />
[Dey et al.,, 2000] Dey, A.K., Abowd, G.D. Towards a Better Understanding of<br />
Context and Context-Awareness. In: Procs of the Conference on Human Factors in<br />
Computing Systems (CHI‟2000), Workshop on the What, Who, Where, When, and<br />
How of Context-Awareness, April 2000, The Hague, The Netherlands.
176 Références<br />
[Eclipse, 2010] ECLIPSE TOOLS PROJECT. Eclipse Modeling Framework (EMF)<br />
version 2.0, June 2010. Disponible sur http://www.eclipse.org/emf,<br />
[El Asri et al., 2005a] El Asri B., "Vers des composants multivues distribués", Thèse<br />
nationale à l‟<strong>EN</strong>SIAS de Rabat, octobre 2005.<br />
[El Asri et al., 2005c] El Asri B., Nassar M., Coulette B., Kriouile A., "MultiViews<br />
component for information development", Proceedings of the 7th International<br />
Conference on Enterprise Information Systems (ICEIS‟2005), Miami, USA, May 24-<br />
28, 2005b. pp. 217-225.<br />
[El Asri et al., 2009a] El Asri B., Kenzi A., Nassar M., Kriouile A., Multiview<br />
Components for User-Aware Web Services, Proceedings of the 11th International<br />
Conference on Enterprise Information Systems (ICEIS‟09), 6 - 10 May 2009, Milan,<br />
Italy. (Accepted as full paper and published as a book chapter in "Enterprise<br />
Information Systems vol.24", J. Filipe, J. Cordeiro, and J. Cardoso Eds., Springer-<br />
Verlag.<br />
[El Asri et al.,2009b] El Asri B., Kenzi A., Nassar M., Kriouile A., “Vers une<br />
architecture MVSOA pour la mise en oeuvre des composants multivue.», Conférence<br />
Francophone sur les Architectures Logicielles (CAL 09), Nancy, 2009.<br />
[Ermagan et al., 2007] Ermagan V., Krüger I.H., : A UML2 Profile for Service<br />
Modeling. MoDELS 2007: 360-374<br />
[Erradi et al., 2006] Erradi A., Anand S., Kulkarni, N., SOAF: An Architectural<br />
Framework for Service Definition and Realization. IEEE International Conference on<br />
Services Computing 2006: 151-158<br />
[Farrel et al., 2007] Farrell J., Lausen, H. "Semantic Annotations for WSDL and<br />
XML Schema", W3C Candidate Recommendation 26 January 2007;<br />
http://www.w3.org/TR/sawsdl/.<br />
[Fink et al., 2003] Fink T, Manuel Koch, Cristian Oancea: Specification and<br />
Enforcement of Access Control in Heterogeneous Distributed Applications. ICWS-<br />
Europe 2003: 88-100.<br />
[Fuchs, 2004] Fuchs M, Adapting Web Services in a Heterogeneous Environment,<br />
Proc of the IEEE International Conference on Web Services (ICWS'04), 2004: 656-<br />
664<br />
[Gerber et al., 2002] Gerber A., Lawley M., Raymond, K., Steel, J., and Wood, A.,<br />
Transformation: The Missing Link of MDA. First International Conference on Graph<br />
Transformation (ICGT2002), October 2002.<br />
[Ghedira et al., 2005] Ghedira, C., Mezni, H.: Through Personalized Web Service<br />
Composition Specification: From BPEL to C-BPEL. Electr. Notes Theor. Comput.<br />
Sci.(2006) 117-132
177 Références<br />
[Gronmo et al., 2004a] GRONMO R., SKOGAN D., SOLHEIM I., OLDEVIK J.,<br />
Model-Driven Web Services Development. 2004 IEEE International Conference on e-<br />
Technology, e-Commerce and e-Service (EEE‟04), pages 42–45, March 2004.<br />
[Gronmo et al., 2004b] Gronmo R., Stogan D., Solheim I., Oldevik J., Model Driven<br />
web services Development. Int Journal Web services Res 1(4) : 1-13(2004).<br />
[Gustavo et al., 2003] Gustavo A., Fabio C., Harumi K., Vijay M., “Web services:<br />
concepts, architectures and applications”, Springer-Verlag, septembre 2003<br />
[Hafner et al.,2009] Hafner, M., Breu, R., “Security Engineering for Service-Oriented<br />
Architectures”, Springer, 2009.<br />
[Hair et al., 1998] Hair A., El Asri B., Kriouile A, Coulette B., "Outil support de la<br />
méthode VBOOM, Fonctionnalités Fusion et Génération du code", actes du 4ème<br />
Colloque Africain sur la Recherche en Informatique (CARI‟98), Dakar (Sénégal), 12-<br />
15 octobre 1998, pp. 497-508.<br />
[Huhns et al., 2005] Huhns M., Singh P., Service-Oriented Computing: Key Concepts<br />
and Principles. Journal of IEEE Internet Computing, 2005.<br />
[IBM, 2002] IBM. IBM Video Central for e-business tutorial, Version 7.2, 2002.<br />
http://www-106.ibm.com/developerworks/webservices/demos/videocentral/<br />
[Ibrahim et al., 2006] Ibrahim D., Misic, V., B., Service Views: a Coherent View<br />
Model of the SOA in the Enterprise. IEEE International Conference on Services<br />
Computing 2006: 230-237<br />
[Johnston et al.,, 2006] Johnston S. K., Brown A., “ A Model-Driven Development<br />
Approach to Creating Service-Oriented Solutions”, ICSOC 2006: 624-636<br />
[Kadima et al., 2005] Kadima H., MDA : Conception orientée objet guidée par les modèles,<br />
Dunod, 2005<br />
[Keidl et al.,, 2004] Keidl M., Kemper A., : Towards context-aware adaptable web<br />
services. WWW (Alternate Track Papers & Posters) 2004: 55-65<br />
[Kenzi et al., 2007] Kenzi A., El Asri B.,Nassar M., Kriouile A., Vers des services<br />
multivues contextuels, Actes du 1er Workshop International sur « Informatique<br />
Mobile et Applications» (WMCA‟2007), En parallèle avec NOTERE 2007 (Nouvelles<br />
TEchnologies de la REpartition), Marrakech, 4-8 Juin 2007.<br />
[Kenzi et al., 2008a] Kenzi A., El Asri B.,Nassar M., Kriouile A Vers une approche<br />
orientée modèle pour l’adaptation des services aux profils des utilisateurs,<br />
Proceedings of the 10th Conference on Software Engineering and Artificial<br />
Intelligence – Maghrebian Conference on Information Technologies (MCSEAI‟08),<br />
Oran, Algérie, 28 - 30 Avril 2008.<br />
[Kenzi et al., 2008b] Kenzi A., El Asri B.,Nassar M., Kriouile A "The Multiview<br />
Service: A New Concept for the Development of Adaptable Service Oriented Systems",<br />
2008 IEEE International Symposium on Service-Oriented System Engineering, IEEE<br />
Computer Society.<br />
[Kenzi et al., 2008c] Kenzi A., El Asri B.,Nassar M., Kriouile A Multi-functional<br />
service oriented system development for user-driven adaptability, Proceedings of the 3<br />
rd International Conference on Information & Communication Technologies: from
178 Références<br />
Theory to Applications (ICTTA‟08), April 7 - 11, 2008, Damascus, Syria, IEEE.<br />
[Kenzi et al., 2008d] Kenzi A., El Asri B.,Nassar M., Kriouile A., : SOA vs MVSOA :<br />
Une architecture orientée services multivues, Colloque Africain sur la Recherche en<br />
Informatique et en Mathématiques Appliquées (CARI‟08), Rabat, 27-30 Octobre<br />
2008.<br />
[Kenzi et al., 2009a] Kenzi A., El Asri B.,Nassar M., Kriouile A, "A model driven<br />
framework for multiview service oriented system development," 2009 IEEE/ACS<br />
International Conference on Computer Systems and Applications, IEEE Computer<br />
Society.<br />
[Kenzi et al., 2009b] Kenzi A., El Asri B.,Nassar M., Kriouile A.: Engineering<br />
Adaptable Service Oriented Systems: A Model Driven approach, IEEE International<br />
Conference on Service-Oriented Computing and Applications (SOCA'09), Taipei,<br />
Taiwan, IEEE Computer Society.<br />
[Kiczales et al., 2001] Kiczales, G., Hilsdale, E., Hugunin, J., Kersten, M., Palm, J.,<br />
Griswold, W.G.: An Overview of AspectJ. In ECOOP(2001) 327-353<br />
[Kim et al., 2006] Kim Y., Yun Y.: An Approach to Modeling Service-Oriented<br />
Development Process. IEEE SCC 2006: 273-276<br />
[Kim et al., 2007] Kim Y., Doh K.G,: The Service Modeling Process Based on Use<br />
Case Refactoring. BIS 2007: 108-120<br />
[Kiss, 2007] Kiss, C. Composite Capability/Preference Profiles (CC/PP): Structure<br />
and Vocabularies 2.0. W3C Working Draft [en ligne], 2007. Disponible sur :<br />
.<br />
[Klyne et al.,, 2004] Klyne, G., Carroll, J.J. Resource Description Framework (RDF):<br />
Concepts and Abstract Syntax. W3C Recommendation [en ligne], 2004. Disponible<br />
sur :.<br />
[Koning et al., 2009] Koning, M., Sun, C., Sinnema, M., Avgeriou, P.: VxBPEL:<br />
Supporting variability for Web services in BPEL. Information Software<br />
Technology(2009) 258-269<br />
[Kleppe et al., 2005] Kleppe, A., Warmer, J., Bast, W. MDA Explained: The Model<br />
Driven Architecture: Practice and Promise. Addison-Wesley, 2005.<br />
[Kouadri Mostefaoui et al., 2004] Kouadri Mostefaoui S., Hannes Gassert and Béat<br />
Hirsbrunner, “Context Meets Web Services: Enhancing WSDL with Context-Aware<br />
Features.” 1st International Workshop on Best Practices and Methodologies in<br />
Service-Oriented Architectures: Paving the Way to Web-services Success, held in<br />
conjunction with the OOPSLA'2004, Vancouver, British Columbia, Canada, 24 - 28<br />
october 2004. pp. 1 - 14.<br />
[Kriouile, 1995] Kriouile A., "VBOOM, une méthode orientée objet d‟analyse et de<br />
conception par points de vue", thèse d‟Etat de l‟université Mohammed V de Rabat,<br />
1995.<br />
[Lopes et al., 2003] Lopes D., Hammoudi S., : Web Services in the Context of MDA.<br />
ICWS 2003: 424-427
179 Références<br />
[Lopes et al., 2005] Lopes D., Hammoudi S., Bézivin J., Jouault F.,: Generating<br />
Transformation Definition from Mapping Specification: Application to Web Service<br />
Platform. CAiSE 2005: 309-325<br />
[Lopes, 2005] Lopes D., "Etude et applications de l‟approche MDA pour des platesfromes<br />
de Service Web", Thèse de Doctorat en Informatique, LINA, Université de<br />
Nantes, juillet 2005.<br />
[López Sanz et al., 2007] López Sanz M., Acuña C.J, Cuesta C.E., Marcos E.:<br />
UML Profile for the Platform Independent Modelling of Service-Oriented<br />
Architectures. ECSA 2007: 304-307<br />
[López Sanz et al., 2008] López Sanz M., Acuña C.J, Cuesta C.E., Marcos E.:<br />
Defining Service-Oriented Software Architecture Models for a MDA-based<br />
Development Process at the PIM level. WICSA 2008: 309-312<br />
[Lopez-Velasco et al., 2005] Lopez-Velasco C., AWSDL: une extension de WSDL<br />
pour des services Web adaptés. INFORSID 2005: 133-148<br />
[Maamar et al., 2003] Maamar Z., Benatallah B., Mansoor W.: Service Chart<br />
Diagrams - Description & Application. WWW (Alternate Paper Tracks),2003<br />
[Maamar et al., 2005] Maamar, Z., Benslimane, D., Ghedira, C., Mrissa, M.: Views in<br />
Composite Web Services. IEEE Internet Computing, (2005) , 79-84<br />
[Maamar et al., 2006a] Maamar Z., Baïna K., Benslimane D., Narendra N.C.,<br />
Chelbabi M.,: Towards a Contextual Model-Driven Development Approach for Web<br />
Services. ICEIS (3) 2006: 78-85<br />
[Maamar et al., 2006b] Maamar Z., Benslimane D, Narendra N., What can context do<br />
for web services Commun. ACM 49(12): 98-103 (2006)<br />
[Maamar et al., 2008] Maamar Z., Benslimane D., A Context-based and Policydriven<br />
Method to design and develop Composite Web services, International Journal<br />
of E-Business Research (IJEBR) 4(4), 2008.<br />
[ Marschal et al., 2003] MARSCHALL F., BRAUN P., Model Transformations for<br />
the MDA with BOTL. Proceedings of the Workshop on Model Driven Architecture:<br />
Foundations and Applications, June 2003<br />
[Mellor et al., 2004]Mellor S., Scott K., Uhl A., Weise D., MDA Distilled. Addison-<br />
Wesley, 2004.<br />
[Mitra et al., 2003] Mitra N., SOAP version 1.2 part 0: primer, W3C<br />
Recommendation, juin, 2003.<br />
[Nassar et al., 2003] Nassar M., Coulette, B., Crégut, X., Ebsersold, S., Kriouile, A.,<br />
2003. Towards a View based Unified Modeling Language. Proc. of 5th International<br />
Conference on Enterprise Information Systems (ICEIS‟2003), Angers, France.<br />
[OMG, 2002a] OMG, Meta Object Facility (MOF) specification – version 1.4,<br />
formal/01-11-02, April 2002.<br />
[OMG, 2002b] OMG, XMI, XML Metadata Interchange (XMI), v1.2, OMG, 2002b.<br />
[OMG, 2002c] OMG, CORBA Components, V3.0, formal/02-06-65, June 2002.
180 Références<br />
[OMG, 2002d] OMG, UML Profile for Enterprise Distributed Object Computing<br />
Specification, February 2002. OMG Adopted Specification ptc/02-02-05,<br />
[OMG, 2003] http://www.omg.org/docs/formal/02-04-03.pdf<br />
[OMG, 2005] Object Management Group, UML Profile for Modeling Quality of<br />
Service and Fault Tolerance Characteristics and Mechanisms, Adopted Specification,<br />
May 2005.<br />
[OMG , 2005] Object Management Group, UML Profile for Schedulability,<br />
Performance and Time Specification, v. 1.1, January 2005.<br />
[OMG, 2009] Object Management Group, Service oriented architecture Modeling<br />
Language (SoaML), http://www.omg.org/spec/SoaML, 2009<br />
[OMG, 2003] Object Management Group, MDA Guide, version 1.0.1, June 2003.<br />
[OMG, 2004] OMG. UML Profile for Enterprise Collaboration Architecture<br />
Specification, OMG formal/04-02-05, February 2004.<br />
[Ortiz et al., 2006a] Ortiz G., Hernández J.: Service-Oriented Model-Driven<br />
Development: Filling the Extra-Functional Property Gap. ICSOC 2006: 471-476<br />
[Ortiz et al., 2006b] Ortiz G., Hernández, J., Toward UML Profiles for Web Services<br />
and their Extra-Functional Properties. IEEE International Conference on Web Services<br />
( ICWS 2006) : 889-892<br />
[Papazoglou et al., 2008] Papazoglou M.P., Paolo Traverso, Schahram Dustdar, Frank<br />
Leymann: Service-Oriented Computing: a Research Roadmap. Int. J. Cooperative Inf.<br />
Syst. 17(2): 223-255 (2008)<br />
[Papazoglou et al., 2003] Papazoglou M. P., « Service Oriented Computing :<br />
Concepts, characteristics and Directions », actes de la 4° conférence WISE`03, Rome,<br />
10-12décembre 2003, Italie, IEEE Computer Society, p. 3-12.<br />
[Papazoglou et al., 2006] Papazoglou M., P., van den Heuvel W., Service-oriented<br />
design and development methodology. Int. J. Web Eng. Technol. 2(4): 412-442 (2006)<br />
[Papazoglou et al., 2007a] Papazoglou M.P, Willem-Jan van den Heuvel: Service<br />
oriented architectures: approaches, technologies and research issues. VLDB J. 16(3):<br />
389-415 (2007)<br />
[Papazoglou et al., 2007b] Papazoglou M.P. , “Web Services: Principles and<br />
Technology”, Prentice hall, 2007<br />
[Patrascoiu et al., 2004a] Patrascoiu O., "YATL: Yet Another Transformation<br />
language", in Proceedings of the 1st European MDA Workshop MDA-IA, pp. 83-90,<br />
January 2004.<br />
[Patrascoiu et al., 2004b] Patrascoiu O., Mapping EDOC to Web service using YATL.<br />
In Proceedings of the 8th IEEE International Enterprise Distributed Object Computing<br />
Conference (EDOC‟04). IEEE Computer Society, pp. 286-297.<br />
[Rafanelli et al., 2003] Rafanelli M., Multidimensional Databases: Problems and<br />
Solutions Idea Group 2003.
181 Références<br />
[Rolland et al., 2007] Rolland C., Kaabi R.S., Kraïem N.: On ISOA: Intentional<br />
Services Oriented Architecture. CAiSE 2007: 158-172<br />
[SINTEF, 2004] SINTEF. UML Model Transformation Tool (UMT), december 2004.<br />
Disponible sur http://umtqvt. sourceforge.net,<br />
[Sheng et al., 2005] Sheng, Q.Z., Benatallah, B.,ContextUML: A UML-Based<br />
Modeling Language for Model-Driven Context-Aware Web Service Development,<br />
Proc. of the 4th Intl. Conf. onMobile Business (ICMB'05), Sydney, Australia, July<br />
(2005).<br />
[SKOGAN et al., 2004] SKOGAN D., GRONMO R., SOLHEIM I., Web Service<br />
Composition in UML. Eight IEEE International Enterprise Distributed Object<br />
Computing Conference (EDOC 2004), pages 47–57, September 2004.<br />
[Stojanovic et al., 2004] Stojanovic Z., Dahanayake A., Sol H., “Modeling and design<br />
of Service Oriented Architecture”, IEEE International Conference on Systems, Man<br />
and Cybernytics, 2004.<br />
[SUN, 2004] SUN MICROSYSTEMS. JavaWeb Services Developer Pack, March<br />
2004. Disponible sur http://java.sun.com/webservices,<br />
[Szyperski,2002] Szyperski C.: Component Software - Beyond Object-Oriented<br />
Programming. Addison-Wesley, 2 édition, novembre 2002.<br />
[Tao et al., 2008] Tao A.T, Yang J.: Towards policy driven context aware<br />
differentiated services design and development. Enterprise IS 2(4): 367-384 (2008)<br />
[Tao et al., 2007a] Tao A.T, Yang J., : Context Aware Differentiated Services<br />
Development with Configurable Business Processes. EDOC 2007: 241-252<br />
[Tao et al., 2007b] Tao T.A.,Yang J., Supporting Differentiated Services With<br />
Configurable Business Processes. Proc of the IEEE International Conference on Web<br />
Services (ICWS'07), 2007.<br />
[Torkaman et al., 2006] Torkaman Rahmani A., Rafe V., Sedighian S., Abbaspour A.:<br />
An MDA-Based Modeling and Design of Service Oriented Architecture. International<br />
Conference on Computational Science (3) 2006: 578-585<br />
[Tsai et al., 2006] Tsai W.T., Malek M.,, Chen Y., Bastani F.B., : Perspectives on<br />
Service-Oriented Computing and Service-Oriented System Engineering. SOSE 2006:<br />
3-10<br />
[W3C, 2004] Web Services Architecture.W3C disponible sur<br />
http://www.w3.org/TR/ws-arch/, 2004.<br />
[Wonohoesodo et al., 2004] Wonohoesodo R., Tari Z., A Role based Access Control<br />
for Web Services. IEEE International Conference on Services Computing (SCC 2004),<br />
2004<br />
[Yu et al., 2007] Yu X., Zhang Y., Zhang T., Wang L., Hu J., Zhao J., Li X., A<br />
model-driven development framework for enterprise Web services. Information<br />
Systems Frontiers 9(4) : 391-409 ( 2007).
182 Références<br />
[Yu et al., 2008] Yu Q., Bouguettaya A.,: Framework for Web service query algebra<br />
and optimization. TWEB 2(1): (2008)<br />
[Yu et al., 2008] Yu Q., Liu X., Bouguettaya A., Medjahed B.,: Deploying and<br />
managing Web services: issues, solutions, and directions. VLDB J. 17(3): 537-572<br />
(2008)<br />
[Zhang et al., 2006] Zhang T., Ying S., Cao S., Jia X., : A Modeling Framework for<br />
Service-Oriented Architecture. QSIC 2006: 219-226