プログラムのモジュールを測る尺度として「凝集度」というのがありますが、これは、モジュールが如何に単一の機能で構成されているか、逆にいえばモジュールの中に幾つかの機能が混ざっている場合、その混ざり方を測るものです。
モジュールの良否の判定材料としては、この他に「大きさ」や「複雑さ」というものもあります。機能は単一であっても、その実現方法として複雑なプログラミングをしてしまうこともあります。そのため、「凝集度」の他に「複雑度」というものも加味しなければなりません。
複雑度の尺度としては、 McCabe の指標 と Halstead の指標が有名ですが、ここでは McCabe の指標について簡単に説明します。
McCabe の指標は、グラフ理論によって次の式によって求められます。
V(G) = e - n + 2p
で、e は辺の数、n は節の数、p は分離独立したグラフの個数。
関数の入り口が1つで、出口も1つの場合、p = 1 となり、さらに、e と n は「if」などの判定条件(π)によって生成されるとすれば、上の式は、
V(G) = π + 1
となります。つまり、「if」の数 + 1 ということになります。
見てのとおり、この式は余りにも簡単ですが、その分、必ずしも実態を表さないケースもあります。
実際、「if」の数はそれ程多くなくても複雑なプログラムは存在します。そこで変形として、上の式に、そのモジュールで使用されている「変数の種類」を加える方法もあります。
V(G) = π + 1+ v
ただし、v はそこで使用されている変数の種類の数
しかしながら、McCabe の指標も、これだけでは複雑さを必ずしも上手く判定できるとは限りません。「凝集度」や「大きさ」といった尺度も併せて適用することで、より一般的な判断ができるでしょう。
【参考文献】
「ソフトウェアの品質管理」 日科技連
菅野文友 著
ソフトウェア品質管理シリーズ 巻1
ISBN 4-8171-6101-9
「ソフトウェアの性能とテスト」 マグローヒル
シューマン 著 箱崎勝也 訳
ソフトウェア工学講座 第2巻
ISBN 4-89501-091-0
McCabe の指標、 Halstead の指標共に詳細に書かれています。