Validation modéle et code
Suite à un échange avec Hephaistos007 j'ai décidé d'ouvrir ce post.(voir 2-3 dernières réponses)
Merci Hephaistos007, je comprends mieux cela facilite aussi l'écriture de test automatisé comme le test de modéle uml ou/et de code et surement pleins d'autres choses.
Par contre quand tu dis qu'en langage naturel c'est plus difficilement exploitable en fait il s'agit de spécialiser un analyseur syntaxique par exemple pour les gardes dans les diagrammes d'état.
La question est surtout comment à mon niveau de modeleur-concepteur-developpeur je peux intégrer un niveau de transformation de mon langage naturel avant d'envoyer le tout à la moulinette de la norme ou de l'outil logiciel que j'utilise (comme eclipse ou encore bouml) ?
Pour ceux qui connaissent le sujet beaucoup ou peu vous pouvez tentez alors d'exposer pour les autres ou de poser des questions afin d'explorer le sujet
:merci:
Model - Metamodel - Meta metamodel
Hervé,
Je comprend ta remarque et tu as raison dans l'absolue.
Jusqu'a présent on avait des vues métiers réprésenté par des diagramme UML. De cette vue métier ont sauvegardait un fichier xmi qui était appelé le model. Si un utlisateur avait plusieurs vue, cela faisait plusieurs models et il fallais ensuite une transformation pour rajouter des règles de constructions pour avoir un metamodel. Voilà ce que font tous les outils UML du marché avant que Omondo accepte d'intégrer la vision du metamodel unique que j'ai proposé.
Ce concept consiste a monté plus haut dans l'abstraction, c'est à dire au niveau MOF en utilisant EMF. A chaque création d'élement UML ce lance un appel vers le MOF qui merge l'Id UML avec les Id existante. Donc on fait d'un coup de manière transparente ce qui nécéssitait avant 2 étapes. C'est à dire le diagramme UML est tout de suite un XMI + règle de construction du model consolidé dans un metamodel plutot que de passer par le diagramme, ensuite sauvegarde xmi et ensuite règle de consolidation.
Les avantages sont énormes pour l'utilisateur qui se libère de la gestion des modèles pour ce concentré sur son métier. Cela donne la possibilité de travailler à un niveau au dessu et directement sur le metamodel et non le diagramme comme model. Je préfére parler de Structure UML du Model plutôt que de meta model même si c'est la même chose car cela est une confusion pour l'utilisateur et on ne comprend pas bien l'esprit d'UML 2.2
Comment cela marche: La Structure UML du model est synchronisé avec les diagrammes, qui sont désormais une vue de cette structure et pas juste une vue métier graphique. La Structure UML contient le métier qui lui est crée par les diagrammes UML précédent. Toute nouvelle information est sauvegardé dans la structure uml. Toute information existante est visionable dans les diagrammes UML sans ajouter d'information. On distincte donc 2 type de modeleurs. Le premier qui crée la structure du modèle et le second qui visualise les élements UML déjà existant afin d'en produire des diagrammes UML.
Il est possible par exemple d'avoir une vue "Métier de l'assurance" et de crée une Structure UML de ce modèle métier. Ensuite la Structure UML du model assurance est donné à des équipes qui vont en sortir des vues diagrammes correspondant à leur spécificités métiers. Il s'agit dans cette étape de reconstruire des diagrammes par le drag and drop d'élément UML de l'XMI vers les diagrammes.
Cela fait une grosse économie de temps et donne déjà un socle de départ.
L'autre intérêt de cette approche est permettre un cycle complet entre les équipes de modeleurs de haut niveau, modeleur applicatif, architectes et aussi équipe de developpement. Enfin cerise sur le gateau, dans un cycle agile nécéssiatant des itérations, la structure uml du modèle métrier assurance est remis à jour à chaque itération car le modèle métier est mergé avec la Structure UML afin de partir sur une nouvelle itération. Bien sûre que dans ce cas c'est pas le modèle qui drive la génération de code, mais le modèle qui est un complément au code.
J'espère que mon explication apporte des éclaircissements sinon n'hésiter à me poser des questions je serai ravi de continuer ce débat.
Validation modèle et code
Encore désolé car plus je lis vos réponse plus je me rend compte que je répond plus la tête dans le guidon que de manière fonctionnelle :oops:
La validation du modèle est faite sur l'XMI au niveau du métamodel.
La validation du code est faite par le JDT java directement.
Comme le diagramme UML est synchronisé avec le model interne EMF, qui lui est synchronisé avec Ecore, qui lui est synchronisé avec la structure UML qui lui se synchronise avec le code java alors la validation du modèle et du code java marche à tous les coups sinon il y a un warning et l'impossibilité de clicker sur le bouton ok.
Par contre si on désire générer le code après la phase de conception alors c'est différent. Omondo a décidé de faire un travail minimaliste sur ce sujet. On crée juste les squellettes des applications, je veux dire les classifiers et ont laisse les développeurs implémenter les attributs et méthodes d'implémentation dedans à la main. C'est limité mais ca permet de bien séparé le travail de chacun et surtout de garder les même Id UML durant tout le projet.
C'est très important car si itération entre code et modèle en phase botom up (je veux model vers code et après code refactorer par le développeur vers le model) ont garde la tracabilité. La génération de code à partir d'un XMI casse la logique entre le code et le modèle. Il faut donc généré soit en synchronisation permanente, soit si en conception juste les classifiers.
Si toutefois cela n'est pas un problème de cassé cette logique ont a inclus AndroMDA chez nous. Le problèlme d'Andro c'est qu'il est juste xmi 2.0 et donc ne marche pas avec les derniers standards de l'OMG. On a dû donc bidouiller. On a bidouiller "assez gravement" :oops: afin d'utliser Ecore pour avoir un modèle valide pour le framework AndroMDA qui prend la main sur l'xmi en mémoire pour généré le code. Mais Andro même si c'est sympa je pense que garder une Id unique pour couvrir les cycles des itérations est plus important. Mais bon chacun fait comme il veut:calim2:
Il semblerai que certe parti de génération de code intérésse, pensez-vous qu'il est bon de parler plus en détail de cela et de la validation du code ?