やりたい事。squeak2.7、3.6 と squeakland05 でどのようにコードが変化したのかを調べる
インストールと最初の実行
http://nishis-web.hp.infoseek.co.jp/smalltalk/Squeak/goodies/#FreeSoftware よりhttp://nishis-web.hp.infoseek.co.jp/smalltalk/Squeak/goodies/OOM010.zip 内のOom010/Install.st を実行
- インストール時エラーが出てもアバンドン。
- Squeakland05 ではワールドメニューから MVC に入れないので、ProjectViewMorph newMVCProject openInWorld. で MVC に入る。
- Squeakland05 では StandardSystemView>>constrainFrame: を一つ前のバージョンに revert する(なんでこんなパッチ入れたんだろう。。。)
- MVC プロジェクトに入る。
- OomLauncher open でランチャ
- 右クリック Basic Metrics
- 右クリック classes
- 右クリック add all subclasses
- Magnitude
- ウインドウを閉じる
- compute
- 結果が出る
- カラム名をクリックするとヒストグラムが出る
- クラス名をクリックするとクラスブラウザが開く
メトリクスを使う
- 概論: http://www.sra.co.jp/people/aoki/SmalltalkWorkbookJ/Chapter02.html
- CKメトリクス: http://portal.acm.org/citation.cfm?id=117970
- 青木メトリクス: http://www.sra.co.jp/people/aoki/IntroductionToOOAOOD/chapter4/Chapter4.htm
- OomMetricLCOM example2. のようにするとテキストベースでも使える。
- 青木 HF (抽象度): サブクラスが多いと値が小さい
- 青木 RF (全体度): 参照されていると値が小さい、参照していると大きい
- 青木 PF (多層度): 独特のメッセージが多いと値が小さい
- 青木 HF-RF: 左が抽象 上が単純
- OomMetricWMC は squeakland05 で動かない (ObjectMemory classVarNames が存在しないというエラー)
で、これを使って 2.7, 3.6, squeakland05 とどう変わってどこを直すべきなのかを調べようと思ったんだけど、出てくる数字の意味がイマイチ分からず手をつけられませんでした。