• Aucun résultat trouvé

II. VSoaML : Un profil UML de modélisation des systèmes orientés

II.3. Le concept de service multivues

II.3.2. Le service multivues

SOC a pour objectif le développement et la maintenance des applications distribuées interopérables et agiles en optimisant les délais et les coûts. SOC se base sur le concept de service comme un élément fondamental pour le développement des Applications/Solutions. En SOC, le service est défini comme un élément informatique indépendant de la plateforme et autonome (self-contained) permettant le support de la composition des applications distribuées en couplage faible facilement et à moindre coût. Chaque service possède une description qui peut être publiée dans un annuaire de service. En se basant sur cette description, un client de service peut découvrir le service qui correspond à ses besoins pour pouvoir construire des applications composites à valeur ajoutée en faisant seulement la composition des applications existantes. Les applications à base de services sont développées comme des ensembles indépendants de services qui interagissent en fournissant des interfaces bien définies avec leurs utilisateurs potentiels.

En SOC, un service peut interagir avec plusieurs utilisateurs ayant chacun un profil bien déterminé. Chaque client de service avec un profil donné, a des besoins spécifiques que le service doit y répondre. Dans le but d‟assurer une large utilisation, de la flexibilité et de l‟adaptabilité, le service doit fournir les fonctionnalités requises qui correspondent aux besoins

des utilisateurs l‟invoquant. De ce fait, le problème central qui se pose, au niveau Analyse/Conception des systèmes orientés services, est comment modéliser l‟aspect multidimensionnel des besoins des utilisateurs interagissant avec le service. La figure 38 montre la diversité des types de clients qui peuvent interagir avec le service.

Figure 38–Modèle d’interaction des services avec leurs clients

Pour faire face à ce problème, nous proposons le concept de service multivues (Kenzi et al., 2007) (Kenzi et al., 2008a) (Kenzi et al., 2008b) comme une entité de modélisation de première classe. Une telle entité permet la modélisation des besoins des utilisateurs et de leurs exigences tout au début du cycle de développement des systèmes orientés services en séparant leurs préoccupations fonctionnelles. Pour ce faire, le service multivues fournit/requiert un ensemble d‟interfaces de service visuelles(ViewServiceInterface). Chaque interface de service

Client de service 1 Service 1 Description Implémentation Service 2 Description Implémentation Service 3 Description Implémentation Service N Description Implémentation Client de service 2 Client de service M Client de service 3 Find Find Find Find Invoke Invoke Annuaire de Services Publish Publish Publish Publish Invoke Invoke Invoke Invoke Invoke Invoke Invoke

visuelle(ViewServiceInterface) permet de décrire les capacités du service fournies/requises suivant le profil de l‟acteur interagissant avec le service. L‟intersection des différentes interfaces visuelles constitue une interface de service de base (baseServiceInterface) qui est accessible à tous les acteurs interagissant avec le service. L‟interface ViewServiceInterface dépend de la baseServiceInterface dans le sens où les fonctionnalités de la base sont implicitement incluses dans toutes les interfaces de service vues (ViewServiceInterface). Les interfaces de service vues (ViewServiceInterface) et l‟interface de service de base (baseServiceInterface) sont regroupées dans un package que nous appelons interface de service multivue (MVServiceInterface).

A la conception, un service multivues possède un ensemble d‟interfaces de service vues. A l‟exécution, un service multivues se comporte comme un service régulier avec des interfaces régulières dont la définition à un moment donné est le résultat de la combinaison des fonctionnalités incluses dans l‟interface de service de base et les fonctionnalités incluses dans les interfaces de service vues qui correspondent à l‟acteur actif.

La figure 39 illustre la métamodèle de l‟interface de service multivues.

Dans le cadre de notre cas d‟étude, nous avons identifié le service multivues Formation. Ce service multivues est en interaction avec trois acteurs : Enseignant, Etudiant et Administrateur (cf. figure 40). Chaque acteur a ses propres besoins auxquels le service doit répondre. Le service multivues est spécifié par la spécification ‘‘Formation’’. Une telle spécification contient la description de l‟interface de service de base qui reflète les fonctionnalités communes accessible aux trois acteurs qui interagissent avec le service Formation et les fonctionnalités spécifiques à chaque acteur encapsulées dans les interfaces «ViewServiceInterface». Ainsi, les trois acteurs peuvent invoquer les opérations définies dans l‟interface de service de base « Formation » composée principalement des opérations suivantes : consulterSynopsisFormation et consulterListFormation permettant respectivement aux différents acteurs d‟avoir un synopsis d‟une formation donnée et de voir la liste des cours fournis par un DLS. Par ailleurs, les interfaces "ViewServiceInterface" Formation_administrateur, "ViewServiceInterface" Formation_Etudiant et "ViewServiceInterface" Formation_Enseignant associées respectivement à l‟Administrateur, l‟Etudiant et l‟Enseignant ne sont accessibles qu‟à leurs acteurs associés. Plus précisément, l‟acteur administrateur peut invoquer seulement les opérations appartenant à "ViewServiceInterface" Formation_Administrateur. Un acteur Etudiant peut invoquer seulement les opérations "ViewServiceInterface" Formation_Etudiant et un acteur Enseignant peut invoquer seulement les opérations appartenant à l‟interface "ViewServiceInterface" Formation_Enseignant.

La figure 40 montre l‟interface de service multivues du service multivues «Formation».

Figure 40–Interface de service multivues du service multivues «Formation » <<MVServiceInterface>> Formation <<include>> <<Include>> <<Include>> Formation_Administrateur ajouterNouvelleFormation() ajouterAgendaFormation() ajouterAnnounceFormation() supprimerFormation() affecterResponsableFormation() <<viewServiceInterface>> Formation_Etudiant consulterFormation() consulterExercice() proposerSolutionExercice() posterMessage() proposerSoultionTest() consulterRessourceProjet() consulterProjet() consulterAnnounceFormation() <<ViewServiceInterface>> Formation_Enseignant CreerFormation() supprimerFormation() ajouterExercice() ajouterSolutionExercice() proposerProjet() poserQuestion() proposerForum() respondreQuestions() proposerTest() proposerGroupeProjet() consulterProjet() ajouterAnnounceFormation() <<ViewServiceInterface>> <<baseServiceInterface>> Formation_base consulterSynopsisFormation() consulterListFormation()