Planet Acceleo

Planet Acceleo is an agregation of Acceleo and modules repository developers. You may syndicate it using this RSS feed

July 01, 2008

Icon set for post-ganymede version of Eclipse SCA

Hi,

I just work on some new icons for Eclipse SCA project.
I need some comments to choose which one need to be removed or changed.

On my point of view, it will be nicer than the v1.0 version because it will better fit Eclipse UI and icons style.

New global palette:

SCA Bindings:

SCA Implementations:

SCA Interfaces:


The new tree Editor:
The graphical Designer isn't ready because it uses old style for embedded icons.
For comment, you can use this bug report.

by Etienne Juliot (noreply@blogger.com) at July 01, 2008 11:01 AM

June 28, 2008

Eclipse 3.4 Ganymede: News and Noteworthy by projects

Eclipse Ganymede has just been released.

Here are list of new features of modeling projects:



There are other projects (like Jet, QVT-O, ...) but there haven't a News and Noteworthy page.

by Etienne Juliot (noreply@blogger.com) at June 28, 2008 03:57 PM

June 25, 2008

Gany is here !

Ganymede sattellite

Ganymede has just been released ! You’ll find the modeling bundle (with EMF, GMF, ATL, EMF Compare and many other good stuffs ) on the Obeo distro web page . The Eclipse.org server is suffering so don’t hesitate to use our mirror :)

Another bundle will be built providing Acceleo and Topcased as soon as the Ganymede compatibility is checked for these projects :)

Yet another good news : the modules repository is now hosting 3 more modules generating Java, C and Dolibarr/PHP code from UML2 models ! Stay tuned for more information :)

by Cédric at June 25, 2008 02:41 PM

June 19, 2008

ATL 2

ATL v2 will be release very soon.
ATL is a model transformation engine based on MDA standard and Eclipse platform.
It can used for:
- interoperability between tools
- translate a model from a notation to another (for example: relational to uml)
- propose "different zooms" on a model (for example: global specification -> detailled specification -> global design -> ...)
- create any kind of bridge (for example: BPMN -> BPEL or BPMN -> SCA)

ATL 2 is provide some new exciting features:
- better completion on model elements
- virtual machin based on EMF
- better performance
- lots of bug fixes
- a clean updatesite
- integration inside Ganymede (Eclipse 3.4)
- and a new commercial support on http://www.atl-pro.com


See News and Noteworthy for more detail on ATL 2.

by Etienne Juliot (noreply@blogger.com) at June 19, 2008 11:15 AM

June 17, 2008

MOF Template Language : “hello Eclipse world!”

As I said in my last post, the MTL component within the “Model To Text” project is getting in shape, and Laurent just told me that he generated his first file !

Here is the model :

UML2 model

Here the template (for test purpose, not a real world one :) ) :

MTL basic template for Java interface

And the generated file :

Java code generated from the UML model

That means we’re still aiming at an initial release providing the core features for this summer. Jonathan even worked a bit on the editor (which is a bonus as it was not really planned :) )

It’s still really rough as the MTL library defining services like toUpperFirst() is not done yet, so the template is far less readable than what it will really be at some point. The whole “p.name.substring(1, 1).toUpper().concat(p.name.substring(2, p.name.size()))” will get replaced by a simpler “p.name.toUpperFirst()” but you can see that the OCL support is already pretty good thanks to the MDT-OCL plugin.

Stay tuned for the core release this summer, and the full featured one which is coming after !

by Cédric at June 17, 2008 04:00 PM

June 13, 2008

Chocolate Bribery

Many dark and nasty things are happening with the Ganymede release, and one of them is a new tendency to bribe other projects.

It may have started with chocolate commits, and now it’s becoming so usual that even the mailling lists starts to be filled with requests of compensations.

Lately the STP project has been one of the victim of a ransom request.

At least it’s now cleared for the SCA project as Stéphane arrived this morning with a nice chocolate box for the modeling guys here at Obeo :)

Stephane offering chocolates in the name of STP

Still 7 components in STP to go !

by Cédric at June 13, 2008 08:22 AM

June 12, 2008

Eclipse SCA 1.0

After one year of work, Eclipse SCA 1.0 is ready.

This is a new project of Eclipse STP (Soa Tool Platform) for assembly of SOA applications.
To understand the goal of SCA standard (Service Component Architecture, available here), the easiest way is to use an example:
you have one GUI component (for exemple, C# based) named "A" and it need to communicate with one business component "B" write EJB and Java and with another external component "C" written in PHP and only accessible with WebService. With SCA, you just need to declare each component, a reference (required interface) on A (declare with C# interface), and two services on B and C.
The SCA server will automaticly translate protocols and API language to ensure everybody can communicate with everybody.
In a nutshell, SCA isn't a new middleware (it rely on existing middlewares or libraries). It's like Spring, but as a specification and for any protocols and languages.


The main feature of Eclipse SCA project is a nice designer. It's used color and shape very similar of official specification and it's based on GMF. I'm one of the commiters team of this project and the leader is Stephane Drapeau.

It will be bundle inside Ganymede (Eclipse 3.4).
You can test it and read this nice tutorial.

by Etienne Juliot (noreply@blogger.com) at June 12, 2008 04:20 PM

June 10, 2008

No change will go unnoticed

I know you wither away, like a leaf in the darkness of the chilly nights without my posts. Life has been busy with the Ganymede train and work kept going on under the cover. The Ganymede journey is almost over now and many good products are part of this release. Many feedback were given from the newsgroup meaning many more bugs/issues to fix. Thanks to all of you ! The journey was a long one but we’re seeing the benefits now.

Desert

Just like a californian flower ready to bloom EMF Compare is maturing, more stable than ever and is part of the great Ganymede modeling package.

Californian Flower

No more headeaches installing all the nice modeling tools from the community, the developper’s heaven is just one click away ! Next step will be the graduation from incubation status which is planned for the “post” 0.8.0 release.

Nature never give up and reappears in unexpected areas, so do open source projects ! MTL is a great example of that and is reviving now.

Desert Lizard

We are trying to spot every litle mistake in the OMG specification so that we ends up with a nice, pragmatic and efficient implementation, just like we are used to provide to end users ! For people not having heard about MTL, this is a component from the “Model To Text” project which is providing an implementation for the OMG specified “MOF Template Language”. The Eclipse community was missing a standard implementation for M2T so we provided a relaunch plan for this component and now it’s getting in shape :)

Another great news: Obeo is now a strategic member of the Eclipse foundation ! As 100% of what we do is based on Eclipse it just make sense to be active in that area. And the people we met so far are so nice that we can only hope to meet the others!

Sun

Exciting stuffs at work too and many projects to follow, in my great helpness I’ll give you one of my brand new trick to keep an eye on everything. As source code matter let’s use the repository information and transform that in nice and readable changelog. A wise man said “no change will go unnoticed” , this “dark lord-like” power may now be yours !
So here it is, a quick’n dirty python script (did I say Python was great ? ;) ). This script transforms CVS or SVN logs in an RSS feed so that you can track the commits in the project repositories. You can even specify an URL
pattern for your bugzilla/trac account and then every #BugNumber or [BugNumber] in the commit message will be changed in a nice link !

