ハルステッド複雑性尺度
ハルステッド複雑度指標は、モーリス・ハワード・ハルステッドが1977年に発表したソフトウェアメトリクス[1]であり、ソフトウェア開発の経験科学の確立に関する論文の中で提唱された。ハルステッドは、ソフトウェアのメトリクスは、異なる言語におけるアルゴリズムの実装や表現を反映するべきであるが、特定のプラットフォーム上での実行とは独立しているべきであるという見解を示した。したがって、これらのメトリクスはコードから静的に計算される。
ハルステッドの目標は、ソフトウェアの測定可能な特性とそれらの関係を特定することでした。これは、物質の測定可能な特性(気体の体積、質量、圧力など)とそれらの関係(気体方程式に類似)を特定することに似ています。したがって、彼のメトリクスは実際には単なる複雑さのメトリクスではありません。
計算
与えられた問題について、次のように考えます。
- = 異なる演算子の数
- = 異なるオペランドの数
- = オペレーターの総数
- = オペランドの総数
これらの数値から、いくつかの指標を計算できます。
- プログラム語彙:
- プログラムの長さ:
- 計算された推定プログラムの長さ:
- 音量:
- 難易度:
- 努力:
難易度の尺度は、コードレビューを行うときなど、プログラムの作成や理解の難しさと関連しています。
労力の尺度は、次の関係を使用して実際のコーディング時間に変換されます。
- プログラミングに必要な時間:秒
Halstead が配信したバグ (B) は、実装におけるエラーの数の推定値です。
- 報告されたバグの数:または、最近では受け入れられています。[1]
例
次のCプログラムを考えてみましょう。
main () { int a , b , c , avg ; scanf ( "%d %d %d" , &a a , & b , & c ); avg = ( a + b + c ) / 3 ; printf ( "avg = %d" , avg ); } 異なる演算子( ) は次のとおりです: 、、、、、、、、、、、、、、、main(){}intscanf&=+/printf,;
異なるオペランド()は次のとおりです: 、、、、、、abcavg"%d %d %d"3"avg = %d"
- 、、
- 、、
- 計算された推定プログラムの長さ:
- 音量:
- 困難:
- 努力:
- プログラミングに必要な時間:秒
- 配信されたバグの数:
参照
参考文献
- ^ ab Halstead, Maurice H. (1977). 『ソフトウェア科学の要素』 アムステルダム: Elsevier North-Holland, Inc. ISBN 0-444-00205-7。
外部リンク
- Halstead メトリック - オブジェクト指向環境 (特に Java を参照) での Halstead メトリックの計算と使用に関する詳細な説明。
- ハルステッド メトリックの計算 - ハルステッド メトリックの測定。
- サンプルプログラムによる説明 - 例(PDFの6ページ目)
- スクリプトでハルステッドメトリクスを計算し、コメント付きコードの検出に使用する
- IBM
- ハルステッド指標を計算する計算機