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(a)iam.unibe.ch
https://www.iam.unibe.ch/mailman/listinfo/moose-dev
--
Yann-Gaël Guéhéneuc
Ph.D. et ing. jr. / Ph.D. and jr. eng.
Professeur adjoint / Assistant professor
DIRO, Université de Montréal 1-514-343-6782 (Téléphone / Phone)
C.P. 6128, succursale Centre-Ville 1-514-343-5834 (Télécopie / Fax)
Montréal, QC, H3C 3J7, Canada