Object-Oriented Metrics
使用方法
このオブジェクト指向メトリクス(OOM)プログラムは、下記にリスト
されている項目を計測することができます。
- 基本メトリクス
- LOC (lines of code)
- NOA (number of attributes)
あるクラスの属性の数(インスタンス変数の数+
クラス変数の数) を計測します。
- NCV (number of class variables)
- NIV (number of instance variables)
- NOM (number of methods)
あるクラスのメソッドの数(インスタンスメソッ
ドの数+クラスメソッドの数)を計測します。
- NCM (number of class methods)
- NIM (number of instance methods)
あるクラスのインスタンスメソッドの数を計測
します。
- CKメトリクス
- WMC (weighted methods per class)
あるクラスのメソッドの重さ(複雑さの総和)を
計測します。WMCが高いほど、複雑であり、メンテナンスのコストが
かかることを示唆します。
- DIT (depth of inheritance tree)
あるクラスのスーパクラスの数を計測します。
DITが高いほど、継承されている変数やメソッドが多いことを表しま
す。
- NOC (number of children)
あるクラスのサブクラスの数を計測します。NOC
が高いほど、サブクラスへの影響力が強いので、メンテナンスをす
る場合には注意をする必要があることを示唆します。
- CBO (coupling between objects)
あるクラスに関係しているクラスの数を計測し
ます。CBOが高いほど、他のクラスに依存していることを物語り、複
雑でメンテナンスのコストがかかることを示唆します。
- RFC (response for a class)
あるクラスに関係しているメッセージの数を計
測します。RFCが大きいほど、受信したメッセージを遂行するため
に、発信しなければならないメッセージの数が多いことを物語り、
複雑なクラスであることを示唆します。
- LCOM (lack of cohesion of methods)
あるクラスの凝集性の欠如を計測します。LCOM
が小さいほど凝集性が高く、メソッドの強度が高いことを表します。
LCOMが大きいものは、変数を共有している部分が多いことを表し、
メンテナンス性が低いことを示唆します。
詳しくは下記の文献をご覧下さい。
- Shyam R. Chidamber and Chris F. Kemerer, "A Metrics Suite
for Object Oriented Design," IEEE Transactions on Software
Engineering, Vol.20, No.6, pp.476-493, 1994.
- Shyam R. Chidamber and Chris F. Kemerer, "Towards a
Metrics Suite for Object Oriented Design," OOPSLA'91
Proceedings, pp.197-211, 1991.
- 佐原伸, 「オブジェクト指向システム分析/設計Q&A」, ソ
フト・リサーチ・センター, ISBN4-915778-60-6, 1995.
WMC(Weighted Methods per Class) に関しては下記の青木淳さんのページもご覧下さい。
- 青木メトリクス
- HF (hierarchy factor)
指定されたスコープの中で、あるクラスの抽象
性(具体性)を計測します。0の場合は、そのクラスがインヘリタンス
(クラス階層)の一番上に位置することを意味し、階層を下がるにし
たがって1に近づきます。0に近い値を持つクラスほど、クラスの抽
象性が高く、再利用性が良好であることを示唆します。
- RF (reference factor)
指定されたスコープの中で、あるクラスの全体
性(部分性)を計測します。クラスの相互参照関係(半順序)のどのあ
たりに位置するのかを表します。他のクラスを参照する割合が大き
いほど1に近づき、0に近いほど、クラスの独立性が高く、部品とし
て使われる可能性が高いことを示唆します。
- PF (polymorphism factor)
指定されたスコープの中で、あるクラスの多相
性(一義性)を計測します。クラスが所有するメッセージが、他のク
ラスの所有するメッセージとどのくらい重なっているのかを表しま
す。1に近づくほど、メッセージが重なっていることを示し、ポリ
モーフィズムが有効に働いている可能性があることを示唆します。
反対に、0に近づくほど、メッセージが統一されていないことを表し
ます。
- CP (class popularity)
指定されたスコープの中で、あるクラスの人気
度を計測します。人気の高いクラスほど、他のクラスから利用され
ていることを表しています。人気の高いクラスが集中しているほど、
依存しているクラスが統一されていることを表し、良好なプログラ
ムであることを示唆します。人気度はプログラムの中でのクラスの
出現頻度と考えることができますから、出現頻度のランキングと出
現頻度の間にはZipfの法則が成り立つことが多いようです。
- MP (message popularity)
指定されたスコープの中で、あるメッセージの
人気度を計測します。人気の高いメッセージほど、他のクラスから
利用されていることを表しています。人気の高いメッセージが集中
しているほど、発信されているメッセージが統一されていることを
表し、良好なプログラムであることを示唆します。人気度はプログ
ラムの中でのメッセージの出現頻度と考えることができますから、
出現頻度のランキングと出現頻度の間にはZipfの法則が成り立つこ
とが多いようです。
詳しくは下記の文献をご覧下さい。
- 青木淳, 「オブジェクト指向システム分析設計入門」, ソフト
・リサーチ・センター, ISBN4-915778-19-3, 1993.
- 青木淳, 「オブジェクト指向システム分析設計入門」, 1992-1998.
- 佐原伸, 「オブジェクト指向システム分析/設計Q&A」, ソ
フト・リサーチ・センター, ISBN4-915778-60-6, 1995.
Copyright (C) 1996 AOKI Atsushi
Modified for Squeak by NISHIHARA Satoshi, 1999