here is the command line for the Acceleo repository:

svn log -v –xml –limit 100 svn://svn.forge.objectweb.org/svnroot/acceleo | ./teamlog2rss.py ‘http://forge.objectweb.org/tracker/index.php?func=detail&aid=\g1>&group_id=273&atid=350389′ > rss/acceleo.xml

For a CVS repository you’ll need a first call to the cvs2cl command

cvs -q -d “:pserver:anonymous@dev.eclipse.org:/cvsroot/modeling” rlog -d `date –date ‘1 week ago’ +”>%Y-%m-%d”` org.eclipse.emf/org.eclipse.emf.compare/plugins | ./cvs2cl –xml –stdin –rcs /cvsroot/modeling/org.eclipse.emf/org.eclipse.emf.compare/plugins
cat ChangeLog| ./teamlog2rss.py ‘https://bugs.eclipse.org/bugs/show_bug.cgi?id=\g1>‘> rss/compare.xml

As a change never come alone, here comes a shot of my brand new desktop re-using this nice script :)

OpenSuse 11 RC1  desktop with KDE4

And here is the script.

by Cédric at June 10, 2008 03:29 PM

June 06, 2008

SpringOne 2008 coming soon ...

SpringOne 2008

SpringOne coming soon, I'm impatient!

I made a first difficult choice because there is many interesting topics :

  • Day One
    • Keynote by Rod Johnson
    • Spring 2.5 on the Way to 3.0 by Juergen Hoeller
    • OSGi Programming Model by Adrian Colyer
    • Spring Dynamic Modules for OSGi by Costin Leau
    • Five Aspects You Don't Know About by Alef Arendsen
    • Enterprise Integration Patterns with Spring by Mark Fisher
  • Day Two
    • Keynote by Adrian Colyer
    • Introduction to the Springsource Application Platform by Andy Wilkinson
    • Applying the Spring Frameworks for Model-Driven Architecture by Jan Ypma
    • Inside SpringSource Application Platform by Rob Harrop
    • Classloading in OSGi by Frederik Santens or JavaServerFaces - The Biggest Loser of Java Web Frameworks? by Jeremy Grelle
    • Spring Architecture and Best Practices by Eberhard Wolff or Spring Web Flow 2.0 Deep Dive by Keith Donald

The "Applying the Spring Frameworks for Model-Driven Architecture" session will provide an opportunity to exchange around the Spring Acceleo module :-)

by Jérôme at June 06, 2008 10:37 AM

May 28, 2008

Plone3 & Acceleo, the first step


I have work some hours on a simple plone2.5 code generator with Acceleo. It is available on the acceleo svn:

svn checkout svn://svn.forge.objectweb.org/svnroot/acceleo/trunk/modules/community/uml21/zope/plone/25/org.acceleo.module.pim.uml21.plone25/trunk

This code generator is not finished, but the way of doing is good enought to start the plone3 one. I would like here to explain the purpose of the Acceleo Generator for Plone3 i want to make.I will first explain the problems i have with ArchgenXML.

What i don’t like in AGX:

  • The license in each source file (i prefer just a license.txt file)
  • The billion tagged values (i have lost hours here)
  • The generated code itself doesn’t look like with the code i would have produced.
  • The command line
  • ArgoUML
  • All the hacks done every where to make the code compatible with two versions of Plone
  • You can’t modify a line of code generated without lost it if you re-generate your code

What i like in AGX:

  • The way you use UML (copy the model, and then do a simple class diagram, it s up)
  • The i18nized schema generated with po files
  • The generated tests
  • It works on all well known OS (linux, macos, windows)
  • Lots of documentation
  • The user code slots well thought.

For sure i want to keep all that good point for the project. So the overview of what i want:

  • Easy to install and to use
  • Running on most OS known
  • Code template easy to customize (making multiple branches of my own templates)
  • Do not generate 100% of the code by working hours in your UML diagrams
  • Be able to get an existing UML and generate only what you want

An other point: generate something only if it save your time. The best example i have is tagged values from AGX, like Searchable = 1. One tagged value for one line of code !A first advice from Cédric Brun (obeo) is to don’t fall in the modelisation of the code itself. For example doing an UML component to generate a zope component (BrowserView, adapter, …). In that case you will lost a lot of time in doing you UML diagram, and be obliged to add stereotypes (adapter, …). So to follow this advice, i have think about the idea of using Component diagram from UML, and i finally don’t want to use it, cause for me an UML component is not equal to a zope component. A UML component can be more seen as an egg. I need to think a bit more about that point, but that could be a great aspect to zope code generation.

Would we need to ‘model’ workflow and generate them according to a state diagram ? Here the point is a bit more complex. In fact you know that you need to make them to explain to your customers the need of specify workflows by UML. But the permission system in zope is specific to it, and the state diagram is not suppose to support this (in AGX we use tagged value one more time). And since we use GenericSetup to specify workflow now, the time saved by doing the state diagram for your workflow is negative. So i think we will just generate the state, but not the permissions associated, that are often explain with the diagram in a documentation. But i would like to generate the test associated with workflows. There were a good conference at Naple on that point.

Next, do we force the use of stereotypes to generate stuff or do we do as with AGX, and so force the use of ’stub’ stereotype to indicate the generator that this class is not a content type to generate. I personally prefer the first option. In that way you can take an existing UML diagram, load the plone3 profile, and said this package is an egg, this class is a ATContentType.

Well, a good demo package to do is the case of the Martin Aspeli ’s book.

Next time i will publish the UML from what i want the martin’s code to be generated.

by toutpt at May 28, 2008 07:14 AM

April 14, 2008

Acceleo 2.2.1 Maintenance release

Hi Acceleo Team !

A maintenance release of Acceleo has been deployed on the web site, it’s
providing fixes for many tiny bugs. Nothing new in the codebase except those
bugfixes then, though the bundles are now “pure EPL” as it’s been often
requested by users.

That mean that since now the Acceleo “ready to use” bundles only includes EPL
licensed generators but the modules update-site is configured in the bundle
and installing the GPL ones is a few clicks away throught the update manager.

Congrats for all the work going on both in the core and in the modules, next
step is the 3.0 release providing Eclipse 3.4 support and “standalone” mode,
let’s make it the best Acceleo release ever !

Keep up the good work !

Cédric

by Cédric at April 14, 2008 12:13 PM

April 02, 2008

Apache Virtualhost generator

Currently I've not much time to work on Wisss :-( However, I will make a tiny dsl and generator to have a virtualhost file generated (independent from Wisss, which already generate a vhost). I've already done this with a shell script but it will be more powerful and easy to ...

April 02, 2008 12:08 PM

March 26, 2008

