• [^] # Re: Du code vers le modèle?

    Posté par . En réponse à la dépêche Acceleo 2.2.0 : nouveaux générateurs PHP, Python et JEE. Évalué à 2.


    Ici le module de génération n'est pas une couche en plus mais bien un "assistant" pour aider à la maitrise de toutes ces couches (architectures n-tiers...) le modèle ne tient pas compte de ces choix qui sont techniques et reste centré sur les aspects fonctionnels, les objets métiers, les composants logiques...
    Le module s'occupe d'orchestrer les choix techniques, si la façon dont il les orchestre ne convient pas alors il est facile de re-définir uniquement la partie qui nous intéresse pour répondre à une problématique particulière.

    Je crois que la réalité n'est pas aussi simple.
    L'approche que tu préconises implique un maximum de génération automatique et de conventions implicites. La génération ne correspond pas tjs à des cas triviaux et souvent tu as besoin de t'inscrire dans un framework qui découpe ton architecture en couche. Tu dois aussi décider quelle classes vont persister dans ton SI et quelles autre sont en dehors de ton SI. Tu dois orienter la façon dont vont persister les informations (relations 1-n, ...) . Une génération en un coup n'est pas assez paramétrable et lorsque trop de code est géneré en un coup ceci devient opaque (effet boîte noire). Les sections de codes protégées ne suffisent plus pour assurer le dev incrémental. La solution est donc contrairement à ce que tu décris d'appliquer un modèle de marquage à ton modèle (profil UML) ou de passer par un modèle intermédiaire qui permet d'enrichir ton modèle avant transfomation (UML profilé ou DSL).
    On parle alors de transfo M2M (Model to Model) qui génère le modèle pivot intermédiaire et on lui applique une transformation M2T (Model to Text)pour cibler le code.
    Plusieurs transformations M2M peut être enchainées en amont si le besoin s'en fait ressentir.
    Je regrette qu'Acceleo malgré toutes ses qualités ne couvre pas le premier aspect . Tu as bien sûr la possibilité de le coupler avec ATL mais quelle est la viabilité de cette solution face à des solutions complète telle qu' OpenArchitectureware ou d'autres propriétaires telle que celle de MIA ou encore RSA.


    La génération de code rationnal rose par exemple est totalement à l'opposée de celle que l'on prône, typiquement avec rational la maintenance du modèle va être fastidieuse si l'on s'en sert pour
    générer car ce dernier va autant définir des éléments techniques que des éléments fonctionnels.

    Rose travaille encore avec UML 1.3 et ctte norme ne propose pas de profil (seulement des stéréotypes isolés) . Rational ne le maintient plus et propose aujourd'hui RSA.
    Il permet de mettre en oeuvre des transformations M2M qui ciblent soit de l'UML profilé soit de l'ecore. Les transformations M2T sont aussi couvertes avec du JET et un tooling proprio.

    Aujourd'hui on est assez loin de ce que tu décris parce que ce produit est en voie d'obsolescence