Book a Demo

Author Topic: About TRANSFORM_REFERENCE  (Read 11291 times)

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8110
  • Karma: +119/-20
    • View Profile
Re: About TRANSFORM_REFERENCE
« Reply #15 on: October 24, 2005, 04:19:26 pm »
Perhaps my comments about new information were slightly off.  I still make that claim, but it needs to be qualified.

The domain specific information that can be added in a transformation is new information because it doesn't exist in the PIM.  It's not really new either, it exists in the transformation, and in the metamodel as you say.

So there will almost certainly be information added by the transformation/metamodel, but I don't believe that the detail it adds is really new model information.  If you transformed back to a PIM, it wouldn't add anything new.

On the other hand, consider your example where ClassA and ClassB are related.  Does the metamodel determine that every ClassA is related to every ClassB (or to a ClassB).  I can't really imagine any (useful) metamodel that determines a relationship like that.  If that information doesn't exist in the metamodel, then it is adding new model information.  As a result, if the transform was done back to the PIM, a relationship (of some sort) would now exist where there was previously none.  Hence my assertions that relationships shouldn't be created from nothing.

As far as I can see your example doesn't prove a need for what you are wanting.  Even if it sounds less like a transformation and more like an improvement/refinement to the existing PIM. You can do what you describe by creating a class and two dependencies from the association in addition to copying the dependency.  Thus the metamodel says that (under certain conditions?) associations require a third element and dependencies to that element.  But in that case my argument is that no new model information is really added.

New information can be (and in real world examples often are) added by a modeller after the transformation.  However, that this can't be done by a transformation is in my opinion a good thing.  It makes it clear to the modeller that this is new information that doesn't exist in the PIM.  Where possible, it should actually be added to the PIM.  But platform specific information like method code will generally need adding.

ebadude

  • EA Novice
  • *
  • Posts: 8
  • Karma: +0/-0
  • I love YaBB 1G - SP1!
    • View Profile
Re: About TRANSFORM_REFERENCE
« Reply #16 on: November 05, 2005, 05:36:41 pm »
Hi Simon and SF_It,

The problems expressed by SF_It were exactly the problems I was running into back when I posted in this thread ...

http://www.sparxsystems.com.au/cgi-bin/yabb/YaBB.pl?action=display;board=general;num=1117817831;start=0#3

The ability to go from very simple abstract models to intricate and complex PSM models through a series of MDA transforms was exactly what I was trying to accomplish. In order to do this, you need to be able to adorn elements of the simple, abstract models with "new information" (which will come from rules contained in the transformation templates).

I think what Simon is saying is that (in principle) this information shouldn't be hidden away in the the transformation templates. In some respects, I agree with him and for this reason, it would be nice if the transformation templates were themselves models.

I also get the sense that Simon is saying that what we're asking for (the ability to introduce new information during transforms) isn't going to happen. This is unfortunate. This is the sense I got from the previous discussion thread as well. It seemed to me at the time that this was Sparx first attempt at MDA and the MDA functionality was mainly an experiment or proof of concept. I was satisfied that Sparx would continue to refine the MDA support in subsequent releases.

At the time of my previous posts, it appeared as though the MDA support was an interesting toy but was not expressive enough to perform any real work. I had planned to try other approaches for "adding new information" to my abstract PIMs such as XSL on the model XMI or by adding elements using the API.  (Unfortunately I never got around to it)

I have just downloaded the most recent beta of EA 6.0 and I am very excited about all the new features. I was really hoping that the MDA support would have been enhanced to provide the capability to add new classes to models and connect them to pre-existing classes. It appears as though its not quite there yet. It sounds like you are suggesting, Simon, that this is not a feature that we will see any time soon  :(

SF_It, if you would like to collaborate on writing an addin or XSL to do the sort of model transforms you mentioned, I would be very interested.

Simon, I would really like to see some of the MDA use cases that the Sparx engineers had in mind for the MDA transforms. I would really like to see MDA in action in Sparx. Maybe there is a way to do useful work with the MDA transforms. I just can't see it.

I don't want to end on a negative note. I really like your product and I think the Sparx team is doing a great job. I am really looking forward to the full release version of EA6. Keep up the good work.

Eve

  • EA Administrator
  • EA Guru
  • *****
  • Posts: 8110
  • Karma: +119/-20
    • View Profile
Re: About TRANSFORM_REFERENCE
« Reply #17 on: November 06, 2005, 01:43:42 pm »
Quote
I have just downloaded the most recent beta of EA 6.0 and I am very excited about all the new features. I was really hoping that the MDA support would have been enhanced to provide the capability to add new classes to models and connect them to pre-existing classes. It appears as though its not quite there yet. It sounds like you are suggesting, Simon, that this is not a feature that we will see any time soon  :(

Actually.  EA 6.0 can do this.  The help file page Transforming Connectors in 6.0 documents it and gives an example.

Quote
The second type of class that you can use as a connector end is one that you know the current GUID of.  To do this, specify the GUID of the target class in either the Source or Target end.  The following example creates a dependency from a class created in a transformation, to the class it was transformed from.

Code: [Select]
Dependency
{
  %TRANSFORM_REFERENCE("SourceDependency",classGUID)%
  stereotype="transformedFrom"
  Source
  {
    %TRANSFORM_REFERENCE("Class",classGUID)%
  }
  Target
  {
    GUID=%qt%%classGUID%%qt%
  }
}

I'm a bit busy to comment more fully at the moment.  But I do think that the transformation system in EA as it stands is very expressive and useful.  I'd recommend looking at the new WSDL transformation templates as an example of what can be done with it.

ebadude

  • EA Novice
  • *
  • Posts: 8
  • Karma: +0/-0
  • I love YaBB 1G - SP1!
    • View Profile
Re: About TRANSFORM_REFERENCE
« Reply #18 on: November 08, 2005, 06:01:32 pm »
Hi Simon,

Thanks for the response.

That's awesome. I missed that when I was going through the docs. I just tried it and it worked great!!!

I really like the transformation chaining as well. I am pretty stoked to play around with this now.

Our business is involved in software product development and I can appreciate all the work that goes into building and supporting a product like this. You have done a tremendous job with your product and with building a community around it.

Some feedback around the MDA transform docs ... When we produce docs for our products, we try place "affordances" (sorta like signposts) into the docs. We try to avoid placing too much burden on our customers (developers) to make huge leaps in logic in order to get our software working. I found the docs surrounding TRANSFORM_REFERENCE() a bit confusing in terms of finding out how EA uses the XREFs created by the TRANSFORM REFERENCE()'s . I think it should be stated in clearer terms.... A diagram would be helpful.

Thanks