On 22 janv. 2011, at 09:44, Stéphane Ducasse wrote:
ah ok
now what does it means
Point classExtensions -> list of methods?
Method(asURL) extendedFromClass does not work
Method(asURL) extendedFromClass because I know that asURL is in String so the only
information I need is where does it comes from
-> Network package?
In this case that would based on the extension
supported by a FamixMethod and the extended FamixClass.
I still do not get it.
I have a
method
symbol: asURL
belongstoclass: String
packagedIn: Network
so how a relation between String and asURL can convey something more than that?
I'm not talking about replacing the current representation of class extensions.
It's more like, how to represent a class extension (which is a 3-way relationship) by
a two-way relationship so that it behaves like other FamixAssociations? (especially in the
context of MooseChef)
The best way to illustrate my point (because it's also the main selling point of
MooseChef) is to explain 'scoping' or 'scaling' dependencies: getting a
dependency at a higher granularity (for example, seeing dependencies at package level from
invocations at method level).
Consider the invocation 'a invokes b', that is a dependency from a to b.
Now imagine that I can scale/scope both sides independently (this is not exactly how it
works but it's for the idea)
a atClassScope invokes b
would mean 'Class defining a depends on b'
a invokes b atPackageScope
would mean 'method a depends on package defining b'
Now take the dependency 'method a extends class B'
and scale both sides at package level
method a atPackageScope extends class B atPackageScope
---> 'package of method a depends on package of class B'
which gives the right dependency (the extension package depends on the extended package).
This wouldn't work so nicely if the relationship was modeled in a different way, like
'class a extended by method b', or 'method m class extension from package
X'
--
Simon Denier