ソフトウェア開発支援
IR情報 会社情報

FAQ

QA・C/QA・C++

メトリックスに関する

ID.7

Q.プログラム難易度(STDIF)が小、流用度(STMOB)が良、プログラム規模(STVOL)が小なのに、バグ見積(STBUG)が非常に大きい理由はなんですか?

1.経緯

分野ごと代表のプロジェクトファイルをQA Cにかけました。その結果、ファイルの方でプログラム難易度(STDIF)、流用度(STMOB)、プログラム規模(STVOL)、バグ見積 (STBUG)を抽出し、関数の方では、STCYC STMIF STXLN STXLN STPTH STPBGを抽出し、見比べました。

2.疑問点

その中で、あるプロジェクトが、プログラム難易度(STDIF)が小、流用度(STMOB)が良、プログラム規模(STVOL)が小なのに、バグ見積(STBUG)が非常に大です。

この理由がほしいのです。他にどんな要因が考えられるのか、また、どんな要因をなくせば、バグ見積は減少するのか、知りたいと思います。

A.

STBUGは、オペランド数(STOPN)または変数の数(STVAR)が大きいと、大きな値になります。
Version: 4.2J
OS: SunOS 4.x, SunOS 5.x, HP-UX 9.x, HP-UX 10.x, Windows 95/98/NT 4.0

拝見したファイルの中の STBUGを見る限りは、1ファイル当り特別に大きな STBUGが出ている例は見当たりません。せいぜい多くても1か2程度のようです。

STBUGの定義を今一度コマンドライン・マニュアルでご確認いただきたいのですが、STBUGは、オペランド数(STOPN)または変数の数 (STVAR)が大きいと、非常に大きな値となってきます。外部変数の数(STECT)が桁違いに大きい場合、それが足を引っ張ります。

各ファイルについて、STOPN, STVAR, STECTの各値をチェックしてみて下さい。バグ見積(STBUG)が大きいファイルは、外部関数の定義部が非常に大きな場所を占めている形になっていると思います。

QA Cの STBUGは、その算出基準から見て、多くの種類の定義が入ったファイルに対しては大きな値を示すようにできています。しかしながら、これが直ちに、外部 変数を使うのは好ましくない、という風に短絡することはできないことは、ソフトウェアを作成される方ならおわかりいただけるところで、論理を記述する上で 必要であれば、それを削ってまで QA Cの成績を上げることのみを優先する必要はありません。ただ、一般論として、あまりにも多くの外部変数を必要とする場合には、やはり保守性の面で難がある ことは否定できませんが‥‥

強調しておきたいのは、STBUGが「バグ見積」と名前が付いているからと言っても、これが「バグが必ずxx個あります」という指標ではない、ということです。

各メトリックスは、複雑なソフトウェアの「品質」を極力単純な数式で代表させることはできないか、という観点で各研究者が知恵を絞ってきた事柄で す。よって、アンプの世界と同様に、自ずから有効な帯域というものがあります。全体の8割位の解析対象に対して、実感と近い値が出ていれば、それで十分と 考えて下さい。

例えば、イベント駆動型のプログラムでは、少なくとも1箇所は大規模な switch-caseによるイベント分岐が存在し、非常に大きな経路複雑度(STCYC)を持ちます。

しかし、この関数を STCYCを下げるためだけに、switch-caseを分割するとしたら、それは無茶というものではないでしょうか。また、経路複雑度(STPTH)に ついては、たった1つの関数の STPTHが 50,000,000を示しただけで、他の関数の STPTHが良好であっても、平均値を求めると、とてつもなく大きな値になってしまいます。

よって、各メトリックスの算出基準を理解し、どのファクターが大きい(小さい)と極端な値を示すか知った上で、該当するファイル(関数)において、 そのファクターが大きい(小さい)ならば見逃す、というような運用を貴社で徐々に積み上げていただければ、と思います。今後、QA Cのメトリックスを活用していただくに際して、現実の数値と QA Cの 出力値とを、絶えずペアで蓄積していただくことをお勧め致します。

貴社におかれましても、独自の算出方法で各種の実測値を算出されていらっしゃる ことと思います。すぐには相関関係は見出せないとは思いますが、一方に実測値、 他方に QA Cの出力をプロットした場合、 (縦横はどちらでも構いませんが)相互に 1次関数で近似できたり、対数を取ると比例関係が見出せることがあります。 そこまでデータが蓄積できたら、近似式 Y=aX+b の係数 a, bを求めてみて 下さい。QA Cの出力値を、貴社の実測値の尺度に合わせることができます。

evernote share Google plus Face Book Google plus Liked In

detail__vid--text.png

はい (0)
いいえ (0)

PAGE TOP

本ウェブサイトではサイト利用の利便性向上のために「クッキー」と呼ばれる技術を使用しています。サイトの閲覧を続行されるには、クッキーの使用に同意いただきますようお願いいたします。詳しくはプライバシーポリシーをご覧ください。