Acceleo 1.2

Posté par  (site web personnel) . Modéré par Nÿco.
Étiquettes :
0
12
jan.
2007
Technologie
L'équipe d'Acceleo est fière d'annoncer la sortie d'Acceleo 1.2 ! Le projet (un générateur automatique de code) a beaucoup évolué depuis la dernière livraison en octobre dernier. Ainsi cette version amène de nouvelles fonctionnalités, son lot de corrections de bugs mais elle marque aussi une plus grande participation de la communauté ainsi qu'une ouverture vers d'autres projets.

Voici un rapide aperçu des nouveautés :
  • Changement de licence, passage à la licence EPL
  • Une génération peut désormais être lancée au sein d'une tâche ANT (expérimental)
  • Nouveaux services d'indentation du code
  • Chaînes de lancement (.chain) paramétrables et possibilité d'appels de sous-chaînes
  • Compatibilité Mac OS X
Acceleo est désormais hébergé sur la plateforme ObjectWeb, ainsi les utilisateurs ont accès aux services suivant :
  • mailling lists :
    • acceleo-announce-fr@objectweb.org : les nouvelles et les annonces du projet
    • acceleo-users@objectweb.org : les discussions et problèmes rencontrés par les utilisateurs
    • acceleo-dev@objectweb.org : les discussions concernant le développement d'Acceleo

  • bug tracking
  • hébergement du code source via Subversion
  • téléchargement de bundles Eclipse complets


La mise en place de ces services facilite les contributions et nous avons ainsi vu arriver les premiers patchs.

À noter qu'Acceleo 1.2 marque un changement de licence, ainsi le projet passe de la licence GPL à la license EPL (Eclipse Public License). Cette dernière est très largement répandue au sein du monde Eclipse et l'intégration d'Acceleo avec d'autres projets est ainsi facilitée.

Les fonctionnalités apportées par cette version sont :

La possibilité de lancer une génération depuis une tâche Ant. Ainsi il est possible de générer le code correspondant à un modèle sans nécessiter d'interaction avec l'utilisateur via Eclipse en mode "headless".

Nouveaux services d'indentation. Acceleo fournit désormais un grand nombre de services (code Java spécifique) permettant à l'auteur d'un template de maîtriser l'indentation du code généré. Une documentation détaillant l'utilisation de ces services est disponible.

Acceleo 1.2 offre un certain nombre d'améliorations concernant le lancement des générations. Les fichiers de lancement (fichier .chain) sont désormais paramétrables et peuvent lancer d'autres fichiers de lancement.

Compatibilité Mac OS X. Une plateforme de plus ! Acceleo fonctionne désormais parfaitement sur Mac OS X.

Comme pour chaque livraison cette version corrige un certain nombre d'anomalies, à noter la réactivité exemplaire de l'équipe pour la correction du bug 306546, corrigé et livré le jour même de sa détection.

À noter également que l'équipe d'Acceleo sera représentée au salon Solution Linux 2007 et qu'une conférence détaillera la mise en oeuvre d'un démarche pragmatique d'industrialisation du développement à l'aide d'Acceleo.


Rappel : Acceleo permet de mettre en oeuvre une démarche dirigée par les modèles. Cette démarche positionne le modèle (UML par exemple) au centre du développement. Un modèle + un module et Acceleo est alors capable de générer une grande partie du code du projet.

Exemple : un modèle UML détaillant les objets métiers et les écrans permet la génération des classes métiers, d'une classe pour chaque écran, des contrôleurs, des classes d'accès à la base de donnée. À la charge ensuite au développeur de compléter le code, lors de la prochaine génération ce dernier ne sera pas perdu.

La mise au point d'un module de génération pour une technologie donnée (Zope, KDE, Gnome...) passe par la création de templates. Acceleo fournit tous les outils nécessaires à la mise au point d'un tel template (éditeur avec complétion syntaxique, pré-visualisation du code généré).