JEE-Spring Acceleo Module Screencast

I created four screencast about last enhancements in JEE-Spring Acceleo Module :

  • Here you can discover how to create an empty project based on Maven directory layout. It contains a default UML model with Acceleo Business Profile already applied, and an Ivy configuration file used to define required dependencies.

You must install my IvyDE and JEE Acceleo Module snapshots from this update-site. And you must add ivysettings.xml in your home directory and define reference in Ivy eclipse preferences.

  • Here You can learn how to use JEE-Spring Acceleo Module in order to generate java source code, unit test, spring and hibernate configuration files. This target server platform is based on Spring Framework, Hibernate and the Hessian Remoting protocol.
  • Here How to develop unit tests and fill user code blocks :)

by Jérôme at March 26, 2008 05:12 PM

March 25, 2008

Amazing forest

Open-source projets are similar to tree in some ways. They are living through time and slowly but steadily growing, being much and much impressive and at some point far bigger than what people expected from the beginning.

But they face aggressions from diseases, insects, industrial limber and are even in competition to get the needed piece of sun not to collapse. The license act as a protection concerning all these attacks, following the example of the Sequoïa’s tanin, the GPL protects the project from massive industrial exploitation without couterparts, and even if the people changes, the tree keeps groing up.

But even big trees may fall if the roots are not deep enough, and like the sequoïas we would not even know the tree has fallen as the tanin keeps it alive for hundred years on the ground.

So, what kind of roots do we want now?

by Cédric at March 25, 2008 02:24 PM

March 19, 2008

Hi from Santa Clara - CA !

Since a few days we’ve been hanging in California for the great and fun EclipseCon meeting. The event is great and the modeling ecosystem is really lively there, discussions are always interesting and the whole organization is perfect.
EclipseCon at Santa Clara Convention Center

After a few airport/flight adventures we arrived at San Francisco and looked for a nice place to open the OBEO San Francisco offices. We think we found it :

Nice Spot for OBEO San Francisco Offices

Then EclipseCon started, the team is ready and almost no “jetlag” is sensible :
OBEO team waking up

Then attended the great talks, here is Ed speaking about diversity in the Eclipse projects and speaking about our team as an excellent example of peoples and organization joining the Modeling Project.

Ed talk

It’s also a great place to have a drink with “Modeling friends” as you may have noticed.

by Cédric at March 19, 2008 05:51 PM

March 06, 2008

View dependency graph with IvyDE

At the moment I am working on a new eclipse project creation wizard to facilitate collaborative development of business services. The goal is provide a default project layout, with basic UML model, and pre-configured build system. I use Topcased for UML modeling and the JEE Spring Acceleo module to generate source code.

And I'm interesting to configure a dependency manager. But i'm not really satisfied by Maven, because is too unstable... (I plan to explain my point of view in another post)

Thus, I began to explore several alternatives. I think I will go on a solution based on Apache Ivy!

Indeed, after reading and testing EasyAnt Proof Of Concept, here I am fan. I advise you to read the following post on Xavier's Weblog, the creator of Ivy.

I like Ivy because it is easy to use and very powerful, and it provides a plug eclipse IvyDE which is really nice and very practical!

Tonight, I decided to make a modest participation in the project by creating a dependency view that allows you to view the dependencies graph. I was inspired by source code of the Q4E Maven plugin. I discovered the Eclipse Zest Apis, it's a marvel to make layouting, the result below :-)

ivyDE-dependencyGraph.png

by Jérôme at March 06, 2008 11:13 PM

March 03, 2008

Modeling Fame

Beware californian sun, I’m comming !

I'm speaking at EclipseCon 2008

I’ll give a short talk about EMF compare but will also take part in many nice modeling events, the BOF session being one among many.

Thanks to my boss to let me and my colleagues joins the Eclipse big party, hey Nick, I may offer you the beers I owe you since a long time now, no need for beer to peer.

I would be glad to meet any people interested in comparison, merge and modeling stuffs in general as this major event really is the best place for such discussions :)

Speaking about fame, one of the most popular french magazine published a whole 3 pages article about the EMF compare component in it’s special issue aimed at opensource and model driven development.
Obviously Acceleo also has its place in this issue with a nice article about Spring generation written by Jérôme.

Speaking about M2T transformations, people from IRC might already have seen it, a blog entry is getting prepared with action, feelings, modeling and of course Python. I’ll just tease a bit :

Other publications are in the pipes concerning model comparison and merge in the research side, co-authored with Alfonso from the Aquila University. More information about that later ;)

New from the development front : lately we’ve been in the process of stabilizing and redefining the API in the places we though were quite crappy. Expect some changes with the next builds but we are getting everything documented and explained to avoid the “you broke all my tool” effect :) . That’s right, the comparison component is now used by other tools, mostly for non-regression testing of modeling tools. At work we use it a lot for our products, and the ATL component in the Eclipse world also uses it so that any change in the way model are transformed is detected with the test suite.

Everything is moving fast, both in the Eclipse and in the modeling world in general, sorry for having been a bit too quiet lately, but I have more entries almost ready for the “publish” button ;)

by Cédric at March 03, 2008 10:53 AM

February 18, 2008

MDA for alfresco, Meta-Model for ECM


Today i attended to a conference about Alfresco and MDA by BlueXML. What i have discovered is a set of softwares done with Eclipse and Acceleo to generate an Alfresco project (configure the portal, make content types, …). I have been really interested in the fact they have done a new meta model derivated from UML to model an ECM project and also a GUI modeler associated with this meta-model.

That means the meta-model can also be used for Plone3. For example configuring Plone, by creating group of user, permissions, workflows, … would be stuff available if we use it. But firstly i need to test it to validate the usability of this meta model and of the modeler. All is available at BlueXML home site.

by toutpt at February 18, 2008 06:49 PM

January 11, 2008

Acceleo 2.2.0 is out!

At last everything is online on the website and the Big ball modules repository is available !

I hope users will have as fun using it as we had fun building it, new features are described on the new and noteworthy page, and the Eclipse bundles have been updated.

Congratulation to the many people involved both in the core generator and in the modules repository, and to the bug and wishes reporters, keep up the good work !

by Cédric at January 11, 2008 04:02 PM

January 10, 2008

JEE-Spring Acceleo Module [EN]

I'm proud to announce the first official release of Acceleo module generator for "Spring Framework". It is available with the latest version of Acceleo 2.2.

The "JEE / Spring" Acceleo module uses UML2 models with stereotypes in order to generate applications based on the Spring Framework.

It generates applications with multi-tiers architecture with the following layers:

  • User Interface layer
  • Data Transfert Objects layer
  • Business Services layer
  • Data Acces Objects layer


Presentation of the target technology:

