More newbie questions:

I read a book "MDA Explained" which initially got me interested in the whole MDA idea and was really impressed. In it, it explained the whole PIM->PSM->code idea that is the core of an ideal MDA. I also read this:

http://cvs.sourceforge.net/viewcvs.py/*checkout*/andromda/docs-work/AndroMDA
_30_TNG.doc?rev=1.2

I found this very interesting, in particular:

<quote>
Danilo Luiz Rheinheimer [EMAIL PROTECTED] made a proposal about doing automatic model-to-model transformations at the metamodel level, not at the template script code level. Richard Kunze and I immediately found this idea very attractive. In my point of view, this is the same idea that the OMG had when proposing automatic PIM-to-PSM mapping. The main advantage is that at metamodel level, it is much easier to do things that would be very complex to do at the template code level. See Danilo's postings on the andromda-user mailing lists around July 20, 2003.
Someone should write a concept for model transformations for AndroMDA, based on Danilo's ideas and the documentation about model-to-model transformations of the OMG.
</quote>


In the book, it describes the ideal MDA, which I don't think it exists yet. A platform independant model (PIM) should describe a system, regardless of whatever technologies are used, and have the capability to describe that system that can be used by a vareity of technologies. I've so far found that AndroMDA is modeled as platform specific models (PSMs) per cartridge that must be changed if you use a different platform. I'm not sure if this sort of compliance is AndroMDA's goal, but it's interesting to talk about the ideal anyway.

In an ideal MDA world, as I understand it, you describe a system using a PIM and it gives you several PSM models which are turned into code. Instead of talking about bmp4struts you talk about interface, and if you decide later on that you want a Java GUI instead of a web UI the only change you make is using a different cartridge, ie. switch from web UI (which exists very well in bmp4struts) to a JavaGUI cartridge ... and it's done. This assumes many things, like a language which does what is now done by hand in Impl classes, but I imagine you all want to stay OMG compliant and they haven't come out with this yet (as far as I know ... but they are working on one called QVT)

I guess this is a bit much to try and do at once, but there are certain things I see that can be done with Andro that will move it toward this goal. A few examples:

1. Instead of coming up with standards you must comform with per cartridge, come up with a standard for an application (that cartridge developers use) and strongly suggest that any cartridges be designed to be a subset of this model. I am in a project that has both a SOAP front-end and a struts/JSP front-end. I decided after using bmp4struts to model, my SOAP front-end should as closely as possible be modelled the same way some bmp4struts-specific modules (I'm a huge fan of bmp4struts, btw. excellent job.) If there was a PIM layer and needed everything done in SOAP all of a sudden, then I could simply specify that I need a SOAP front-end along with struts/web front-end and that's it because I'm modelling for front-end instead of for struts!

2. In my opinion, anyway, what is generatated with the apps cartridge should all be in the PIM. You put your entities, etc. there along with what platforms you intend to use ... perhaps a sequence diagram expresses front-end flow, what you tag that with SOAP, JavaGUI and/or struts/jsp and you put in the PIM what specific platforms you want a PSM developed in.

3. Decouple whatever you can. Example: bmp4struts, in my humble opinion, should be two cartridges. Struts expresses application flow, JSP expresses presentation. UML by design doesn't express presentation but instead systems, but a lot can be infered about presentation given a platform and a description of a system. Practically and what can be used now is being able to swap out of struts to uses faces ... or swap out of JSP and use a java GUI built over struts.

4. think away from platforms- example: validation in bmp4struts, in my view should be expressed in the PIM (like everything else) ... you can derive datatypes from from regular expressions, but not necessarily regular expressions from datatypes. In this way you are not thinking about platforms (what is validated) at all, but instead what is an acceptable format for a given field.

This is all coming from someone with about a month of experience with MDAs, and as all novices do, I am ranting and ranting about the newer technology I am excited about. I think all of this can be done with the given infrastructure, it's all about running the MDA cartridge on a model to produce platform specific models and produce a second UMI file... I guess if this is what you want to do the first and most important step is how you want to express what is a platform independant model in UML.

How much discussion has there been regarding this?


------------------------------------------------------- SF email is sponsored by - The IT Product Guide Read honest & candid reviews on hundreds of IT Products from real users. Discover which products truly live up to the hype. Start reading now. http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click _______________________________________________ Andromda-user mailing list Andromda-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/andromda-user

Reply via email to