[GOODIE][Modules][Experimental] AnalysisUtils (0.2)

Bergel Alexandre bergel at iam.unibe.ch
Mon May 27 09:37:12 UTC 2002


Hello Daniel,

I get a MessageNotFound: deepGlobalReferenceDo: when I try to load what you have done.

Alexandre


On Mon, May 27, 2002 at 07:44:53AM +0300, Daniel Vainsencher wrote:
> from preamble:
> 
> "Change Set:		AnalysisUtils
> Date:			25 May 2002
> Author:			Daniel Vainsencher
> 
> version (0.2): fixed a bug in the analysis - now treat both instance and
> class methods as belonging to the concrete class. Separating the meta
> class is not appropriate for this analysis.
> 
> Prerequisites:
> 	MoreAnalysis.1.cs
> 
> Experimental tools to guide the refactoring system (graph theory is our
> friend!!).
> 
> First the fundemental algorithms, then the easy interface.
> 
> StrongComponentsFinder implements a cache for class dependency
> information, including the inverted dependencies, and two useful graph
> algorithms -
> findWeakComponents: collectionOfClasses will return a collection of sets
> of classes that are dependent on one another. If a module has more than
> one of these, we can separate it into these groups and they will be
> non-interdependent modules. It will sometimes make sense to have two
> weak components in the same module if the same modules use them both,
> but it's a good heuristic.
> 
> This is useful because it will reduce the class count in the minimal
> system, remove dependencies on the core, and thus expose the core of the
> problem, without requiring any refactoring of code...
> 
> findStrongComponentsForNodes: collectionOfClasses will return a
> collection of collections of classes that are cyclicly dependent on one
> another. These are groups that can only be unloaded atomically, so if
> they're big they probably need refactoring.
> 
> Run on any big chunk of the system, the strong components will show you
> what needs to be taken apart most urgently. Just find any one class in
> there that you think should be optional, and start severing dependencies
> on it.
> 
> ModuleAnalyzer reportFor: aModule on: aStream will spill a nice detailed
> analysis of your favorite module in terms of the above algorithms,
> showing a lot bout what can and should be done...
> 
> favorite usage:
> ModuleAnalyzer reportFor: Module root Squeak Morphic on: Transcript.
> Transcript endEntry <do it>
> 
> ClassDependencyViewer is just a beginning of something. Help from
> someone handy with simple Morphic lists and drag&drop would be much
> appreciated. Mail me.."!



-- 
_,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._
Bergel Alexandre  http://www.iam.unibe.ch/~bergel
^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^~:;._,.;:~^



More information about the Squeak-dev mailing list