Spring is a lightweight container, which provides similar infrastructure than the Java EE platform. It provides the ability to create / instanciate objects and manage their dependencies. The major advantage of this approach is the possibility to exclusively use POJO (Plain Old Java Objects, objects without any reference of specifics Java interfaces). It also offers the ability to realize loosely coupled between all application layers by using together the dependency injection and the programming with interface. Several features such as security or transactions can be declaratively specified in the XML configuration file, ... Even with the new features of the version 2 of Spring, the major drawback of this framework is the usage of XML files in order to specify dependencies. These files, seems sometimes to be complex to write and maintain.

Hibernate Hibernate is a framework used with the Java EE platform to manage object / relational mapping. This paradigm defines how to persist objects in a relational database.



Modeling :


The JavaEE-Spring generator allows to use UML 2.1 models with specifics stereotypes in order to identify artefacts of the different application layers. You must use a modeler supporting by this standard. Topcased is this kind of this tool and The Acceleo website provides a bundle containing Acceleo and Topcased.

Simplified Architecture

SpringModule

The figure above shows the stereotypes that would specify a semantic on UML elements. According to the Java EE architecture, various stereotypes are provided:

  • The <<Entity>> stereotype applies on business domain classes;
  • The <<Dao>> stereotype applies on data access classes and, it provides read and write methods for business entities;
  • The <<Service>> stereotype applies on business service classes;
  • The <<Transactional>> stereotype applies on operations of business services in order to specify transactional aspect. Both properties: "isolation" and "propagation" can be use to define the transaction strategy;
  • The <<Remote>> stereotype applies on business services operations in order to publish as Web Service;
  • The <<Dto>> stereotype applies on data transfert objects classes, often used as return parameter operation of business service.


Features generator


In service layer:
  • Generate all Spring configuration files
  • Easy to use data transfert object in order to provide mediation layer
  • Transaction Management with aspect-oriented programming
  • Lazy loading support for all objects in the same transaction (design pattern "ThreadLocal Session")
  • Can publish operation of business service as a Web service using XFire
  • JUnit tests
In persistence layer:

The generator applies Hibernate best practices to provide a better productivity and great performance.

Easy browsing on business objects

  • Subclassing
  • 1-1, 1-*, *-* associations
  • Unidirectional and bidirectional navigability
  • Optimisations
  • Usage of POJOs

Relational Mapping

  • Cache handling on persisted data
  • 3NF SQL
  • Integrity constraints
  • Concurrent accesses
  • Technical identifier

Date access layer

  • No dependency between DTOs and Hibernate
  • Advanced search methods
  • Transaction handling
  • JUnit tests


Demonstration :

The installation of generator is detailed on the pages installation of modules.

Install the demonstration project using the menu "Project ..", then select "JEE-Spring Demo" from the menu "Examples / Acceleo

demo-1

The wizard creates a new project "org.acceleo.sample.demo.spring" in your workspace.

  • The directory src contains the generated sources;
  • The directory resources contains spring and hibernate configurations files;
  • The directory tests contains unit tests;
  • The directory lib contains required libraries;
  • The directory model contains :
    • The files conception.uml and conception.umldi are the application model;
    • The files profile.uml and profile.umldi are UML profile used to extend UML and handle the generation process;
  • The file spring.chain used to launch generation process;
  • The file spring.properties used to specify generation properties;

demo-2

The conception.umldi model described below:

  • The <<Entity>> Product defines the concept of products, it contains the properties name and color,
  • The <<Dao>> ProductsDao is responsible for reading and updating of product objects. The DAOs systematically implements CRUD (Create-Read-Update-Delete) methods. Thus you should not model these methods. However, it is possible to add operations such asfindProductByColor;
  • The <<Service>> ProductsServices contains the following operations:
    • getListOfProducts : returns the list of all products;
    • getProduct : returns one product from given identifier. As this method is <<Remote>> and will be published as a Web service;
    • addProduct : addes given product. This method is <<Transactional>>, if an error occured the database will not be updated and will be therefore incorporates;
    • updateProduct : updates a given product;
    • removeProduct : deletes a given product;

The Dependencies modelled means:

  • From <<Service>> to <<Dao>> : the <<Dao>> object must be injected in service object.
  • From <<Dao>> to <<Entity>> : the <<Dao>> must be responsible for managing the dependent <<Entity>>.

demo-3

Some examples of generated files:
  • The file src/org/acceleo/sample/demo/spring/services/I_ProductsServices.java is the Java interface of service:

demo-4

  • The file src/org/acceleo/sample/demo/spring/services/I_ProductsServicesWebService.java is the Java interface of Web service and publishes only operations stereotypes with the <<Remote>> stereotype;

demo-5

  • The file src/org/acceleo/sample/demo/spring/services/impl/ProductsServicesImpl.java is the Java class of service which implements both interfaces of service:

demo-6

  • The file resources/META-INF/spring/component.xml is the main Spring configuration file. It includes configuration files used by all application layers:

demo-7.png

  • The file resources/META-INF/spring/org.acceleo.sample.demo.spring/layer-services.xml is the Spring configuration file used to describe beans of business services layer:

demo-8.png


It remains to be done & Contribute! :

by Jérôme at January 10, 2008 12:16 PM

January 09, 2008

Teaching domain specific modeling with games..

Teaching and showing the nice prospectives of using domain specific models is quite tricky some time. You need to show in only a few hours how specific metamodels can become quite handy at some point in comparison with UML. The issue is that if you ask the students to design their own metamodel you need to find a simple concern, and then most of the time you get, at the end, something really similar to Ecore or “lite UML class diagram”.

Posts by David Bosschaert inspired me and lately I experienced a new subject : “Design a metamodel aimed at games.” and more especially textual adventure games. The metamodel you get is quite simple but is quickly far from any UML diagram. This is quite inspiring for students as well as they experienced more with games than with “real world software code base”.

Adventure's game ecore

Then the students design their own game using their own metamodel, and then write a model 2 text transformation to generate the corresponding Java code. They learn how they can allow changes on the generated artefacts using user code tags or how to use template re-definition.

Template re-definition

And then they get a quite simple game made of println they can extends with user code.

Running a game

Some of them add enough motivation to start a “Yet Another Final Fantasy” and add many specific concepts in their meta-model to provide a better game.

by Cédric at January 09, 2008 11:33 AM

January 08, 2008

Module Acceleo JEE-Spring [FR]

J'ai le plaisir de vous annoncer la première version officielle du module de génération Acceleo pour "Spring Framework". Il est disponible avec la toute nouvelle version d'Acceleo 2.2.

Le module Acceleo "JEE/Spring" se base sur une modélisation UML2 stéréotypée afin de générer des applications basée sur le socle technique Spring.

Il génère des applications respectant une architecture en couches :

  • Interface utilisateur
  • Objets de transferts
  • Services métiers
  • Accès au données


Présentation de la cible technique :