Aller plus loin

  • # A essayer absolument

    Posté par  (site web personnel) . Évalué à 5.

    Pour l'utiliser chez mon client, je peux témoigner de l'exprême simplicité d'Acceleo. C'est une approche très pragmatique et une très bonne intégration à Eclipse. Une étude faite dans ma SSII a également démontré la simplicité de cet outil face à la concurrence commerciale ou opensource (plus simple que MIA, plus puissante que JET).
    • [^] # Re: A essayer absolument

      Posté par  . Évalué à 5.

      Sauf que Acceleo ne permet que la génération de code alors que MIA Transformation permet aussi la transformation de modèles. Dans le domaine opensource, la seule offre comparable est à mon sens openarchitectureware (http://www.openarchitectureware.org/)
      • [^] # Re: A essayer absolument

        Posté par  . Évalué à 1.

        Je me posais la question à ce propos justement. Nous utilisons MIA, mais pas MIA Transformation, est-ce qu'il existe un chemin de migration réaliste entre ces outil ou bien est-ce que ça nécessite forcément de tout refaire from scratch ? En effet, nous utilisons MIA, mais nous ne serions pas contre une migration vers une solution libre comme Acceleo, car MIA est l'une des seules briques propriétaires qui subsistent dans nos outils de dev. Du moment que nous arrivons à avoir une "ISO fonctionnalité", c'est envisageable. Mais bon, c'est vrai qu'il faudrait que je teste vraiment Acceleo pour avoir une meilleure vision de ce que ça permet de faire :-).

        Je (re)précise ce qui m'intéressait :
        MIA Generation => Acceleo
        • [^] # Re: A essayer absolument

          Posté par  . Évalué à 2.

          J'ai bien peur que dans ce genre de migration, il faille reprendre tous les scripts étant donné que les langages de templating et certains concepts différent.
          Ensuite il faudrait voir ce que ca donne au niveua de réutilisation des script. Il se peut qu'il faille également reprendre toutes les chaînes d'exécutions si les paramètres diffèrent.
          Enfin quelque soit le metamodèle utilisé, MIA Generation définit des objets génériques dont hérite tous les concepts du métamodèle chargé. Si tu utilises les opérations de ces objets (ce qui est plus que probable) , il faut vérifier que l'architecture d'Acceleo soit identique ou que des services équivalent existent.

          Si tu approfondis le sujet, tiens nous au courant ca peut être utile à tous
      • [^] # Re: A essayer absolument

        Posté par  (site web personnel) . Évalué à 2.

        Pour ce qui est de la transformation de modèle Acceleo peut tout à fait être utilisé conjointement avec ATL par exemple.

        ATL est un langage de transformation développé par les chercheurs Français qui s'avère être le projet officiel d'Eclipse pour la transformation de modèles.


        http://www.sciences.univ-nantes.fr/lina/atl/ ATL et l'équipe ATLAS

        http://www.eclipse.org/m2m/atl/ ATL sur Eclipse
        • [^] # Re: A essayer absolument

          Posté par  . Évalué à 3.

          Ca a l'air interessant. Je vais regarder ca de plus près.
          Par contre la documentation sur ADT me parait plus que succinte (un guide d'install).
          Mon inquiètude concerne plus l'intégration entre ces 2 plugin.
          Y'a t'il des possibilités en utilisant la combinaison Acceleo+ADT
          - de browser les métamodèles graphiquement
          - d'élaborer simplement des chaines de production qui prennent en compte à la fois des transfo ATL et des genérations à partir d'Acceleo.
      • [^] # Re: A essayer absolument

        Posté par  (site web personnel) . Évalué à 2.

        Effectivement, Acceleo (Open Source) ne propose pas encore de fonctionnailités de transfo modele à modele (mais comme précisé plus bas, il est tout a fait compatible avec ATL). A noter qu'une approche DSM et non MDA scricte preconise une génération directe PIM-> code contrairement au DMA (PIM-> PSM -> code). Par conséquent, dans une approche DSM ou MDSD, les transfos M2M ne sont utiles que pour des reprises ou migrations de modeles (par exemple suite à un changement de leur meta-modele).
        En outre, pour les utilisateurs professionels, je conseille vivement de regarder Acceleo Pro Tracability (commercial) qui complete Acceleo Open source en ajoutant des fonctions permettant de tracer les relations entre le code et les modeles (diff de modeles, preview avant génération, tracabilité asymétrique modele-> n artéfacts ou artéfact-> element du modele...) qui s'avere extrémement payante en environnement industriel pour assurer une vraie démarche MDE (et éviter ainsi que les developpeurs débanchent la generation au bout de trois semaines, excedés par le fait de ne plus maitriser leur code).
        • [^] # Re: A essayer absolument

          Posté par  . Évalué à 2.


          En outre, pour les utilisateurs professionels, je conseille vivement de regarder Acceleo Pro Tracability (commercial) qui complete Acceleo Open source en ajoutant des fonctions permettant de tracer les relations entre le code et les modeles (diff de modeles, preview avant génération, tracabilité asymétrique modele-> n artéfacts ou artéfact-> element du modele...)...


          Est-ce que c'est comparable aux liens de transformation de MIA ?
          Si tel est le cas, c'est tellement indispensable que si ca n'est disponible que dans la version commerciale, ca relativise l'intêret d'avoir mis une partie de Acceleo en OpenSource.
          Merci de nous eclairer un peu sur cet aspect.
          Quel est votre Business Model à terme ?
          Offrir des versions bridées de votre outil en Open-source
          ou vous rémunérer sur les services autour de votre offre.

          Attention ce n'est pas une attaque.


          A noter qu'une approche DSM et non MDA scricte preconise une génération directe PIM-> code contrairement au DMA (PIM-> PSM -> code)
          Par conséquent, dans une approche DSM ou MDSD, les transfos M2M ne sont utiles que pour des reprises ou migrations de modeles (par exemple suite à un changement de leur meta-modele).

          Oui enfin la génération from scratch depuis un PIM, j'ai un peu du mal à y croire.
          Si on s'en tient à wikipédia, le DSM ( http://en.wikipedia.org/wiki/Domain-Specific_Modeling ) c'est la generation de code améliorée remise au goût du jour avec des standards et un peu plus de souplesse.
          Dans la réalité , il est parfois inévitable se fixer des étapes intermédiaires qui permettent d'obtenir des modèles basé sur des DSL et de permettre d'élaborer les modèles manuellement. Ca permet aussi d'anticiper des évolutions d'architecture.

          D'autre part, même si les transfo ne sont utiles que ponctuellement dasn une approche DSM, il est important qu'elle soient prises en compte dans le cadre d'un offre intégrée.
          openarchitectuware répond à ce besoin, qu'en est il de Acceleo/ADT ?

          Mais bon, je ne suis pas spécialiste de la question donc je dois sûrement dire une bétise.
          • [^] # Re: A essayer absolument

            Posté par  (site web personnel) . Évalué à 3.

            Avant tout, je tiens à préciser que je ne suis qu'un client d'OBEO (la société editrice d'Acceleo) et je les laisserai donc répondre en ce qui concerne le business model.
            En terme de transfos M2M avec Acceleo + ADT, j'avoue ne pas avoir encore tenté l'aventure et il est probable openarchitectureware que je ne connais pas est mieux intégré, d'autant que c'est un produit poussant à l'approche MDA academique (corrigez moi si je dis une bétise) et donc les transfos de modele.
            Coté tracability, il est en effet dommage qu'il ne soit pas (encore) Open source mais il faut bien une source de revenu et un produit differentiant (en plus d'acceleo open source). Je trouve ce modele économique sain et assurant la perenité de la société.
            Enfin (dans le desordre), il est tout à fait possible de generer directement des PIM avec GMF et sans passage par des etapes intermediaires (voir les exemples/tutos GMF pour des exemples certes théoriques)
          • [^] # Re: A essayer absolument

            Posté par  (site web personnel) . Évalué à 2.

            La traçabilité permet de contrôler à posteriori que le code généré puis modifié à la main n'est pas en incohérence avec les modèles ou les templates de génération.

            Acceleo n'est pas une version bridée de la version pro. Concrètement Acceleo est un générateur de code qui fonctionne très bien tout seul, il comprend le runtime (qui permet d'exécuter des générations) et tout l'environnement de développement de modules qui permet de construire ses propres modules de génération.
            Les fonctionnalités supplémentaires offertes par la version pro sont particulièrement pertinentes lors de la réalisation de projets volumineux utilisant donc des modèles conséquents (une centaine de classes par exemple..) et particulièrement sensibles lors d'une utilisation concurrente. En terme de génération de code la couverture fonctionnelle est similaire, c'est l'intégration et la gestion du travail en équipe qui est l'atout principal de la version pro. La version Pro s'adresse donc plutôt au professionnels qui passent à l'échelle avec l'approche MDA.

            Notre business model est orienté plutôt service mais aussi édition. Notre rôle est d'abord d'apporter notre savoir faire autour des approches modèles pour aider les entreprises à gagner en productivité. Nous proposons donc des prestations de conseil, des formations autour du MDA et d'Acceleo ou de technologies Eclipse (EMF, GMF...) et des des adaptations sur mesure d'outils orientés modèles. Nous travaillons aussi beaucoup à la création d'une dynamique autour de l'outil Open-Source; ce dernier permet de mettre en oeuvre la démarche de manière efficace. Et nous proposons aussi des choses complémentaires à l'approche service : des modeleurs spécifiques, des modules de génération "clefs en main" et la traçabilité.

            J'espère que cela réponds à la question !
      • [^] # Re: A essayer absolument

        Posté par  (site web personnel) . Évalué à 0.

        Effectivement, Acceleo (Open Source) ne propose pas encore de fonctionnailités de transfo modele à modele (mais comme précisé plus bas, il est tout a fait compatible avec ATL). A noter qu'une approche DSM et non MDA scricte preconise une génération directe PIM-> code contrairement au DMA (PIM-> PSM -> code). Par conséquent, dans une approche DSM ou MDSD, les transfos M2M ne sont utiles que pour des reprises ou migrations de modeles (par exemple suite à un changement de leur meta-modele).
        En outre, pour les utilisateurs professionels, je conseille vivement de regarder Acceleo Pro Tracability (propriétaire) qui complete Acceleo Open source en ajoutant des fonctions permettant de tracer les relations entre le code et les modeles (diff de modeles, preview avant generation, tracabilité asymétrique modele-> n artéfacts ou artéfact-> élément du modele...) qui s'avère extrement payante en environnement industriel pour assurer une vraie demarche MDE (et eviter ainsi que les developpeurs debanchent la génération au bout de trois semaines, excedés par le fait de ne plus maitriser leur code).
  • # Langage supporté ?

    Posté par  (site web personnel) . Évalué à 4.

    Quel sont les langages supportés de base ? J'ai bien compris qu'il était possible d'étendre Acceleo mais de base, quels sont les langages supportés à part java ?
    • [^] # Re: Langage supporté ?

      Posté par  (site web personnel) . Évalué à 2.

      Il faut bien distinguer deux choses : les langages permettant de compléter la syntaxe des templates de génération, et les langages qu'il est possible de générer.

      Il est possible actuellement d'ajouter du code Java que l'on appelle directement du template lors de la génération. Grâces aux projets tels que Jython ou Jruby il doit être possible d'utiliser ces langages également, à tester donc :)

      Pour ce qui est du code généré il n'y a aucune limite. Le système étant basé sur des templates on peut aussi bien générer du Java que du Python ou du C, il suffit de faire les templates et l'outil offrant tous les éditeurs nécessaires la difficulté de réalisation des templates est très faible.

      Il est vrai que les modules (ensemble de template) fournis à titre d'exemple sont orientés Java mais d'autres projets existent ou démarrent pour d'autres langages/technologies.
    • [^] # Re: Langage supporté ?

      Posté par  (site web personnel) . Évalué à 2.

      Pour compléter ma réponse précédente, j'ajouterai qu' actuellement Acceleo est fourni avec deux exemples de génération qui
      concernent Java (Servlet + DAO) et Xhtml.

      Mais l'équipe Acceleo est en train d'initier un ensemble de projets
      complémentaires à Acceleo qui visent à proposer à la communauté un
      ensemble de modules de génération par défaut. Pour l'instant, nous avons recueilli des proposition pour Php, .Net, JEE, et Python entre autre.

      La mise en place de ces modules devrait intervenir fin janvier ou février.
      Toute personne intéressée pour participer à la constitution de ces
      modules est la bienvenue !

      Par ailleurs la société Obeo commercialise quelques modules pour JEE, .Net, Php et eclipse RCP.

Suivre le flux des commentaires

Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.