thank you very much for your detailed answer.
On Jul 13, 2007, at 19:52 PM, Toon Verwaest wrote:
On (13/07/07 18:23), Hani ABDEEN wrote:
From: Hani ABDEEN
<hani.abdeen(a)univ-savoie.fr>
To: Toon Verwaest <tverwaes(a)infogroep.be>
Subject: Re: [Moose-dev] Class clustering (Bug:Exceptions)
Date: Fri, 13 Jul 2007 18:23:04 +0200
Hi,
thank you,
yes It works correctly now :-) and I try to understand and to
discover what we can do with this plugin.
Just somethings that I would point out:
- I have seen that when the clustering algorithm take place, all the
classes, the packages, and the namespaces in the model under-
consideration will be considered in the same way by the algorithm.
What about the classes and the packages which do not really belong to
the system that we would analyze it (stubs entities)? Such entities
are used (accessed) by the considered system, and we have this
information in moose model, but we have not any information about
what these entities access?. may be they access our system, and may
be not!!
It is true that we don't have information, but in the case that the
system would try to put such classes together with classes in our
system, this should probably fail since we don't want to find software
components in libraries. This is where the "Fixating" tab comes in
handy, were we can exclude results library classes. If we do this,
even while they were clustered together, we exclude those results.
That was what I would tell you indirectly: It is the best simple
solution...
I understand perfectly the following of your mail, and I know that a
clustering algorithm is not a kind of magic which could give us an
ideal solution without any user's intervention!!! The objective was
simply pointing out this point which does not occurs only in the case
of -System under analysis and Platform library-. Ok I will not discus
now the problem of inter-systems collaboration and system's plugins...
Important is to think that most of the algorithms, just present the
basic results without automatically combining them, to the user,
who can then manually validate clustering information before merging
it. The reason why this is done like this, is because a lot of the
basic algorithms (for example the "By Reference") will definitaly
cause false positives because of the way the algorithm is adapted.
Next to that, the ones which do already combine results, like the
hierarchical clustering based on delta-ic and interface, can
automatically be filtered for "false positives", be automatically
removing nodes in the hierarchies which only add information about
"ignored classes", which we can ignore in the "fixating tab".
But well, it might be useful to already provide a checkbox which
automatically exludes these classes, so the user doesn't have to find
out which ones are part of the subject system and which ones aren't..
- this is a very small thing that may be it does not cause any
problem now, but it could do that latter: According to your
implementation of FAMIXClass>>accessedByClasses and
FAMIXClass>>allClassAccesses, a class could be accessed be it self.
I guess you are right, that in some situations this could lead to a
problem. I will move the addition of the class itself to the
algorithms that use it.
One of the basic things you can do with the program now, is using the
different visualizations to analyse user-defined clusters. In other
words how packages are organized in the system. Like this you can see
for example, that the package "Kernel-Objects" contains "green
classes" which are "ghostclasses" or classes which probably should be
in the cluster, but are not. Of course since it is a core package and
since the class causing the effect is the Object-class it might
not be that relevant, but it shows how easy you can find things like
this.
again thank you very much for this details, and before all, for this
useful plugin.
Note that if I interest on this plugin is because that the next step
of my work will be around clustering algorithms and software graphs.
So surely such plugin to Moose will be very useful for me.
bests,
Hani
regards,
Toon