Spring est un conteneur dit « léger », c'est-à-dire une infrastructure similaire à un serveur d'application JEE. Il assure la logique de création des objets et la gestion leurs dépendances. L'intérêt majeur d'un tel conteneur réside essentiellement dans la possibilité de n'utiliser exclusivement que des POJO (objets java simple n'implémentant aucunes interfaces spécifiques). Il offre aussi la possibilité de réaliser un coupable faible entre les couches applicatives avec le programmation par interface tout en permettant de spécifier des traitements par déclaration au niveau de l'assemblage des dépendances; traitements tels que la sécurité, les transactions,... L'inconvénient majeur souvent avançé par ses détracteurs reste néanmoins l'utilisation de fichiers XML parfois complexes à maintenir afin de définir les dépendances.

Hibernate est un framework utilisable avec la plateforme JEE et permettant de gérer le mapping objet / relationnel, paradigme consistant à persister des objets dans une base de données relationelle.

Modélisation :


Le générateur JEE-Spring permet l'exploitation de modèles UML 2.1 enrichis d'un certain nombre de stéréotypes spécifiques et correspondant aux couches applicatives. Vous devez utiliser un modeleur compatible avec cette norme, Topcased correspondant à un outil de ce type et étant fournit avec la version bundle d'Acceleo.

Schéma d'architecture simplifié

SpringModule

La figure ci-dessus illustre les stéréotypes permettant de définir une sémantique particulière aux éléments UML. Dans le contexte d'architecture JEE, sont mis à disposition les différents stéréotypes suivants :

  • Le stéréotype <<Entity>> s'applique aux classes du domaine métier;
  • Le stéréotype <<Dao>> s'applique aux classes d'accès aux données implémentant la logique de sauvegarde et de restauration des entités du domaine;
  • Le stéréotype <<Service>> s'applique aux classes dîtes service métier ou encore traitement métier;
  • Le stéréotype <<Transactionnal>> s'applique aux opérations des services métiers afin de leur spécifier un comportement transactionnel. Les deux propriétés "isolation" et "propagation" sont offertes afin de préciser la stratégie de gestions des transactions;
  • Le stéréotype <<Remote>> s'applique aux opérations des services métiers afin de les exposer en tant que service web;
  • Le stéréotype <<Dto>> s'applique aux classes de transferts de données souvent utilisées en tant que paramètres de retour des méthodes de services.


Fonctionnalités du générateur


Au niveau de la couche de service :
  • Génération de l'ensemble des fichiers de configuration Spring
  • Possibilité d'utiliser des objets de transferts afin de constituer une couche de médiation
  • Gestion des transactions avec la programmation orientée aspect
  • Chargement paresseux des objets tout au long d'une même transaction (patron de conception "ThreadLocal Session")
  • Support de l'exposition de méthodes de services en tant que service Web à l'aide de l'outil XFire
  • Tests JUnit
Au niveau de la persistance :

Le générateur intègre les meilleures pratiques Hibernate afin de fournir une meilleure productivité et des performances optimales.

Navigation transparente entre les objets métiers

  • Héritage
  • Associations 1-1, 1-*, *-*
  • Navigabilité unidirectionnelle et bidirectionnelle
  • Optimisations
  • Utilisation de simples fichiers Java de type POJO

Mapping vers la base de données

  • Gestion du cache sur les données persistées
  • SQL en 3NF
  • Contraintes d'intégrité
  • Concurrence d'accès
  • Clef technique

Couche d'accès applicatif sur les données DAO

  • Couche dédiée à l'accès aux données et au requêtage
  • Pas de dépendance directe entre les objets métiers et Hibernate
  • Méthodes de recherche évoluées
  • Gestion des transactions
  • Tests JUnit


Démonstration :

L'installation du générateur est détaillée sur la page d'installation des modules.

Installez le projet de démonstration à l'aide du menu "Project ..", puis sélectionnez "JEE-Spring Demo" dans le menu "Examples/Acceleo" :

demo-1

L'assistant crée un nouveau projet "org.acceleo.sample.demo.spring" dans votre espace de travail.

  • Le répertoire src contient les sources générés;
  • Le répertoire resources contient les fichiers de configuration de Spring et d'Hibernate;
  • Le répertoire tests contient les tests unitaires;
  • Le répertoire lib contient les librairies utiles au bon fonctionnement du projet;
  • Le répertoire model contient :
    • Les fichiers conception.uml et conception.umldi correspondant au modèle de l'application;
    • Les fichiers profile.uml et profile.umldi correspondant au profile UML utilisé pour la génération;
  • Le fichier spring.chain permettant de lancer les opérations de génération;
  • Le fichier spring.properties permettant de spécifier les options de génération;

demo-2

Le modèle conception.umldi ci-dessous décrit :

  • Un <<Entity>> Product représentant la notion de produits, est composé des propriétés name et color,
  • Un <<Dao>> ProductsDao chargé des opérations de lecture et mise à jour des instance de produits. Les DAOs proposent systématiquement les méthodes CRUD (Create-Read-Update-Delete), ces dernières ne devant pas être modélisées. Il est toutefois possible d'ajouter des opérations tels que findProductByColor;
  • Un <<Service>> ProductsServices proposant les opérations métiers suivantes :
    • getListOfProducts : fournit la liste complète des produits
    • getProduct : retourne un produit à partir d'un identifiant donné. On notera que cette méthode est <<Remote>> et sera donc publiée en tant que service Web.
    • addProduct : ajoute un produit. On notera que cette méthode est <<Transactional>>, en cas d'erreur de traitement la base de donnée ne sera pas modifiée et restera donc intègre.
    • updateProduct : met à jour un produit
    • removeProduct : supprime un produit

Les dépendances modélisées représentent :

  • Du <<Service>> vers le <<Dao>> : l'instance du <<Dao>> doit être injectée dans le service.
  • Du <<Dao>> vers l'<<Entity>> : le <<Dao>> a la responsabilité de gérer l'<<Entity>> dépendante.

demo-3

Quelques exemples de fichiers générés :
  • Le fichier src/org/acceleo/sample/demo/spring/services/I_ProductsServices.java constitue l'interface Java du service :

demo-4

  • Le fichier src/org/acceleo/sample/demo/spring/services/I_ProductsServicesWebService.java constitue l'interface Java du service Web chargée d'exposer uniquement les méthodes <<Remote>> du service :

demo-5

  • Le fichier src/org/acceleo/sample/demo/spring/services/impl/ProductsServicesImpl.java constitue la classe Java chargée d'implémenter les deux interfaces du service :

demo-6

  • Le fichier resources/META-INF/spring/component.xml correspond au fichier principal de configuration de Spring. Ce dernier inclut l'ensemble des fichiers de configuration des différentes couches applicatives :

demo-7.png

  • Le fichier resources/META-INF/spring/org.acceleo.sample.demo.spring/layer-services.xml correspond au fichier de configuration de Spring définissant les objets de la couche de services métiers :

demo-8.png


Reste à faire & Contribuez ! :

by Jérôme at January 08, 2008 06:26 PM

January 03, 2008

Acceleo 2.2 : Template encoding made easy

Another nice feature for the upcoming Acceleo 2.2 : being able to read a template with a given encoding.

