FAQ

QA・C/QA・C++

メトリックスに関する

ID.1

Q. QACのメトリックサマリについて教えてください。


QA Cのメトリックサマリについての推奨値の情報を教えていただけないでしょうか。

A.


代表的なメトリックスの標準値を示します。
Version: 4.0.3J, 4.2J
OS: SunOS 4.x, SunOS 5.x, HP-UX 9.x, HP-UX 10.x, Windows 95/98/NT 4.0

QA Cの出力にあるキビアット図の中で境界値が決められている一部メトリックスを抜粋し、その標準値が何から算出されているかについて説明します。

元々メトリックスの研究と言語の話とは別物で、メトリックス値の算出式は表示しても、その値に対する合格点等、データを出して説明している参考文献も少ないため、文献からメトリックの基準値を得ることは困難です。

QA Cのメトリックスの基準値は、QA Cの製造元である PRL社が関わりをもったソースコードと算出式から得られた値の統計です。

最小値(奨励値)に関する算出基準はわかりませんが、最大値については若干参考資料に説明がありますので以下に示します。

識別子 メトリックス名 最小値 最大値
STCYC 経路複雑度 2 10
STPTH 静的経路数見積 4 200
STMIF 制御構造のネスティング 1 5
STSUB 関数呼び出しの数 1 10
STLIN 保守可能なコード行数 1 200
 
STCYC 判定数プラス1で算出される値。
McCabe(1976)による と制約をもったソフトウェアは 最大値を 10と提案しています。 場合によっては、承認(署名)付きで 20まで緩和できる値です。 QA Cでは 10, 30 ,100というデリミタを設けて 3段階の警告メッセージを表示します。 キビアット図では一番厳しい 10を最大値に設定しています。
STPTH 可能性がある経路数の上限値。
Nejmeh(1988)および Hattonと Hopkins(1989)の研究で、 パスカウントが 200~300 を超えると メンテナンス上問題が発生することが指摘されています。
また、AT&Tでは 200が保守費用曲線の変化点となるという認識をもっています。
QA C では、200, 1000, 100000というデリミタを設けて 3段階の警告メッセージを表示します。 ご提案できる静的経路数の値 は200~1000 だといえます。1000 を超えるものについては承認付きのものに限り、 手動によるテストを行う必要があります。
STMIF 制御構造の最大ネスティング数。
ANSIの規格では各ネスティングレベルの最低規定値(限界)がレベル 15と設定されています。 main(){{{{{{{{{{{{{{{}}}}}}}}}}}}}}}
Hatton は、取り扱ったソースコードの全体をネスティングレベルが悪い順に 11段階に分けると 平均 121, 4, 3, 2, 2, 1, 1, 1, 0, 0, 0 になったと述べています。 121という極端な値を除外して、そこから 5という値が算出されています。
STSUB 関数呼び出し数。
Brandl(1990)の論文で複雑度と関数のコーリングツリーの形状を明らかに しているようです。 (弊社にこの論文がないので未確認です)入手可能でしたらそちらをご参考ください。
Brandl.D L(1990)"Quality measures in design", ACM Sigsoft.Software Engineering Notes, vol 15, no.1
STLIN 関数の { から } までの行数。
Thomas Plumは関数の行数が50行を超えないよう推奨しています。 QA Cでは50を超えると警告メッセージを表示します。


参考資料は以下の通りです。

1. Hatton Les, 「Safer C: Developing Software for High-integrity and Safety-critical Systems」- (McGraw-Hill International Series in Software Engineering)
I. Title II Series 005.133 ISBN 0-07-707640-0

2. QA C製品概要書

3. QA Cコマンドラインマニュアル
コマンドラインマニュアルに、おおよその算出根拠、参考論文が記述してあります。 "QA C version 4.0 Command line"マニュアルの付録(189,190ページ)に理想値が載っていますので, そちらを参照して下さい。
  日本語版:”QA C ver4.0 コマンドライン 189,190ページ”を参照下さい。
  英語版:”QA C ver4.0 command line Page 193,194”を参照下さい。

<< メトリックスに関するに関するFAQ一覧へ戻る