• Aucun résultat trouvé

4.3 Approche MDA proposée

4.3.1 Principe et méthodologie de développement

L’Ingénierie Dirigée par les Modèles (IDM) est un paradigme qui réfère à l’utilisa-tion des modèles comme éléments principaux dans le cycle de vie du logiciel. Se basant sur une abstraction des problèmes réels et complexes, ce paradigme permet de réduire le temps de développement des systèmes. Ces derniers sont donc plus faciles à spéci-fier et maintenir. La Méthodologie Dirigée par les Modèles (MDA) est un standard basé sur IDM, lancé par l’OMG. Elle permet l’abstraction des systèmes complexes à travers l’élaboration de standards pour la définition des modèles ainsi que leurs relations et trans-formations.

MDA vise à modéliser les spécifications fonctionnelles d’une application, indépen-damment des spécifications techniques liées à la plateforme d’exécution. Utilisant des standards de l’OMG, ces spécifications sont définies initialement dans un modèle indépen-dant de l’informatisation (CIM). Ce dernier est utilisé pour créer un modèle indépenindépen-dant de toute plateforme d’exécution (PIM), qui avec un modèle de description de plateforme permet la génération (semi-) automatique par transformation des modèles. Ainsi, MDA tient compte de tous les aspects de développement logiciel grâce à la modélisation. Le formalisme de modélisation joue donc un rôle important dans la pérennité des savoir-faire métiers. Il existe quatre niveaux de modélisation, décrits sous une forme pyramidale, qui sont :

• Niveau M0 : le système réel à modéliser ;

• Niveau M1 : le modèle qui représente une abstraction du monde réel ;

• Niveau M2 : le méta-modèle est un langage utilisé pour décrire les modèles ;

• Niveau M3 : le méta-méta-modèle permet de décrire les langages des méta-modèles et se décrit lui-même.

Les modèles véhiculent les informations nécessaires pour la génération du code source de l’application à travers des transformations successives des modèles. Dans sa majorité, le processus de transformation est automatisé. En particulier, les DSLs (Domain Specific Language) rendent l’ensemble du processus et de la génération plus souple et rapide. Ils sont des langages à partir desquels sont décrites les spécifications fonctionnelles de l’application à générer. Ces descriptions sont désormais indépendantes des spécifications techniques liées aux plateformes d’exécution à différents niveaux d’abstraction grâce à un vocabulaire personnalisé et compréhensible aussi bien par les experts du domaine que par les développeurs.. Personnalisables, les DSLs sont définis par des vocabulaires et règles syntaxiques déterminés par le concepteur. Donc, les modèles sont des énoncés de ces langages. Ils respectent cette syntaxe et décrivent les fonctionnalités de l’application. En effet, ils permettent la génération du code source depuis les PIM. De plus, le générateur de code décrit automatiquement l’architecture de la plateforme d’exécution. Des templates sont aussi créées par ce générateur pour l’expression de l’architecture de la plateforme cible et contiennent les règles de transformation d’un modèle en code source.

La première étape du processus de définition d’un DSL consiste à établir son voca-bulaire. Ce dernier reflète le domaine métier de l’application et doit être simple et com-préhensible. Ensuite, il faut définir le méta-modèle et les règles syntaxiques du DSL. Ces règles se basent sur le vocabulaire défini lors de la première étape. Dans notre travail,

nous avons recours aux DSL sous forme graphique. Nous allons utiliser le langage de modélisation unifiée UML pour la conception des méta-modèles de ces DSL. Le type graphique est plus visuel et efficace pour représenter les relations entre éléments. Ces éléments dépendent du modèle d’application et des besoins fonctionnels. En effet, ce mo-dèle comprend les types de données, et les concepts contenant des propriétés permettant d’exprimer au mieux les fonctions de l’application.

Pour le développement des DSLs, nous avons suivi la méthodologie proposée dans [Mernik et al.,2005]. Cette méthodologie comprend quatre phases, à savoir : la décision, l’analyse, la conception et la mise en œuvre.

1. Décision : Faire le choix d’un langage dédié à un domaine particulier permet d’avoir une liberté dans la description du langage qui assure une parfaite adéquation au domaine. De plus, il permet le développement de logiciels par des utilisateurs ayant moins d’expertise en matière de programmation.

2. Analyse : Dans cette phase, nous identifions le domaine du problème et rassem-blons les connaissances correspondantes. Les sources de ce domaine représentent les entrées. Fréquemment, son analyse est faite de manière informelle où la cap-ture et la représentation des connaissances sont effectuées. Dans notre cas, nous sommes amenés à analyser le domaine des Réseaux Sociaux afin d’extraire les in-formations qui servent plus tard dans la personnalisation des documents destinés à l’application. A partir de ces ressources, les profils utilisateur, leurs connexions dans le réseau ainsi que les documents doivent être extraits. Dans notre travail, comme mentionné précédemment, nous utilisons les formalismes du web séman-tique pour représenter les données. Ainsi, les données extraites servent d’une part à identifier les communautés d’intérêts des utilisateurs et leurs contextes et d’autre part à identifier les documents pertinents parmi ceux envoyés par les utilisateurs.

3. Conception : La méthodologie MDA repose sur des modèles, et la méta-modélisation joue un rôle important. Elle est considérée comme une technique courante pour définir la syntaxe abstraite des modèles. Dans cette phase, nous concevons les méta-modèles liés aux DSLs proposés en utilisant des techniques de conception UML.

4. Implémentation : Pour la mise en œuvre des méta-modèles proposés, nous utili-sons le langage Kermeta. Ce dernier implémente une extension de l’EMOF (Es-sential MOF) 2.0 qui permet de spécifier un comportement impératif aux entités du méta-modèle. Le prototypage et la transformation de modèles est donc possible directement dans cet outil en générant le code correspondant au méta-modèle.