JPS61170837A - プログラムの品質予測方式 - Google Patents

プログラムの品質予測方式

Info

Publication number
JPS61170837A
JPS61170837A JP60012293A JP1229385A JPS61170837A JP S61170837 A JPS61170837 A JP S61170837A JP 60012293 A JP60012293 A JP 60012293A JP 1229385 A JP1229385 A JP 1229385A JP S61170837 A JPS61170837 A JP S61170837A
Authority
JP
Japan
Prior art keywords
program
module
operators
operands
standard curve
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP60012293A
Other languages
English (en)
Inventor
Mikio Okada
幹夫 岡田
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Fujitsu Ltd
Original Assignee
Fujitsu Ltd
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Fujitsu Ltd filed Critical Fujitsu Ltd
Priority to JP60012293A priority Critical patent/JPS61170837A/ja
Publication of JPS61170837A publication Critical patent/JPS61170837A/ja
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment

Landscapes

  • Engineering & Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Computer Hardware Design (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)
  • Devices For Executing Special Programs (AREA)

Abstract

(57)【要約】本公報は電子出願前の出願データであるた
め要約のデータは記録されません。

Description

【発明の詳細な説明】 〔産業上の利用分野〕 本発明はプログラムの品質予測方式に係シ、ソースプ四
グラムをコンパイル終了したとき1個々のモジュール毎
のそのオペレータ種類数とオペレータ総数および各モジ
ュール内のオペランド種類数とオペランド総数を求める
ことKよシそのプログラムの品質の良否を推定判断でき
るようセしたものである。
〔従来の技術〕
プログラムを新らしく作成する場合、この作成したプロ
グラムが正常に動作するかどうかをテストシ、障害部分
を検出することが必要である。
例えば第6図(al K示す如く、モジュールA、B。
Cよシ構成されるプログラムPのテストを行うとき、こ
のプログラムをコンパイルによりシステム記述言語から
機械言語に落してテストを行うことになる。このテスト
において障害の発生状態は。
第6図(blに示す如く、コンパイル終了後テストを開
始したとき、テスト開始後に障害数は急増し。
それから障害数の増加状態が徐々に少なくなシ。
最後に障害数の増加状態が抑制されるというようなメタ
ンを有する。そしてプログラムの品質をこのテストにお
ける障害の累積をみて評価していた。
この場合、各モジュールA、B、C毎にテストを行ない
、これらを結合したプログラムPとしてテストを行ない
、それからこのようなモジュールの組合せにより構成さ
れたプログラムPを総合してテストを行ってその障害を
修正して使用することになる。なおプログラムの障害の
原因としては論理ミス、ゴーデングミス、初期化忘れ等
積々なものがある。
〔発明が解決しようとする問題点〕
前記の如く、プログラムをテストする場合、その最終的
な障害推定数をEfとすると、その障害発生パタンはほ
ぼ第6図(b)の如きものとなる。したがって9例えば
モジュール人のテスト走行時間をT、としたときその約
手分位のテスト走行時間T1における障害累積数とそれ
までのバタンを調らべれば最終的な障害推定数Efは見
当がつく。それ故、この障害推定数Efの値が大であれ
ば品質のよくないプログラムであることがわかる。
ところでプログラムの修正はそのテストの最初では簡単
に行うことができるものの次第に困難となる。実際問題
としてそのプログラムの最終的な障害推定数が得られる
前記T8では障害の修正としては遅すぎ、その修正に大
へんな工程を必要とする。しかもこの時点ではプログラ
ムの構成の変更のような大きな修正が時期的に不可能と
なっていた0 し九がって、このようにテスト走行時間を約手分位経過
しなければ判断できなかつ九プログラムの品質の良否を
、その障害の修正が簡単な初期の時点で判定することが
強く要望されていた。
〔問題点を解決するための手段〕
前記の如く、プログラムのテストのときプログラムの大
きな修正が不可能な時間を経過しなければそのプログラ
ムの良否が判定できないという問題点を改善するため9
本発明のプログラムの品質  l予測方式では、テスト
すべきプログラムが格納されるソース;−ド保持部と、
テストすべきプログラムのモジュールをオペレータとオ
ペランドに分解する分解部と、テストすべきプログラム
の各モジュールよシ得られたデータにもとづき最小2乗
近似曲線を作成する解析部と、標準曲線を保持する標準
曲線保持部と、各モジュールをこの準準曲線と比較する
比較部を設け前記各モジュールと前記最小2乗近似曲線
との関係により各モジュールの良否や前記各モジュール
と標準曲線との関係により各モジュールの良否を判定す
るようにしたことを特徴とする。
〔作用〕
本発明によりブログラムをそのコーディング終了時点で
品質の良否を予測することができるので。
プログラムにおける問題点の発見を早く行うことができ
る。
〔実施例〕
本発明を一実施例にもとづを詳述するに先立ち。
その概略を第2図乃至第4図により説明する。
プログツムをテストするとき高級言語からコンパイルに
より機械言語に変換する。このコンパイル終了の時点で
、プログラムを構成するモジュール毎にそのオペレータ
種類数とオペレータ総数を求める。これを第2図のグツ
7で表わす場合、その各点が一つのモジュールを示して
いる。そしてこれらの各点より最小2乗近似曲線をYと
して作成する。
ところでこれを単体および結合テストしたとき。
第2図の各点に付記された数の障害が発生し、しかも丸
印のものは困難性の大きな障害の存在したものを示して
いる@この場合、前記Yは次式で表  ゛わすことかで
きる。
Y=aEXP(bX) ここでXはオペレータ種類数、Yはオペレータ総数、a
、bは定数でらる。
したがって、第2図における鎖線領域内のものがその障
害に困難性が大でかつ障害発生数が大きい、いわゆる品
質不良のものである。ところでオペレータ種類数が大で
前記曲線より上方のものに不良のものが多いというこの
傾向はほとんどのプログツムに共通の現象であることが
本発明者の研究の結果わかったので、これを判定するこ
とにょシコンパイル終了時点でそのプログラムの良否を
判別することができる。このような不良モジュールの存
在を事前に検出できるので、モジュールの分割等により
修正することができる。
また前記モジュール毎にそのオペランドの種類数と総数
を求める。第3図において横軸はオペランドの種類数、
縦軸はオペランドの総数であシ。
各点は一つのモジュールを示している。そしてオペラン
ドの種類数をXとし′、オペランドの総数をYとしたと
き、これらを次式で近似することができる。
y = c X’ ここでc、dはいずれも定数である。
ところでこれをテストしたとき、第3図の各点に付記さ
れ九数の障害が発生し、しかも丸印のものはその困難性
の大きな障害の存在を示している。
したがって第3図における鎖線領域内のものがその障害
に困難性が大でかつ障害発生数が大きい。
いわゆる品質不良のものである。それ故、オペランド種
類数が大で前記曲線よ)上方のものに不良のものが多い
という傾向があることがわかる。
それ故、第2図について説明した如く、オペレータ種類
数が大で前記曲線よシ上のものまたは。
第3図について説明した如く、オペランド種類数が大で
前記曲線よシ上のものを品質不良とみなすことにより、
大部分の不良品質プログラムを検出できる。゛しかもこ
れらのチェックでは漏れる。第3図に示す入印のものも
9次に説明する第4図に示す本発明の判別基準により検
出することができる0 このような傾向は、同一言語であればプログラムの種類
によらず略同−傾向を有する。
前記第2図および第3図に示す如き傾向にもとづき1本
発明ではプログラムの良否を判断するのく、各モジュー
ル毎の(オペレータ総数−オペレータ種類数)及び(オ
ペランド総数−オペランド種類数)を求め、そ□れぞれ
を近似する標準曲線    −(最小2乗近似曲線)を
求める。これらの標準曲線は、オペレータ総数について
は Y=aEXP(bX)      − という指数関数で近似で巻、オペランド総数については y = c x’ という実数ベキ関数で近似できる。
そしてそれぞれのグラフに対してそれぞれ各種類数の閾
値り、、 、 D、、を定め、これよシ大きくて標準曲
線以上の領域にある七ジュールを品質不良のものと判断
する。また前記閾値よシ小の種類数のものに対してはそ
れぞれ標準曲線よシ各種類数の閾値11hl * IJ
k1以上の領域にあるモジュールを品質不良のものと判
断する(第3図のΔ印の゛ものはこれで検出できる)。
すなわち第4図の斜線領域を品質不良領域とする。この
ようにしてテスト走行を行うに先立ちその良・不良を判
断することができる。□′ なお、一般的な傾向として種類数の閾値り、よシ大の不
良領域のもめはモジュール分割が悪く。
DIE  よシ小の不良領域のものは処理論理が悪い場
合が多い。
ここでオペレータとして定義されるものは算術演算子、
比較演算子、論理演算子1区切記号9組込み関数等及び
IP−THFiN、DO−END、GOTO。
WHILE等の文で1hオペランドとしては実行文の中
のオペレータ以外の変数、定数をオペランドと定義した
。すなわち、オペレータ、オペランドは宣言文、注釈文
を除く実行文を対象とする。
またモジュールとは1つのコンパイル単位を、モジ、瓢
−ル群と拡機能単位(FORTRANコンパイラ等)を
意味する。
次に本発明の一実施例を第1図および第5図により説明
する。
第1図は本発明の一実施例構成図、第5図は本発明の詳
細な説明図である。
第1図において、1はソースコード保持部、2はオペレ
分解−オペランド分解部、3は統計解析データ作成部、
4は統計解析部、5はグラフ出力部、6は第1判定部、
7は比較部、9は標準曲線保持部である。
ソースコード保持部1はテストすべきプログラムが格納
されているものである。
オペレータ・オペランド分解部2はソースコード保持部
1よシテスト対象のプログラムを構成する七ジュールを
順次読出して、これをオペレータとオペランドに分解す
るものである。
統計解析データ作成部3はオペレータ・オペランド分解
部2よシ伝達されたオペレータとオペランドを、各モジ
ュール毎に解析して、モジュール毎のオペレータ総数と
オペレータ種類数、すなわち第5図の黒点の位置を算出
するものである。
統計解析部4は前記統計解析データ作成部3よシ出力さ
れた各モジュール毎のオペレータ総数とオペレータ種類
数にもとづき、その最小2乗近似曲線つまシ第5図の一
線を算出するものである0グラフ出力部5は、前記統計
解析データ作成部3および前記統計解析部4により求め
られた各モジュール毎のオペレータ総数とオペレータ種
類数を示す点および最小2乗近似曲線を出力するもの。
すなわち第5図の図面を出力するものである。この出力
された各曲線は標準曲線保持部8に格納される。なお、
第5図において黒点の連続的に接近し九部分が縦方向の
短直線の形で示されている0   ′判定部6はプログ
ラムを構成するモジュールの良・不良を判定することに
よりブ冒グラムの品質を判定するものであって、モジュ
ールの良・不良を判定するために必要な閾値り、i、 
Lh、およびDM* * IJkjをそれぞれ保持部6
−0.6−IKて保持し、モジエールのオペレータ種類
数が閾値DHIよシ大きなときそのオペレータ総数がそ
の最小2乗近似曲線よシ大きいか否かをチェックし、大
きいとき不良と判断する。また閾値DulKより小さい
とき、そのオペレータ総数が最小2乗近似曲線よシ閾値
Lhx以上大きいか否かをチェックし、大きいとき不良
と判断する。またモジュールのオペランド種類数が閾値
I)IIよシ大なるとき、そのオペランド総数がその標
準曲線よ〕大きいか否かをチェックして、大きいとき不
良と判断する0また閾値D■よシ小さいときそのオペラ
ンド総数が標準  −曲線よシ閾値Lhs以上大きいか
否かをチェックし。
大きいとき不良と判断する。
比較部7は、オペレータ・オペランド分解部2から伝達
されたオペレータとオペランドを各モジュール毎に解析
してモジュール毎のオペレータ総数とオペレータ種類数
およびオペランド総数とオペランド種類数を作成する。
そしてこれを標準曲線保持部8に保持され九標準曲線と
比較する。
標準曲線保持部8は、数種のプログラムから得られた。
プログラムの種類に依存しないオペレータ総数とオペレ
ータ種類数の最小2乗近似曲線と。
オペランド総数とオペランド種類数の最小2乗近似曲線
が保持されている。前記の如く、オペレータの定義とし
て算術演算子、論理・比較演算子。
区切記号9組込み関数、IF−THI3N@DO−EN
D等の文を対象とし、オペランドの定義として変数・定
数を対象とし、ただしオペレータ・オペランドは宣言文
、注釈文を除くものとしたとき、オペレータ、オペラン
ドの種類数Xと総数Yとの関係を程々のプログラムにつ
いて調らべると以下のように近似することができる。す
なわちオペレータのXとYとの関係は Y :2.36 EXP (0,14X)で近似させる
ことができ、オペランドのXとYとの関係は Y:0.25X”°sa で近似させることができる。これらの各式で表わされる
曲線を標準曲線として、この標準曲線保持部9に保持し
ておく。
次に第1図の動作について説明する。
(1)  標準曲線の作成 はじめにソースコード保持部IK被テストプログラムと
同一言語で作成された複数のプログラムを格納する。オ
ペレータ・オペランド分解部7.2はこれらの各プログ
ラムのモジュールを順次読出し−Cそジエール毎にオペ
レータとオペランドに分解し、統計解析データ作成部3
によりモジュール毎のオペレータ総数とオペレータ種類
数およびオペランド総数とオペランド種類数をそれぞれ
求め統計解析部4に送出する。統計解析部4ではこれら
のモジュール毎のオペレータ総数とオペレータ種類数お
よびオペランド総数とオペランド種類数により、第2図
および第3図に示す如く、オペレ−タ総数−オペレータ
種類数およびオペランド総数−オペランド種類数の最小
2乗近似曲線を作成する。このようにして作成された2
つの最小2乗近似曲線は、グラフ出力部5によ)出力さ
れ、標準曲線保持部8に保持される。
(2) プログラムの品質予測 次にソースコード保持部1からテストすべきプログラム
のモジュールを順次読み出してこれらをオペレーターオ
ペランド分解部2にてモジュール毎にオペレータとオペ
ランドに分解し、統計解析データ作成部3によりモジュ
ール毎のオペレータ値(オペレータ総数とオペレータ種
類数)およびオペランド値(オペランド総数とオペラン
ド種類数)を求めこれらを比較部7に送出する0比較部
7は標準曲線保持部8に保持されている。前記2つの最
小2乗近似曲線とこれらとを比較して、前記オペレータ
値とその最小2乗近似曲線との距離(オペレータ総数の
差)およびオペランド値とその最小2乗近似曲線との距
離(オペランド総数の差)を判定部6!f−送出する0
判定部6はこれらをあらかじめ保持部6−0.6−1に
保持している各閾値と比較する。オペレータ値について
は、そのオペレータ種類数が閾値D■よシ大なるモジュ
ールにおいてそのオペレータ総数が最小2乗近似曲線Y
よ〕大きなものを不良モジュールと判定する。
またオペレータ種類数が閾値り組よシ小なるモジエール
においてはそのオペレータ総数が最小2乗近似曲11Y
よシ閾値Lk1以上大きなものを不良モジュールと判定
する。またオペランド値については、そのオペランド種
類数が閾値DM3よシ大きなモジュールKかいてそのオ
ペランド総数が最小2乗近似曲線よシ大きければ不良モ
ジュールと判定し、 I)isよシ小さいときはそのオ
ペランド総数が標準曲線である最小2乗近似曲線よ〕閾
値Lh意以上大きなものを不良モジュールと判定する。
このようにして第5図においてDullよシ大でYよシ
大きな領域に存在する黒点の七ジュールと、lD]よシ
小でYよF) Lhsだけ大きな曲線Y′の領域に存在
する黒点のモジュールとが不良モジュールとして判定さ
れる。そしてこの不良と判定されたモジュールを再検討
することになる。これKよシ。
第5図の点線Eの領域に存在する。困難性のきわめて大
きなモジュールも正確にチェックできる。
このようにして判定部6によりネ良と判定されたモジュ
ールを再検討してこれを修正することになる0 なお前記標準曲線の作成のとき、そのデータに被テスト
プログラムのデータを付加することもできる。この場合
、標準曲線作成時に算出した。被テストプログラムのモ
ジュール毎のオペレータ値(オペレータ総数とオペレー
タ種類数)およびオペランド値(オペランド総数とオペ
ランド種類数)を別にメモリで保持し、被テストプログ
ラムの品質予測の段階にこれらを使用してもよい。
また最新の言語でプログラムを作成したために他に同一
言語のプログラムがないような場合には。
そのプロゲラ・ムのみで前記の如き予測を行ってもほぼ
同様の結果を得ることができる。
(発明の効果〕 本発明によればテストプログラムのコンパイル終了の時
点で、前記の如きオペレータとオペランドに分解してこ
れをチェックすることによ〕不良モジュールの存在を検
出することができる。それ故、プログラムを作成したと
き、これをテストする以前の、修正し易い時点でその品
質を予測し。
しかも不良部分を検出できるので、プログラムを早期に
完成させることができる。
【図面の簡単な説明】
第1図は本発明の一実施例構成図、第2図〜第4図はモ
ジュールの不良検出説明図、第5図は本発明の詳細な説
明図、第6図は従来のテスト状態説明図である。 図中、1はソースコード保持部、2はオペレータ・オペ
ランド分解部、3は統計解析データ作成部、4は統計解
析部、5はグラフ出力部、6は判定部、7は比較部、8
は標準曲線保持部である。

Claims (1)

    【特許請求の範囲】
  1. テストすべきプログラムが格納されるソースコード保持
    部と、テストすべきプログラムのモジュールをオペレー
    タとオペランドに分解する分解部と、テストすべきプロ
    グラムの各モジュールより得られたデータにもとづき最
    小2乗近似曲線を作成する解析部と、標準曲線を保持す
    る標準曲線保持部と、各モジュールをこの標準曲線と比
    較する比較部を設け前記各モジュールと前記最小2乗近
    似曲線との関係により各モジュールの良否や前記各モジ
    ュールと標準曲線との関係により各モジュールの良否を
    判定するようにしたことを特徴とするプログラムの品質
    予測方式。
JP60012293A 1985-01-25 1985-01-25 プログラムの品質予測方式 Pending JPS61170837A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP60012293A JPS61170837A (ja) 1985-01-25 1985-01-25 プログラムの品質予測方式

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP60012293A JPS61170837A (ja) 1985-01-25 1985-01-25 プログラムの品質予測方式

Publications (1)

Publication Number Publication Date
JPS61170837A true JPS61170837A (ja) 1986-08-01

Family

ID=11801284

Family Applications (1)

Application Number Title Priority Date Filing Date
JP60012293A Pending JPS61170837A (ja) 1985-01-25 1985-01-25 プログラムの品質予測方式

Country Status (1)

Country Link
JP (1) JPS61170837A (ja)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007239673A (ja) * 2006-03-10 2007-09-20 Honda Motor Co Ltd 制御装置およびそのプログラム
JP2014002695A (ja) * 2012-06-21 2014-01-09 Aisin Aw Co Ltd 製品に対する品質評価システム及び品質評価方法

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2007239673A (ja) * 2006-03-10 2007-09-20 Honda Motor Co Ltd 制御装置およびそのプログラム
JP2014002695A (ja) * 2012-06-21 2014-01-09 Aisin Aw Co Ltd 製品に対する品質評価システム及び品質評価方法

Similar Documents

Publication Publication Date Title
Huda et al. A framework for software defect prediction and metric selection
US10025696B2 (en) System and method for equivalence class analysis-based automated requirements-based test case generation
US7499777B2 (en) Diagnostic and prognostic method and system
Zhang et al. Optimal maintenance policy considering imperfect repairs and non-constant probabilities of inspection errors
EP2381367A1 (en) Method and apparatus for the performing unit testing of software modules in software systems
CN108804326B (zh) 一种软件代码自动检测方法
CN112711537B (zh) 软件缺陷定位方法及装置、电子设备及存储介质
Dutta et al. Hierarchically localizing software faults using DNN
CN111994137A (zh) 一种基于铁路信号集中监测的报警分析方法
CN116089302A (zh) 一种针对Rust编程语言中UNSAFE代码片段缺陷的检测方法
CN107247663B (zh) 一种冗余变异体识别方法
JPS61170837A (ja) プログラムの品質予測方式
JP2000066919A (ja) 制約有効性チェック
CN112199295A (zh) 一种基于频谱的深度神经网络缺陷定位方法及系统
JP7190246B2 (ja) ソフトウェア不具合予測装置
Charbachi et al. Can pairwise testing perform comparably to manually handcrafted testing carried out by industrial engineers?
Altinger et al. On error-class distribution in automotive model-based software
CN104460337B (zh) 一种基于修正β因子的控制系统共因失效分析方法
Olsson et al. Case-based reasoning combined with statistics for diagnostics and prognosis
Aniculaesei et al. Using the SCADE toolchain to generate requirements-based test cases for an adaptive cruise control system
CN109815131B (zh) 轨道交通车载软件半形式化需求用的静态检查系统及方法
Li et al. Change‐aware model checking for evolving concurrent programs based on Program Dependence Net
Soomro et al. Fault localization models in debugging
Ali et al. Evaluating normalization functions with search algorithms for solving OCL constraints
Zhang et al. Are the Scala Checks Effective? Evaluating Checks with Real-world Projects