[「測って作る 測った通り作る」ためのJAVAメトリクス解析ツール]
JAVA プログラムのソースコードを解析して、各種メトリクスを採取するツールです。
「測って作る 測った通り作る」というのは、どこかの会社の宣伝用コピーですが、これを地で行くことを目的として作りました。結果は Excel ブックに出力されますので、自由に編集加工することができます。
開発言語には、(なぜだか)Visual Basic を使って作りました。Visual Basic といっても、オブジェクト指向機能であるクラスモジュール機能を駆使しています。どんどん機能拡張やバグ対応をしていく中でコード量もだいぶ多くなってきたため、メトリクスや問題の多いコードの部分を特定したくなったこともありましたが、悲しいことに Visual Basic のメトリクス測定はできないのです。
JAVAでシステム開発をするときの生産性評価やプログラムの品質評価に使えますので、是非活用してください。
ダウンロードはこちら (JMA.zip, 1,592KB)
1999/10/21 バージョン1.0.1をリリースしました。修正履歴へ
※
本ツールは、ご自身の責任の元でご利用頂くようお願いいたします。
本ツールに関する問題点及びその問題点が原因で発生した損害等に関して、オージス総研ならびに当編集部は一切責任を持ちません。
また、2002年3月現在、編集部では本ツールのメンテナンスを終了しており、
サポートやバグ対応は行っていません。予めご了承ください。
メトリクスの測定
従来のステップ数ベースのメトリクスに加えて、オブジェクト指向のメトリクスとして、クラス数、メソッド数、ステートメント数などを自動的に計算します。ざっと、以下のようなメトリクスが自動的に採取できます。
サマリ
ファイル数、パッケージ数、クラス数、メソッド数、行数
ファイルメトリクス(各ファイルについて)
LOC(命令行、コメント行、ブランク行)、コメント比率、クラス数
クラスメトリクス(各クラスについて)
属性数、メソッド数、ステートメント数、staticブロック数、アクセス制御子、抽象クラスの区別、クラス or インタフェース
メソッドメトリクス(各メソッドについて)
staticか否か、変数の数、ステートメント数、種類ごとのステートメントの数(if, while, do, return, throw ...)
ただし、このツールは基本的にあるひとつのファイル単独で解析を行い、他のファイルとの関係までは解析しません。したがって、継承の深さ、オーバーライドされたメソッドの数といった、複数のファイルやクラスにまたがるメトリクスは採取できません。
またオブジェクト指向のメトリクスについて詳しく知りたいという方は、こちらの本を是非お読みください。
プログラム診断機能
ちょっとしたプログラム診断機能もサポートされています。
これは、メトリクス解析をする途中で、ロジックが多過ぎたり、アルゴリズムが複雑過ぎるクラスやメソッドを発見した場合、その部分を問題点として特定し、出力用 Excel シートに書き込む機能です。
プロジェクトの生産性や、コード品質の測定
このツールを使用するタイミングですが、JAVA のシンタクスにきちんと対応したソースコードになっている必要があるため、少なくともプログラミングが終了し、コンパイルまで完了した段階からになります。
このツールを使うことで、最終成果物であるソースコードの「規模」を数えることができますから、あとは工数を数えれば、ステップ数/人月、クラス数/人月といった生産性数値の計算も容易に行うこともできます。
またプログラム診断機能を使えば、複雑度の大きいメソッドやクラスなどを発見できるため、保守上問題になる部分を特定することができます。繰り返し型開発を採用するプロジェクトでは、最初のイテレーション(1回の繰り返しの単位)で発見した問題点を以降のイテレーションで改善する、といった使い方をすることもできるでしょう。
既存のソースコードのリバース
人の作ったプログラム、たとえば JDK (Java Developer's Kit) のソースをこのツールにかけてみるのも興味深い使い方です。出力された Excel ブックを JDK のソースをブラウズするための、ファイルやクラス、メソッドの一覧表として使うこともできます。
ちなみに、カルトクイズの問題3「JDK1.1.7 に含まれる java 以下のパッケージの中で、もっとも if 文の多いメソッドはどれか?」は、このツールを使って作りました。
本ツールは、ご自身の責任の元でご利用頂くようお願いいたします。
本ツールに関する問題点及びその問題点が原因で発生した損害等に関して、オージス総研ならびに当編集部は一切責任を持ちません。
また、2002年3月現在、編集部では本ツールのメンテナンスを終了しており、
サポートやバグ対応は行っていません。予めご了承ください。
© 1999-2002 OGIS-RI Co., Ltd. |
|