That means you’ll never have troubles anymore working with special characters in templates and using them with different operating systems. Previously Acceleo was only using the current JVM encoding so any template with “é”, or “à” created on Windows would not work on Linux or Mac.

These times are now over as you can specify which encoding you want to use in your template. Of course I would still advice you to avoid using non-ascii characters in a generation template but sometimes you need it.

The issues were discussed on the mailling list and the mecanism is similar to the XML or Python one : using comment to specify this meta-data.

With Acceleo 2.2 you’ll be able to define templates like the following, an utf-8 template :

UTF-8 Acceleo Template

and an ISO-8859 one :

ISO8859-1 Template

And use them in another template (here an ASCII one) without problem.

Template with ASCII encoding

The generated text will still use the current JVM setting as a default encoding, that means here that everything has been converted in UTF-8 in the following result :

Generated text using several encodings

Of course the encoding specification is not mandatory, and if you’re wrong in an encoding code you’ll get a compilation error :

Wrong encoding

Another good news : Laurent is intensively working on the Acceleo documentation to fix all the english mistakes.

by Cédric at January 03, 2008 05:00 PM

December 31, 2007

Acceleo modules mini-sprint 2007

We finished the year with an Acceleo module mini sprint yesterday, Alf and Jean-Michel were there to work respectively on the WISSS and Zope module for Acceleo. Alf did progress on the WISSS module, the persistency layer seems quite nice, Jean-Michel on his side generated the whole file and folder organization to create Python eggs.

On my side I worked on the Ecore2Python module, it’s now supporting documentation eAnnotations in Ecore model, EOperations and a better organization of generated packages. Next step will be support of EMF-like Resources, eNotify and lazy loading.

The mandatory picture of geeks in action :

Jean-Michel, Me and Alf working on Acceleo modules

by Cédric at December 31, 2007 09:32 AM

December 28, 2007

Quick glance at Acceleo 2.2

Acceleo 2.2 is coming soon, this release mostly aims at polishing the user experience and the Eclipse integration, here is a quick glance on a few features.

Syntax highlighting has changed! After asking for a vote on the development mailling list, Jonathan reworked the template editor colors and it’s now far easier to read a template !
The template editor is now also able to match the if, for, … blocks. Here is a screenshot of the new template editor in action.

Template Editor visual matching

Another feature is support for the EObject type. EObject is the common object of every EMF based model, it’s a kind of java.lang.Object but for model elements, sometimes it is usefull to define a template on any kind of type. It’s now possible, with any metamodel you will be able to define templates on the EObject type which mean you’ll be able to call this template on any object.

EObject template

Stay tuned as more nice stuffs will follow in the next days :)

by Cédric at December 28, 2007 05:25 PM

December 16, 2007

Chocolate commit

At work we have a rule : if you commit something which does not compile, or that cause failure of the build, then you have to bring back a chocolates candies box.

Many “chocolate commits” happened lately and we manage to always get a candy for the coffee break. As I’m working on a quite tricky project I’m thinking ahead and I did prepare chocolates this morning.

The recipe is quite simple :

  • dissolve/melt some chocolate
  • wait a bit ’till it’s quite solid
  • make tiny balls with the chocolate
  • roll them in sugar
  • roll them in hot really black chocolate
  • roll them in cacao powder
  • wait a bit ’till it’s totally solid
  • commit something using String.isEmpty for instance, be sure someone notices the mistake fast
  • bring the chocolates !

by Cédric at December 16, 2007 02:12 PM

December 11, 2007

Validation of Models with Acceleo (Part 2)

The second one (Part 2) consists in creating Acceleo services.

This solution provides additionnal functionalities in relation to the first one. Indeed, as the rules are written in Java language, you can decide that a specific rule won't overload a generic one for example...

I've created a "ValidatorServices" class which implements a mechanism to validate a model and get the report from templates, thanks to the services that it provides. The end-user has just to extend this one and to implement the "checkRules" abstract protected method in order to define his own rules.
He can use "validate", "isErrorChecking" or "isWarningChecking" services to validate his model.

But the main new feature consists in giving the possibility to use the result of the validation report and to act on the generation or not. Let's interest by this feature:

The "isErrorChecking" and "isWarningChecking" are able to notify if an error/warning at least has been detected. So, "isErrorChecking" may be used for example to forbid the generation if it returns true.

The "ValidatorServices" class manages a "singleton" behaviour in order to have only one validation launch per generation and to optimize the process.
Moreover, it manages a workaround about Acceleo architecture limitation on the instanciating of custom services between templates...

Indeed, the services don't share the same context between each template. So, let's take an example with two templates where each of them generates a file. We knows that the generation depends on the "file" parameter. Consequently, it's in this place that you have to use "isExistingError" if you want to control the generation. Not to have as many validation launches as templates which generate files, it is required to keep report in memory. To do that, the "ValidatorServices" retrieve data from a temporary file, in the temporary directory of the OS (Java environment variable). You can use a custom action to delete this file (clean data context) at the end of the generation process.
IsXXXChecking use temporary file only if it is called in different templates which generate files.

See the demo:


The main benefit of this way is to be able to cancel the generation if the validation process has thrown errors or warnings... according to your rules.
Then, it provides a flexibility for the use of the validation mechanism (priority of rules, control generation...) thanks to the Java language. So, applying a rule on a "super" meta-class and an other one on a "child" meta-class, you can decide to display the both respective messages if these rules are not checked (and not only the "child" one).

The concern is the technical heaviness of the solution which might be managed, in a more transparent way, by the acceleo core.
Then, the use of Java language involves a loss of the Acceleo features (debugging, traceability...).

by noreply@blogger.com (Cerdicus) at December 11, 2007 07:30 AM

December 10, 2007

Validation of Models with Acceleo (Part 1)

With Acceleo, you can define your own functional validation rules on a model and log messages according to them, during code generation.

I suggest different ways to define the validation rules.

The first one (Part 1) consists in creating a simple Acceleo template where each script defines a set of rules to check on a particular meta-class of the meta-model.

I've created basic java services to log messages with different severities. These messages take as parameter the condition to check (a boolean) and the text to display if this one is false.

We knows that a script may be called if the « file » parameter is setted or if an other script calls it. We also knows that this parameter is used to decide to generate or not the code and to specify where it has to be generated.
In our specific case, we want to activate rules sets without generating code. So, each script owns a « file » parameter which is a call script returning nothing and which gets the particularity to call back the right script to run the rules to apply.

You can see a demo with an example of a template in order to validate a State Machine UML2 model:


The benefit of this way is really the easiness to define the rules thanks to Acceleo Language.
The generic rules (in this example, on the « Named Elements ») apply only on the objects not concerned by a specific rule (inheriting concept).

The only concern is about using the result of the validation to decide to generate or not, for example. Here, it's not simple to do that because, in a chain, every templates which are called are not able to directly communicate between them.

by noreply@blogger.com (Cerdicus) at December 10, 2007 07:55 AM

December 08, 2007

