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

PhiHo Hoang phiho.hoang at rogers.com
Mon May 27 10:38:27 UTC 2002


Hi Bergel,

> Prerequisites:
> 	MoreAnalysis.1.cs

MoreAnalysis.1.cs was on the list several posts ago.

Cheers,

PhiHo.

-----Original Message-----
From: squeak-dev-admin at lists.squeakfoundation.org
[mailto:squeak-dev-admin at lists.squeakfoundation.org] On Behalf Of Bergel
Alexandre
Sent: Monday, May 27, 2002 5:37 AM
To: squeak-dev at lists.squeakfoundation.org
Subject: Re: [GOODIE][Modules][Experimental] AnalysisUtils (0.2)


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