Hi Doru, all!
Thanks very much for your answers! Here is one thought: in the case of "a.foo().bar()", would it make sense to use a SSA-like approach to have a consistent use of "receivingVariable" in "FAMIX.Invocation"?
Cheers! Yann
Tudor Girba wrote:
Hi Yann-Gael,
Stephane sent us a couple of weeks ago (months?) MSE files and we started to implement a parser to read these files and instantiate a model of the systems described in the files conform to our meta-model, PADL (similar to UML, FAMIX...) but developed in-house.
Excellent! I answered your questions below. Please feel free to ask more of them. We actually welcome them :).
You can find a UML diagram of the current FAMIX implementation:
Please note that a FAMIX 3.0 is in the works: http://smallwiki.unibe.ch/moose/famix3.0/
We would like it to become a strong standard in reengineering, and that is why we want it to be a group effort. Currently several groups participate (see the webpage). If you want to participate, you can send us the description of PADL.
- what means "(stub false)" in "FAMIX.InheritanceDefinition" and other
definitions?
"stub" denotes entities that are in the model, but that are not part of the system under analysis. However, this makes more sense for structural entities, like FAMIX.Class, and less for relationships. In Moose, there is no analysis that takes stub relationships into account.
- what are "FAMIX.Access"?
A FAMIX.Access represents how a variable is accessed by a method/ function. So, if you have something like "method() { ... anObject ... }", then you will get a FAMIX.Access that has anObject variable as "accesses" and method as "accessedIn".
- what is the difference/similarity of "(candidate (idref: 37))" and
"(invokes 'yourself()')" in a "FAMIX.Invocation"?
In dynamically typed languages, it happens that we not know for sure which method is actually invoked. So, in this case, we compute several "candidates". So, the "candidate" property is a collection of pointers to FAMIX.Method / Function. "invokes" on the other hand represents just the string of the call.
- what to do when there is no "(receivingVariable (idref: 24))" in a
"FAMIX.Invocation"?
There are two possibilities. Either the parser did not work for some reason, or the call is to a function, and not to a method. In any case, our analyses hardly depend on the receivingVariable information.
- what means "(hasClassScope false)" in a "FAMIX.Attribute"?
hasClassScope corresponds with "static" in Java.
- what is a "FAMIX.FormalParameter" and are they referenced in
"FAMIX.Invocation"?
FAMIX.FormalParameter represents parameters of a method/function. As variables, they can be the receivingVariable of an invocation.
- what is a "FAMIX.LocalVariable" and are they references in
"FAMIX.Method"?
FAMIX.LocalVariable represents a variable that is defined locally in a method or a function, so LocalVariable "belongsTo" a FAMIX.Method/ Function.
Cheers, Doru
-- www.iam.unibe.ch/~girba www.iam.unibe.ch/~girba/blog/
"It's not what we do that matters most, it's how we do it."
Moose-dev mailing list Moose-dev@iam.unibe.ch https://www.iam.unibe.ch/mailman/listinfo/moose-dev