New communication channels …

Just a quick update on Acceleo as a few things are happening.

Talks about using Acceleo in “real world projects” have been done in Germany during “Eclipse Summit Europe” and at Paris for “Eclipse Now you Can”. The feedbacks were really nice about these talks and it was a good opportunity to meet people “in flesh” :) .

A new communication channel has been opened as the Acceleo team and users are now hanging on IRC, on the #acceleo channel of the freenode server. Do not hesitate to go there if you want to ask a quick question or just talk about Acceleo, Eclipse or model driven stuffs.

A new module appeared on the modules repository. I’m quite pleased because this is something I was awaiting for a long time : a Zope3 module for UML. This module leverage the Zope technologies from an UML2 model. Students from Polytech’ Nantes are working on it right now, and people from Makina Corpus are helping a lot with their experience and best practices. Zope can be seen as a pragmatic JEE not bothering about standards but providing innovative answers to common issues in software development. Comparing the results of this module with the JEE one, in both software and architectural concerns will be quite interesting.

I know nice contributions were done for the other modules, more especially the PHP one. Speaking about this one, you can get an Eclipse 3.3.1.1 bundle for windows, providing Acceleo, Topcased and the PDT here. It’s been used for course at Polytech’ about re-using the PHP module and updating it, that’s why you’ll find the PHP module right into the default workspace :) .

I know Alf is making progress on the WISSS side too, this project is quite exciting too as it’s DSL based, I’m eager to see the results and to compare this one to the UML to PHP module.

More updates will follow about the Acceleo core, stay tunned on the Acceleo website

by Cédric at December 08, 2007 10:29 AM

October 23, 2007

Comparing models out of an Eclipse context

Most people are aware of the fact that EMF may be used outside an Eclipse context, just as a standard JAR. This helps in reusing the core features of EMF for your own business models in any kind of java context, let’s say Swing user interface for instance. That was something we wanted to achieve with the model comparison component.

Lately we introduced a few regressions in this area, I’m now proud to announce that the path is now cleared again, you may find an example java project on the FAQ.

Using that java program you may compare two models from the command-line (creating the match, then the diff) and you may export the result as emfdiff.

EMF compare standalone example

Next step, the comparison ant task ;)

by Cédric at October 23, 2007 02:35 PM

October 11, 2007

Modeling at ESE 2007

Eclipse summit is almost over now, a lot of things happened and the modeling project is, for sure, really lively.

Many talks were targeted at people interested in models, great tools and business cases using these tools just show you may benefit using models. On a more personnal side the EMF Compare talk went really smoothly, the room was crowded and people had interesting questions about wether this component would be able to solve this or that issue. If you’re interested in getting the slides, they are available here.

The Rich & Ed talk really showed EMF, GMF and Modeling projects in general may be used together to produce complete toolchain, well, the mindmap domain could be seen as a bit trivial but doing so much things in such a short demo is already a challenge without considering a more complexe domain.

Integration has been discussed during the Modeling Symposium, basically technical and “user-centric” integration is something we really need in the eco-system. Discussions has been started with the GMF people about providing integration with “compare” but this is quite a challenging subject too.

QVT was also a hot subject, well we can be quite confident Quentin will manage to provide a nice QVT-Relational component.
More information will follow on these subjects, on a another side Trolltech guys were here and were very nice too and the poster reception (free beer \o/ ) eased to meet people from really different parts of Eclipse.

During this session I had been able to see a comparison tool for the HL7 standards which was using a similar approach than EMF compare, the author was very friendly and I’m looking forward to a possible collaboration.

Just a downside on this event, well, Nick was not there so I had not been able to offer him beer for his help in setting up the emf compare build, let’s just hope I wont owe you more beer since we see each other again or you’ll quickly get drunk :)

by Cédric at October 11, 2007 02:33 PM

September 12, 2007

” I love deadlines …

… I like the whooshing sound they make as they go by.” D. Adams

Here it comes, the first release of the emf compare component ! You can download it on the website and use it for your every-day work, if it doesn’t fit, report a bug, works keeps going in the maintenance branch and in the CVS head.

So, what will I get with this piece of software :

  • Model comparison and merge: that’s good news as it’s the main objective of this project. You will be able to compare any EMF model, serialized in files or not, coming from XSD or a twisted metamodel.
  • ID (xmi or Ecore) support : if your model provides ID, they will be used in the comparison process.
  • SCM management : thanks to the Eclipse compare framework you will be able to compare versions of models in CVS or SVN repository.
  • Sexy user interface : I know we said at EclipseCon we would not focus our work on the user interface, but thanks to Laurent’s work the result has outperformed our expectations.
  • “EMF only” dependent core : the core, responsible for comparison and merge, only depend on EMF and as such is easily re-usable.
  • Extensible framework : let’s say you have a shiny new idea about model comparison, or that on your specific kind of model you could setup a strategy to match 2 elements, then you can define your own engine and EMF Compare will use it.
  • Export diff : you may save your diff in a file (emfdiff) and then re-open-it later without computation.

So what, let’s have a look now,

Comparing GMFgraph.ecore

Where is the doc ?
The bundle only provides reference doc right now, in order to get up-to-date FAQ, tutorials or design overview stay tuned on the wiki.

What’s next ?
Next release (0.8.0) will provide 3 way comparison, diff extensions and many other nice stuffs. Concerning the algorithms we are trying to get better results with generic comparison algorithm through other methods coming from the research world. An initiative (website) about model transformation/weaving and comparison is taking place in Europe an you may expect that the EMF compare implementation will evolve toward these works.

We will also take part in the Ganymede simultaneus release to help in providing a coordinated modeling distribution.

I’ll give a talk at ESE about all these nice stuffs and the potential use of this component in other Eclipse tools, it will be a great place for exchanges, if your interested in, do not hesitate ;)

by Cédric at September 12, 2007 03:11 PM

September 07, 2007

Statechart diagram generation

As a proof of concept, we create an Acceleo generator for UML2 Statechart diagram.
This generator has been made as a TopCased work (to be include, I hope, as a built-in TopCased generator).

Here is a nice flash demo: http://www.obeo.fr/download/transfert/capture1.htm

The source code generated uses Smuc framework, but it will be easy to target any standard technology (like C, Java, ...).
Thanks to Cedric Notot for all his work on this generator and who experiment new strategies for models validation with Acceleo.

by Etienne Juliot (noreply@blogger.com) at September 07, 2007 11:26 AM

May 16, 2007

MDA vs MDSD

I will start this blog by debating on differences between MDA (Model Driven Architecture) en MDSD (Model Driven Software Development) approaches. One could see MDSD as a deprecated version of the standard MDA. But another will see that MDSD has a wider scope than MDA. So I will try to explain what MDSD embraces and what's it is useful for.


First, let's compare what we've got on both sides. For MDA :

  • Standardized by the OMG since 1999

  • Based on XMI, MOC, OCL, UML...

  • Aims at automating all transformations between models to code, suppressing the coding part

  • Driven by the Y cycle and CIMs, PIMs, PSMs and PDMs

  • Tries to define standard meta-models shared across industry domains

