Vers un PIM à base de composants multivues

Transcription

Vers un PIM à base de composants multivues
SETIT 2007
4rth International Conference: Sciences of Electronic,
Technologies of Information and Telecommunications
March 25-29, 2007 – TUNISIA
Vers un PIM à base de composants multivues
M.Hain1, A.Marak2, T.Ouahmane3
Laboratoire TIM, Equipe IGSI, Département de Mathématiques et Informatique.
Faculté des Sciences Ben M’sik, PB 7955 Casablanca Maroc
1
[email protected]
2
[email protected]
3
[email protected]
Résumé : VUML [1] est une méthode d'analyse /conception basée sur les vues des acteurs. Le principal ajout à UML
dans le domaine de composants est la notion de composant multivues [2] qui permet d’encapsuler les caractéristiques
métiers selon différents points de vue, chacun correspondant à un acteur donné.
Une bonne réutilisation des composants passe par une représentation indépendante d’une plateforme donnée. Cette
représentation peut cibler, par la suite, différentes technologies spécifiques. En effet, la réutilisation d’un modèle à haut
niveau d’abstraction (indépendant d’une plate forme) est préférable que la réutilisation au niveau de code. Un
modèle abstrait peut être transformé dans plusieurs technologies et adapté selon les différentes exigences survenues.
Dans le présent article nous proposons une traduction simplifiée permettant de passer d’une représentation de modèle
à base des composants multivues vers une représentation de modèle à base des composants UML 2.0. La démarche
adoptée pour cet objectif s’inscrit dans le cadre général de MDA.
Mots clés: Profile UML, Vue, point de vue, Composant, Composant multivues, MDA.
Introduction
Après la vague de la conception orientée objet, et
la demande accrue des solutions logicielles qui
sollicitent plusieurs domaines, le développeur donc se
trouve dans un monde de complexité accentuée, et
devant des contraintes, à la fois de la nature des
applications, la taille des logiciels, des environnements
distribués et l’hétérogénéité. La nouvelle tendance de
développement à base de composants permet de
concevoir des systèmes logiciels complexes qui
requièrent l’intervention de plusieurs compétences par
assemblage, dans une vision qui s’inspire de
l’industrielle.
Un composant [3] [4] [5] est une pièce fondamentale
vue et manipulée par plusieurs acteurs (acteur comme
terme générale qui réunie l’homme, machine ou un
programme tiers). La modélisation orienté Acteur nous
permet d’encapsuler les caractéristiques métiers dans
une boite noir, et fournir les services attendus de ce
composant selon le point de vue acteur actif, pour
promouvoir la culture de la réutilisation [6].
VUML est une méthode d'analyse /conception basée
sur les vues des acteurs [7] [8]. Le principal ajout à
UML dans le domaine de composant est le composant
multivues, c’est une pièce très riche par rapport le
composant standard, mais difficile à instancier et à
déployer via les relations ajoutées.
Nous pensons que l’évolution d’un composant
multivues est de trouver une représentation adéquate
dans
le monde orienté
composant standard
conformément à la norme UML 2.0[9].
Cette représentation peut cibler les différentes
technologies spécifiques, dans le but d’augmenter la
réutilisabilité du composants multivues. Car
la
réutilisation d’un modèle à haut niveau d’abstraction
(indépendant d’une plate forme) est préférable qu’au
niveau de code. Un modèle abstrait peut être
transformé en plusieurs modèles.
L’article est présenté selon les sections suivantes :
La deuxième section présente un aperçu sur le
composant multivues et la démarche MDA, et
propose en particulier un processus de transformation
des composants multivues dans le contexte MDA.
Dans la troisième et quatrième section nous
présentons notre patron générique de transformation
d’un modèle abstrait à base de composants
Multivues, et nous proposons un algorithme de
transformation dans la cinquième
section, une
conclusion est donnée à la fin.
SETIT2007
1. Les composants multivues dans MDA
Dans cette section, nous nous intéressons à présenter
les composants multivues dans le contexte MDA[10]
[11]. L’objectif est de pouvoir cibler plusieurs platesformes à partir d’un même modèle et ceci grâce à des
projections standardisées.
1.1. Notion de composant multivues
UML2.0 [9] [12] [13] spécifie un composant comme
étant une unité décomposable, réutilisable, qui interagit
avec son environnement par l'intermédiaire de points
d'interactions appelés ports. Les ports sont caractères
par les interfaces : Ces interfaces sont caractérisées par
les signatures des méthodes qu’elles définissent et par
un sens de communication. Les interfaces fournies
caractérisent les communications entrantes d’un
composant, alors que les interfaces requises
caractérisent ses communications sortantes. Le contenu
interne du composant ne doit être ni visible, ni
accessible autrement que par ses ports. L’assemblage
des composants se fait au moyen de connecteurs.
Deux types de connecteurs existent : le connecteur de
délégation et le connecteur d'assemblage.
La figure 1 présente le métamodéle du composant
UML2.0 est coloré en blanc :
Class
Interface
Component
*
*
+/provi
+/requir
MultiVie *
MultiViewsCompone
w
+/provi
nt
*
Interface
+abstract
0.
Realization
Fig. 2 : exemple des composants multivues
client accède à un composant selon un point de vue
donné. Le client peut activer/désactiver des vues durant
l’exécution.
La figure 2 illustre un diagramme de composants
multivues à travers l'exemple simplifié d'une formation
dans un système d'enseignement à distance.
Ce diagramme comporte trois composants multivues :
Formation, Documentation et Inscription.
*
+realizatio
1
Classifier
+/requir
fig. 1 : Métaclasse définissant le concept de composant
en UML 2.0 et de composant multivues
D’après [8] Un composant multivues est une extension
du composant UML 2.0, il combine le critère de la
réutilisation via le concept de composant et celui de la
flexibilité via la notion de point de vue. Un composant
multivues a une structure interne et un ensemble de ports
qui structurent des points d’interaction avec
l’environnement extérieur et intérieur. La spécificité
d’un composant multivues est d'offrir des interfaces dont
la définition change dynamiquement selon la vue active.
De plus, un composant multivues est doté d’un
mécanisme de gestion de la cohérence entre ses vues qui
peuvent, éventuellement, être dépendantes. Ainsi, un
Un composant multivues publie ses attributs et ses
méthodes dans des interfaces portant le stéréotype
« base », partagées par les déférents points de vues, et
une spécification de point de vue acteur qui définie la
spécificité de chaque acteur stéréotypé « view ». Donc
l’interface multivues MVIFormation est schématisée
comme ci-dessous :
SETIT2007
Fig. 4 : le processus de développement des
systèmes à base de composants multivues
Fig.3 : Représentation explicite d’interface
multivues fournie MVIFormation
Par exemple Le comportement de la méthode
afficher () change selon la vue active. En effet pour
l’étudiant, cette fonction permet d’afficher, en plus
des informations de base, le prix, bien que
l’enseignent ait surtout concerné par autre point de
vue, il s'occupe de la préparation des exercices et
des questions posées.
1.2. MDA et les composants multivues :
MDA est une démarche de développement proposée
par l’OMG. Qui permet à une industrie de décrire ses
fonctions indépendamment des implémentations, et de
pouvoir projeter la même solution sur une ou
plusieurs plates-formes.
MDA définit une architecture de spécifications
structurée en 2 modèles :
¾ Les modèles indépendants des plateformes
(PIM).
¾ Les modèles dépendants des plateformes
(PSM).
Comme MDA est une approche basée entièrement
sur les modèles, nous considérons un modèle de
composants multivues abstrait comme un PIM de
départ, et spécifions le processus de transformation et
d’ affinement, qui consiste à ajouter d’autres
informations dans un modèle pour qu’il devienne plus
complet et plus détaillé. Par exemple, un composant
« abstrait » peut être raffiné en un ensemble d’autres
composants de granularité plus fines et plus spécifique.
Pour immerger le concept par point de vue dans le
paradigme de composant, nous allons le considérer
comme une information métier indépendante de la
plate forme.
La figure 4 illustre le processus de développement des
systèmes à base de composants multivues au sien de
MDA :
Il s’agit donc de définir les différents modèles PIM
et PSM ainsi que les transformations nécessaires.
Nous proposons alors, dans un premier temps, un
modèle PIM à base de composants multivues
(PIMVMC). Dans un second temps, nous donnons les
transformations PIMVMC en un PIM à base de
composants standard UML 2.0, afin d’avoir un
modèle standard et conforme avec la notion de
composant. Le modèle résultant est un modèle
compatible avec la norme de l’OMG. Ceci facilite la
projection de notre modèle vers les modèles
technologiques de composants : CCM (OMG) 1,
EJB 2, DCOM 3.
Pour répondre au besoin d’un langage de
transformation de modèles, l’OMG a publié un
appel à propositions (RFP, Request For Proposal)
intitulé MOF 2.0 Query/Views/Transformations (QVT)
[14]. Toutefois, à ce jour seul quelques soumissions ont
été reçues.
Les caractéristiques communes des ces langages sont :
l’algorithme et le
langage de transformation.
L’algorithme est la base de toutes transformations,
c’est une solution métier au niveau de la phase de
transformation. Une fois trouvée, on peut l’exécuter
avec les instructions
d’un langage transformation
spécifique.
Dans la section suivante, nous étudions le patron
générique qui vise la traduction d’un composant
multivues en un composant UML 2.0 standard.
1 CORBA Component Model
2
Enterprise Java Beans
3 Microsoft Distributed Component Object Model
SETIT2007
2. Définitions préliminaires
Selon le métamodéle de composant présenté dans la
figure 1 et la spécification de l’OMG [9] [12] [13], la
métaclasse composante définie dans le package
Component est une spécification de métaclasse : Classe
définie dans le package StructuredClasses. Cet héritage
entre les deux métaclasses nous permet de tirer les
définitions suivantes :
1. Chaque composant est caractérisé par ses
propres attributs, et un ensemble des méthodes
qui implémentent les services fournis par le
composant. La figure 5 illustre le format
explicite d’un seul composant, Formation,
doté d’un seul attribut code_f et une seule
opération affiche().
ViewDependancy, la base multivues…).
La solution envisagée est un compostant composite
conforme au standard du UML2.0 et enveloppe la
solution métier du composant multivues[15] [16]..
3.2. Motivations et Objectifs visés
•
•
•
•
Fig. 5 : La représentation explicite d’un composant.
2.
3.
4.
Un composant est une spécification d’une
classe, enrichi par d’autre type des relations.
Toutes les relations autorisées entre les classes
(héritage, agrégation…) sont valides pour les
composants. Si un composant « A » hérite d’un
composant « B » alors « A » est une
spécification de « B ». Cette spécificité en
terme des interfaces réalisées par le composant
parent ou d’une structure interne plus détaillée.
Une instance de métaclasse composant peut
contenir des instances descendantes de
métaclasses
PackageableElement.
PackageableElement est la métaclasse de base
pour les différentes métaclasses des éléments
de UML 2.0. Donc un composant peut contenir
d’autres composants, classes ou interfaces
comme sous composants.
Si on exige plus de détails sur la structure
interne, un composant se compose des parts et
des connecteurs. Les parts sont reliés par des
relations ordinaires entre les classes et délègue
le composant conteneur pour toutes les
communications
avec
l’environnement
extérieur. Sachant que les relations entre les
parts gardent la multiplicité et la référence.
3. Présentation de notre patron
générique:
3.1. Problème
On veut une représentation du composant multivues
selon la norme standard du UML2.0, car le composant
multivues contient des types des relations différentes et
non typées pour l’implémentation (ViewExtention,
On veut rendre la solution à base des
composants multivues tangible et compatible
avec le standard du UML2.0, donc une
représentation standard sert à convertir un
composant multivues vers le composant du
UML2.0.
Une solution qui s’adapte avec les solutions
marchés dans le domine orienté composant :
CCM (OMG), EJB, DCOM.
On ne veut par inventer un langage dédié pour
l’approche du composant multivues, et ne pas
pénaliser le développeur orienté composant
standard.
On veut cacher les interactions et les
interdépendances entre les acteurs et le
composant métier afin d’augmenter la gestion
et l a flexibilité des applications on gardant la
trace de point de vue d’acteur.
3.3. Solution proposée
Dans cette section nous proposons une modélisation de
notre patron générique selon deux volets : le premier est
la structure statique représentant notre patron à base de
composant standard UML2.0 ; le deuxième est la
spécification dynamique montant la collaboration
entre le client et les objets physique du patron.
3.3.1. Structure statique
Tenant compte
l’idée de composant composite
(définition N°3) et la structure interne d’un composant
complexe pour dire : un composant multivues est un
composant composite d’un ensemble des parts reliées
entre eux. On utilise la délégation et le polymorphisme
pour gérer les droits d’accès aux différentes vues, afin
assure l’aiguillage d’implémentation pour les différents
opérations publiées dans l’interface multivues.
La figure 6 illustre la structure statique de ce patron :
SETIT2007
Fig.6 : La structure du patron générique de transformation de composants multivues
Nous relevons à titre d’exemple à partir de la figure
ci-dessus les constituants suivants :
Compoent_name : représente le composant composite,
qui enveloppe la notion du composant multivues. Une
vue externe,
Compoent_name : est une boite noire doté d’un
ensemble des
interfaces, qui leur permet de
communique avec l’environnement externe.
IAdministration : est une interface pour gérer les vues et
la structure interne de composant
multivue. porte deux opérations : SetView() permet
d’activer/désactiver une vue et Getview() est celle qui
fournit la vue et la propagation de la vue active.
IMVC : Le composant multivues communique avec
l’extérieur au moins via une seule interface, qui expose
les différents attributs et opérations, porte le nom de
l’interface multivues « IMVC »,
CMV : est un composant part dans le composant
composite. Il fonctionne comme une façade de réception
et aiguille les appels vers les parts concernées selon la
vue active.
BaseCMV : est un composant part contient les attribues
et les opérations communes entre tout
les acteurs,
autrement dite c’est la réponse par défaut quand toutes
les vues sont passives. View_Extention : garde la trace
des appelles du composant CMV aux parts des acteurs
par
une
agrégation
référentielle
par
CurrentView_ExtentionCMV .
ViewKCMV : représente le point de vue spécifique de
chaque acteur. Il contient les attributs et
les opérations redéfinies déferrement de la base où
exclusive pour un acteur. K représente un indice d’un
acteur donné.
3.3.2. Spécification dynamique
Les constituants schématisés dans la structure statique
seront les participants de spécification dynamique. En
effet le client qui traite le système à base des composants
multivues, il se connecte d’abord au composant
composite(Component_name), qui délègue le traitement
de la requête reçue au composant part interne CMV,
celui traite la requête mais après l’identification de
l’acteur émetteur de cette requête, si la vue de l’acteur
est existe plus active, il aiguille le traitement au
composant part de la vue concernée, si non il l’aiguille
vers la part intitulée Base, qui encapsule les informations
partagée par tout le monde. De plus le composant
composite est doté par une variété des interfaces métiers,
plus les interfaces de gestion de composant qui permet
d’administrer davantage les vue au sien du composant
multivues.
L’administration
qui
permet
d’activer/désactive où lister les vues actives.
SETIT2007
Client
Component_name
CMV
BaseCMV
View1CMV
View2CMV
Invoquer
Déléguer
Notification
si vue 1 active
si vue 2 active
si non
Fig.6 : Le diagramme de séquence du patron générique de composant multivues.
4. La transformation de composant multivues
La procédure de transformation traduit le processus
d’évolution d'un modèle à un autre modèle de même
système dans un langage de transformation. Durant
l’opération de transformation on cherche la coïncidence
entre les éléments de modèle source et de destination.
Le modèle source est un PIM à base de composants
multivues « PIMMVC », le modèle destination est un
PIM à base de composant standard « PIMC ».
4.1. Choix de langage de transformation :
La transformation qui convertit un PIMMVC en un
PIMC consiste en un ensemble de règles, nous utilisons
l’outil gratuit et libre d’ATL [17], elle est rapidement
imposée à nous comme l’outil répondant le mieux à la
problématique de transformation. Rappelons qu’ATL est
une soumission de proposition en réponse à l’appel RFP
émis par OMG. ATL est un langage de transformation
hybride, semi-impératif et semi-déclaratif. Comme
différents autres langages de l'espace MDA, ATL est
basé sur le langage OCL pour l'écriture des expressions.
OCL est le langage de contraintes associé à UML 2.0. Il
fait partie de la collection des standards MDA.
Rule MVComp2Comp {
From MVC: PIMMVC! MVComp (Cond)
To
C : PIMC ! Comp
(-- séquence d’attribution de valeurs et déclaration des
variables.
-- l’élément créé
--Ex :
MVC.allinstances->exists
(comp_CVM :MVC|comp_CVM .name=
component_name) ;)
}
Avec:
MVComp2Comp: nom de la règle.
PIMMVC : nom du métamodèle du modèle d’entrée.
MVComp : nom d’un élément du métamodèle. Les
instances de cet élément subiront l’application de la
règle MVComp2Comp, à tour de rôle.
MVC: nom local de l’instance de MVComp (en cours de
traitement par la règle MVComp2Comp) rencontrée
dans le modèle d’entrée.
Cond : condition de filtrage sur les instances d’entrée à
la règle MVComp2Comp.
PIMC : nom du métamodèle du modèle de sortie.
Comp: nom de l’élément du métamodèle à instancier
dans le modèle de sortie, chaque fois qu’une instance
d’entrée est rencontrée.
C: nom local de l’instance créée en sortie de la règle.
4.2. Les règles de transformation
La syntaxe de la définition d’une
transformation est de la forme suivante:
règle
de
Les règles sont brièvement expliquées dans le
tableau ci-dessous en langage naturel, puis formulées en
utilisant la syntaxe ATL précédemment introduite.
SETIT2007
Bibliographie
Elément UML du modèle
PIMMVC
Eléments UML créés après
transformation dans le
modèle PIMC
Composant multivues
Composant composite UML
2.0
Sous
composant
View_acteur_K
Sous
Composant
BaseMVC
Attribut de sous composant
« View » acteur_K.
Interface
stéréotypée
« View » acteur_K
Interface
stéréotypée
« Base »
Attribut de l’interface
stéréotypée
« View »
acteur_K.
Opération de l’interface
stéréotypée
« View »
acteur_K.
Attribut de l’interface
stéréotypée « Base »
Opération de l’interface
stéréotypée « Base»
Les opérations GetView()
et SetView()
Opération
de
sous
composant View_acteur_K.
Attribut de Sous Composant
BaseMVC
Opération
de
Sous
Composant BaseMVC
Interface
Iadministration
avec
les
opérations
GetView() et SetView()
Toutes les opérations des Interface IMVC regroupe
interfaces
stéréotypées toutes les opérations des
« View » ou « Base »
interfaces
stéréotypées
« View » ou « Base »
N.B : K est un indice pour les acteurs.
Fig. 7 Tableau récapitulatif des règles de
transformation
5. Conclusion
Afin de garder la notion de point de vue acteur dans le
processus de conception, nous l’avons traité comme
une information
métier indépendamment de la
technologie « Un modèle indépendant de la plate
forme à base de composants multivues « PIMCMV».
Notre vision est d’intégrer les composants multivues
dans la démarche MDA. Les clés de réussite sont : la
compatibilité de la plate forme ciblée avec la solution
générée et la transformation, dans cette article nous
avons proposé un PIM intermédiaire qui fournir une
traduction simplifiée
d’un modèle à base de
composants multivues en un modèle conforme au
composant UML 2.0 standard dans le contexte de
MDA. Nous travaillons actuellement sur un prototype
de déploiement pour les composants multivues, afin de
générer un PSM à partir d’un PIM à base de
composants multivues.
[1]. Nassar, M., "VUML: a Viewpoint oriented UML
Extension", Proceedings of the 18th IEEE Montreal, Canada,
October 6-10, 2003.
[2]. El Asri et al., "Multiviews Component for development ",
Proceedings of 7th International Conference on Enterprise
Information Systems ICEIS’05, Miami-USA, 124-28 May
2005.
[3]. Clemens Szyperski: Component Software - Beyond
Object-Oriented Programming. Addison- Wesley, 2
édition, novembre 2002
[4]. Philippe Kruchten : “Modeling Component Systems with
the Unified Modeling Language”, Rational Software Corp,
1999.
[5]. Bertrand Meyer : What to compose. Software
Development, mars 2000. Online: Software development
columns:http://www.sdmagazine.com/articles/2000/0003
[6]. Kriouile A., "VBOOM, une méthode orientée objet
d’analyse et de conception par points de vue",
thèse d’Etat de l’université Mohammed V de Rabat, 1995.
[7]. Nassar M., "VUML : une extension UML orientée point de
vue". Doctorat en Sciences appliquées de l’université
Mohammed V Souissi Rabat. Numéro d’ordre 03/2004.
[8]. EL ASRIR, " Un modèle de composants multivues pour
VUML ". Doctorat en Sciences appliquées de l’université
Mohammed V Souissi Rabat. Numéro d’ordre 10/2005.
[9].UML 2.0 superstructure final adopted specification. Object
Management Group, document ptc/05-07-04, août 2005.
[10]. R. Soley and the OMG Staff. Model-driven architecture.
white paper, OMG Document, Nov 2000.
[11]. Blanc X., Caron O., Georgin A., Muller A., «
Transformations de modèles : d’un modèle abstrait aux
modèles EJB et CCM », Actes de la conférence Langages,
Modèles et Objets.
[12]. UML 2.0 Infrastructure Specification.
Management Group, document ptc/03-09-15,2003
Object
[13].UML 2.0 OCL 2nd revised submission. Object
Management Group, document ad/03-01-07, janvier 2003.
[14].OMG TC; “MOF 2.0 Query/Views/Transformations RFP”,
2002.
[15]. Gamma E. et al., Design Patterns, Elements of reusable
Object-oriented Software, Addison- Wesley, 1995.
[16]. Nassar M., Coulette B. et Kriouile A., "Génération de
code dans VUML". Journal Marocain d'Automatique,
d'Informatique et de Traitement du Signal, COPSTIC'03. 2004.
[17].ATL:http://www.sciences.univ-nantes.fr/lina/atl/