Bonjour,
Après quelques temps sans donner de nouvelles, je reviens avec quelques interrogations. ;)
Je suis actuellement en pleine réflexion sur les possibilités de mettre en place des patterns de modèles. Je m'explique... Je souhaiterais pouvoir manipuler des DSL ou domaines dans d'autres DSL.
C'est différent du Powertoy DIS dans le sens où les DSL ne sont pas forcément utilisés en même temps. Je pense donc actuellement qu'il faut prévoir une forme persistée de l'information sous forme de DLL/XML.
J'ai décrit plusieurs niveaux, que je vais tenter d'illustrer pour bien me faire comprendre.
1- On décrit notre DSL et on le sauvegarde. On peut le reprendre et le modifier par la suite.
C'est la solution possible de base avec les DSL. Mais celle-ci reste assez contraignante dans des cas complexes.
2- On décrit notre DSL. On peut en réutiliser une partie dans un autre DSL, par exemple par copier/coller.
Cas simple : Entre deux DSL issus du même méta-modèle.
Cas complexe : Entre deux DSL issus de méta-modèles différents.
3- On décrit notre DSL, on le sauvegarde. On peut ensuite le réutiliser dans un autre modeleur.
Deux cas se présentent!
- Dans mon premier modeleur, je décris comment est composée une voiture, par exemple de type Peugeot 206. Je sauvegarde ce DSL. J'aimerai ensuite pouvoir récupérer ce DSL dans un second modeleur ayant pour rôle de donner des relations entre voitures. Ce 2nd modeleur possède donc le domaine de description d'une voiture, il doit donc juste être capable de recharger en mémoire l'instance Peugeot 206.
- Dans le second cas, je fais l'hypothèse que le second modeleur ne connait pas, de base, les concepts à manipuler. Il sait juste qu'il doit permettre de créer des relations entre eux. Il doit donc être capable de récupérer le domaine de description d'une voiture et de recréer l'instance "Peugeot 206".
4- Rejoind un peu le 3. Réutilisation d'un domaine (=méta modèle) au niveau d'un autre DSL.
Je reprends l'exemple de la voiture. Dans le modeleur permettant de créer des relations entre concepts, je rajoute le concept de voiture. L'utilisateur manipule donc le concept (et non une instance) de la voiture, avec ses contraintes et sa cohérence (4 roue, un moteur, etc.).
L'intérêt étant de fournir un squelette de base à l'utilisateur qu'il remplirait suivant ses besoins (Pneu Michelin, etc.)
J'espère avoir été assez clair dans mes différents cas de figures.
Mon objectif est pour l'instant de situer la faisabilité et la complexité de chacune de ces solutions. Ces questions étant importantes pour les choix que je devrais prendre par la suite, j'aimerai profiter de votre expérience pour répondre à ces questions.
Je compte, d'après les réponses que je pourrais apporter, créer de petits exemples illustrant ces possibilités. Si cela vous intéresse, je pourrais alors vous les transmettre pour les rendre accessible sur le site.