For MDSD :

  • Based on the ideas brought by MDA

  • Not bound to its standards : can be any meta-model like DSLs, not only UML and profiles

  • Try to promote customized DSLs answering to each need, not assuming that every body will have the same needs on a given domain

  • Use models as abstraction and still leave a place for development tasks

  • Defines its own ideas of PIMs and PDMs depending on projects or needs contexts

From the use I can see in my job,the MDA standard is more something made for the big players in the industry, whereas MDSD is a more flexible approach that can be used by a larger group of users, less attached to standards and with smaller scale needs.


To conclude, I will just say that MDSD is a pragmatic way of using MDA concepts. With the new wave of tools such as Eclipse, EMF, GMF, Acceleo..., you can use these kind of approaches on large scale projects and I would recommend anyone to have a deep look into it as it really helps to cut down software development costs !

And the quickest way to do that is to try it using Acceleo I think !


by Stephane LACRAMPE at May 16, 2007 09:10 AM

May 14, 2007

EMF on Rhapsody

Have you ever see EMF with Rhapsody ?

Let's see : http://www.rhapsody.com/emf

Is that you, Ed, with the black tee shirt ?
Very good :)

by Etienne Juliot (noreply@blogger.com) at May 14, 2007 04:34 PM

May 07, 2007

Acceleo 2.0 : free module for UML2 to Hibernate


For Acceleo v2.0 and launching of Acceleo Modules Farm, Obeo will release with an OpenSource license one of its commercial modules : UML2Hibernate.

I have create this module. It uses UML 2.1 models (class diagram with stereotype > >) and generates :

- DAO layer
- Entity objects
- HBM mapping
- SQL tables (3NF)
- JUnit tests
- Hibernate v3 compatible Design Patterns

It manages lots of associations :
- inheritance
- 1-1
- 1-*
- *-*
- recursive associations
- unidirectionnal and bidirectionnal associations
- ...

It will be available before the end of may. I hope you will enjoy it, and you will contribue to improve its features.
Here is the link where this module will be available : http://www.acceleo.org/pages/modules-repository/

by Etienne Juliot (noreply@blogger.com) at May 07, 2007 08:26 PM

May 04, 2007

My son, you will be a chief !

Students : stop to think you NEED to be a project chief to be someone !

I see lots of young IT engineers, who just come out from their high schools, and want to manage projects. Oh yeah, Excel, MS Project should be very exciting !

NO ! You can have a very good job and a very good carrier with some technical skills. IT is complex, and architecture is not easy for everybody. It's fun, there are some evolution every day, and companies needs some very good people to understand and create good architectural designs.

IT architecture is one the more interesting job I even see.

by Etienne Juliot (noreply@blogger.com) at May 04, 2007 01:06 PM

May 03, 2007

Papyrus 1.6 is released with Acceleo !

Papyrus, one of the best OpenSource UML modeleur on the Eclipse platform has been released.

http://www.papyrusuml.org/

Papyrus includes a new killer feature : Java code generation from UML models.

And which generative engine does they choose ? Yeah ! Acceleo.

Obeo has joigned Papyrus community to help them to create this Java generator.
Of course, this generator is under EPL license.

Acceleo 2.0RC2 has been used, with some specific integration plugins like this one (for the Run... menu) :

by Etienne Juliot (noreply@blogger.com) at May 03, 2007 05:44 PM

April 20, 2007

MDE / MDA / MDSD / etc.

OMG has defined the MDA term.

But now, what a jungle !
Let's see some very simple definitions.

MDE
- Model Driven Engineering
- definition : all the process of creating softwares with a model driven approach.
- examples : it includes some metamodel based analysis, how to manage teams with MDA,
which steps are required to create a real model based software factory, ...

MDA
- Model Driven Architecture
- definition : the technical choice of tool and metamodel for all the creation of a new software
- examples : transformation models engines, separation and links between PIM/CIM/and others

MDSD
- Model Driven Software Development (also call MDD : Model Driven Development)
- definition : metamodel based tools and process for development step
- examples : source code generation (like Acceleo), PSM model based editor

DSM
- Domain Specific Modeling (and DSL : Domain Specific Language)
- definition : metamodel based modelers to design specific and semantical models
- examples : GMF based modelers, Workflow modelers, Wysiwig model based modelers

ADM
- Architecture Driven Modernization
- definition : modernize existing software with a metamodel approach
- examples : reverse engineering systems, recasting engine (like Agility)

Of course, let's do a metamodel of theses model driven definitions :

by Etienne Juliot (noreply@blogger.com) at April 20, 2007 05:20 PM

Work on Acceleo 2

Acceleo (http://www.acceleo.org) is a very impressive code generator.
I work on it since 2005 (v0.0.1 !!).

Acceleo v1.0 was born in 2006/04/01, with many features and a very good EMF and Eclipse integration.

Acceleo v2.0 will be the major evolution of Acceleo with 2 main features :
- modules generator can be deployed as real plugins
- open source modules farm


Acceleo v2.0 should be release on may 2007.

by Etienne Juliot (noreply@blogger.com) at April 20, 2007 04:54 PM

Blog new born

After an unsuccess try of creating my blog, I think this time will be the good one.
As you see, I decide to speak english.... Or try to speak english !

I will speak about :
- MDA
- IT Architecture
- Acceleo
- DSM

by Etienne Juliot (noreply@blogger.com) at April 20, 2007 04:46 PM

June 14, 2004

Mozilla 2

Voici une URL qui cause de Mozilla 2 :
http://weblogs.mozillazine.org/roadmap/archives/005689.html

On y apprend par exemple :
- python supporté dans les pages web
- javascript 2.0
- début de support d'XForms (coool)
- SVG supporté (pour moi, la plus grosse nouveauté)
- XUL 2 (et standardisé)
- xulrunner
- bien sur, utilisation de Firefox, Thunderbird, Sunbird et Nvu.

by Etienne Juliot (noreply@blogger.com) at June 14, 2004 01:10 PM

June 04, 2004

javafr.org au point mort

Il y a maintenant 1 an 1/2, j'ai acheté le nom de domaine javafr.org et j'ai commencé une maquette avec Spip pour créer un site de news dy style a19s.com ou linuxfr.org, sur Java.
Je l'avais fait hébergé par tuxfamily, mais l'histoire a voulu que tuxfamily ferme ses portes.

Depuis, je n'ai pas trouvé le temps de m'y remettre. La backend est prêt (merci spip), il reste encore le squelette des pages web à mettre au point (CSS à gogo). Il faut aussi que je remette en place la redirection DNS. En fait, j'espère qu'en maintenant ce blog, ca me donnera le courage de m'y remettre.

Si quelqu'un d'autre est partant pour l'aventure, qu'il me contacte. C'est bien plus motivant à plusieurs.