Hi Sergio,
Nice to hear from you.
We use MOF as a meta-meta-model. FAMIX is an instance of MOF and it is used as a meta-model. So, when you analyze a program you will get a model that conforms to FAMIX.
FAMIX is a language independent meta-model, meaning that it is basically a common denominator of various languages. For example, you will not get all details of the AST in it, but you will get invocations (calls between methods) and accesses (from methods to variables).
A UML-like diagram of the current FAMIX 2.2 can be found at: http://smallwiki.unibe.ch/moose/famixcore2.2metamodel/
So, if you want to define transformations and generate code, you will probably need a more detailed model than FAMIX. But, if you just want to reason about the code without caring much about the AST, than FAMIX is more suitable.
However, given that Moose works at the level of the meta-meta-model, it can accommodate other meta-models as well. For example, we have a meta-model for analyzing dynamic information (Dynamix), historical information (Hismo) or CVS information (Chronia).
We are now working on FAMIX 3.0. With this occasion we will redefine some terms. For example, what is now known as FAMIX will become FAMIX- Core, and we will explicitly define extensions to this Core.
For further questions, we strongly advise to join our moose-dev mailing list at: https://www.iam.unibe.ch/mailman/listinfo/moose-dev
Cheers, Doru
On Oct 22, 2007, at 10:57 AM, Sergio Castro wrote:
Dear MOOSE team,
I am interested in understanding if I can used MOOSE for my research, but I am currently a bit confused about a couple of things.
My idea was to use a language independent model of an object oriented program, and querying this model for obtaining Intensional Views of the software. After, I would like to make transformations on this model if I detect that some constraints over these software views do not hold, and finally generate source code that reflect the transformations accomplished in the model.
My question is if the program representation used by MOOSE is rich enough to define over it any kind of software views based on the structural relationships of the source code elements the model was built from. Or in other words, which information from the source code I lost when I build my model in MOOSE?
Another issue that confuses me is about FAMIX, from the "The Story of Moose" paper written by Nierstrasz, Ducasse and G?rba, it seemed to me that the FAMIX model was replaced with a MOF like meta model, but I found in the Moose wiki (http://smallwiki.unibe.ch/moose) a comment about the development of Famix 3.0. Is then FAMIX still part of MOOSE? or I misunderstood and the new MOF like meta model is a reengineered version of FAMIX?
thanks in advance for any comment or orientation,
Sergio Castro
Moose mailing list Moose@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose
-- www.iam.unibe.ch/~girba www.iam.unibe.ch/~girba/blog/
"Being happy is a matter of choice."