JPH07219819A - プログラム評価データ作成方法 - Google Patents

プログラム評価データ作成方法

Info

Publication number
JPH07219819A
JPH07219819A JP6190333A JP19033394A JPH07219819A JP H07219819 A JPH07219819 A JP H07219819A JP 6190333 A JP6190333 A JP 6190333A JP 19033394 A JP19033394 A JP 19033394A JP H07219819 A JPH07219819 A JP H07219819A
Authority
JP
Japan
Prior art keywords
information
program
block
evaluation data
route
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
JP6190333A
Other languages
English (en)
Inventor
Masaharu Inoue
雅春 井上
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.)
NEC Corp
Original Assignee
NEC Corp
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 NEC Corp filed Critical NEC Corp
Priority to JP6190333A priority Critical patent/JPH07219819A/ja
Publication of JPH07219819A publication Critical patent/JPH07219819A/ja
Pending legal-status Critical Current

Links

Landscapes

  • Stored Programmes (AREA)
  • Debugging And Monitoring (AREA)

Abstract

(57)【要約】 【目的】 ソースプログラムの評価データを容易に作成
する。 【構成】 ソースプログラム10を読み込んで基本ブロ
ックに分割し、それぞれの基本ブロック情報を基本ブロ
ックファイル120に格納する基本ブロック分割部11
0と、基本ブロックファイル120のデータから各基本
ブロックが他の基本ブロックに移行するための移行条件
および呼出し変数情報を抽出、作成して移行情報ファイ
ル145に格納する移行情報作成部135と、移行情報
ファイル145のデータからソースプログラムの最初か
ら最後に達する各経路の基本ブロックの順序、変数情報
を含む移行情報を生成して経路情報ファイル165に格
納する経路情報作成部155と、経路情報ファイル16
5の中から必要な経路の情報を選択する評価経路先端部
170と、評価データを作成する評価データ作成部20
0とからなる。

Description

【発明の詳細な説明】
【0001】
【産業上の利用分野】本発明は、作成されたプログラム
を情報処理システムにより評価する評価データの作成方
法に関し、特に高級言語により記述されたソースプログ
ラムを含むソースプログラムのプログラム評価データ作
成方法に関する。
【0002】
【従来の技術】一般に、情報処理システムのプログラム
を開発するときは、図37に示すように、ユーザの要求
を分析する要求分析工程、プログラムの方針と概略の設
計を行なう基本設計工程、利用資源や外部環境などの仕
様を定める外部設計工程、プログラムの処理手順を定め
る詳細設計工程、詳細設計に基づき通常は複数のプログ
ラマーによりソースプログラムを作成するコーディング
工程、コーディングされた個々のソースプログラムをテ
ストしながら組み合わせるプログラム統合工程および外
部仕様に関する個々の機能評価テストおよびシステムと
しての総合評価テストの各工程を経てプログラムが完成
される。以上の各工程のうち、主としてコーディング工
程以降の各工程においては、情報処理装置を用いたテス
トおよびデバッグが頻繁に繰り返されて作業が進めら
れ、そのテスト結果によっては詳細設計工程以前の工程
に遡って設計変更の行なわれることも少なくない。
【0003】また、情報処理システムのプログラムにつ
いては、システムの大規模化、複雑化に伴い、システム
の動作を制御するプログラムの数が増加し、多数のプロ
グラマにより作成される個々のプログラムもサブルーチ
ンやモジュール等を多用した複雑なものになっているの
で、そのテストデータないし評価データの作成には多大
の労力と期間とが必要になっている。したがって、これ
らの作成方法については、従来から種々の提案が開示さ
れている。
【0004】図38は、情報処理装置の動作を制御する
プログラム10と評価データ25とによる従来のプログ
ラムの評価方法の一般的なブロック図である。作成され
たオブジェクトプログラムが正常に動作するかどうかを
評価するためには、まず、プログラム仕様書に基づいて
第1次の評価データの作成(ステップs20)が行なわ
れ、生成された評価データ25が記憶装置に格納され
る。次に、この評価データ25とプログラム10とが情
報処理装置にロードされてプログラムの評価(ステップ
s30)が行なわれる。その評価結果は、評価結果35
として、評価が行なわれる度に印刷装置やディスプレイ
に表示され、記憶装置に格納される。
【0005】最初の第1次評価データによる評価実行で
は、通常は評価項目や評価部分などの漏れがあり、その
評価結果35では十分に満足されないので、満足な評価
結果が得られるまで、未評価部分の評価条件を検討し
(ステップs40,s50)、評価データを追加し、プ
ログラム10の修正を行なって、再び評価実行(ステッ
プs30)を行なうという手順を何回も繰り返してい
た。
【0006】評価漏れの検出には、例えば特開平1−1
00642号などに開示されたテストカバレージが知ら
れている。テストカバレージは、評価対象プログラムの
評価済部分、未評価部分の区別、または、全評価対象プ
ログラムに対する評価終了部分の割合である評価の達成
度を表すものである。
【0007】図39および図40は、C言語によるソー
スプログラムのカバレージ測定結果とコールグラフの参
考例である。図39の各プログラム行の先端に(X)印
のあるのは、この評価実行時にこのプログラム部分を通
過したことを示すものである。図40のコールグラフに
おいて、7番目の関数( tonumber )が呼ばれるために
は、最初の関数( main )で2番目の関数( yyparse)
が呼ばれ、この関数(yyparse)で次の関数( yylex)
が呼ばれ、というように、関数( tonumber )まで順次
呼ばれることが必要である。また、図39の8行目のプ
ログラムの指示する動作(n=c-'A'+10; )が実行される
ためには、1行目から7行目までのプログラムの指示に
より、関数( tonumber )に渡される引数( char c )
が16進数ではなくアルファベットの大文字でなければ
ならない。従来は、これらの関数が呼ばれる条件や関数
内の部分を通過するための条件の検出は人間の手で行な
われていた。
【0008】上述のように従来のプログラム評価方法
は、ソースプログラム中の評価を実行した通過部分を表
示するに止まり、未評価部分を通過するための条件は、
評価データ作成者が手作業で検出しなければならなかつ
た。そのために、評価データの作成に熟練を要する上
に、時間と手間がかかり、ケアレスミスを起こしやすい
という欠点があった。
【0009】この人手による作業を軽減するために、次
のような各種の方式が開示されている。
【0010】図41は、特開平4−111024号によ
る処理システムを示す図である。この方式は、自動的に
未検証部の未通過パスに対する分岐条件を表示すること
によって効率の良いマイクロプログラムの論理検証を可
能とすることを目的とするもので、分岐情報作成処理1
により、マイクロプログラムのソースコードファイル2
中の分岐情報テーブルから分岐情報ファイル5にマイク
ロプログラムのアドレスと分岐条件と分岐先との情報が
格納される。次に、これらの分岐情報をもととして、マ
イクロプログラムパス、通過有無フラグおよび分岐条件
の情報を格納する分岐通過情報ファイル6が生成され
る。通過有無フラグの情報は、評価実行時に該当箇所を
通過したとき、分岐通過情報更新処理S3によりフラグ
が立てられる。評価データ作成者は、出力装置7を介し
て分岐通過情報ファイル6の情報を取出して検討し、評
価プログラムやデータを改善してプログラム評価の実行
を繰り返す。
【0011】図42は、特開平4−271440号によ
る試験項目自動生成方式を示す図である。この方式は、
マイクロプログラムの検証のための試験項目を自動的に
生成するための方式で、まず、マイクロプログラムソー
スコードファイル2中の分岐情報テーブルからパス識別
名と分岐条件のファイルである分岐情報ファイル5を生
成する。次に、この分岐情報から試験項目ファイルを作
成し、さらに重複するパスや論理的にありえないパスを
削除して、有効試験項目ファイル9を作成して出力す
る。
【0012】図43は、特開平4−260941号によ
るテストデータの自動生成装置のシステム構成図であ
る。この装置は、網羅度100%のテストデータを自動
的に生成することを目的とし、テスト対象のプログラム
11、または論理回路中の全ての分岐命令、分岐条件デ
ータ12を抽出する分岐情報抽出手段9と、抽出した分
岐情報によりプログラムの開始から終了、または論理回
路の入力から出力にいたる全ての経路を終了命令から開
始命令へ、または出力端子から入力端子へと逆向きにト
レースすることにより、順次各経路を通過するテストデ
ータ13を生成する逆トレース処理手段10とを有す
る。
【0013】図44は、特開平3−271949号によ
るテスト環境自動生成方式のシステム構成図である。こ
の方式は、テスト条件を網羅したテストデータの生成を
目的として、原始プログラムを入力する入力手段11、
原始プログラムの分岐条件を記憶して外部データ21と
加工データ22を作り出す分岐情報蓄積手段12、原始
プログラムが使用するファイルアクセス方法を解析して
ファイル情報23を作り出すファイル解析手段13、お
よび原始プログラムに必要なテスト環境を生成するテス
ト環境作成手段14を有する。
【0014】
【発明が解決しようとする課題】上述の第1、第2の公
知例は、例示のように、マイクロプログラムを対象とす
るものであり、分岐情報ファイルなどのプログラムの流
れの情報がすでにマイクロプログラムテーブルに格納さ
れている。しかしながら、C言語などの高級言語で記述
されたコメント文など、コンピュータの動作を制御する
命令以外の行を含むソースプログラムやプログラムの流
れの情報がないマイクロプログラム以外のソースプログ
ラムを評価しようとする場合には、これらの手段により
評価データを作成する前にソースプログラムの流れの情
報を予め生成しなければならないので、公知例をそのま
ま適用することができないという欠点があった。
【0015】また、第3、第4の公知例の方式は、評価
項目や評価データの漏れを防ぐために、分岐条件の解析
処理などを評価対象のソースプログラムまたは実行形式
のプログラムの全行に対して行なう必要があり、分岐条
件式に記述された変数の入力や加工にも問題があり、ま
た、全ての経路を漏れなく検査するために生成される評
価データの量および評価実行時間が増大して、評価シス
テム資源の許容限界を超過することがあるという問題点
がある。
【0016】本発明の目的は、上述の欠点を解消し、評
価対象のプログラムの流れによる経路情報を生成して効
率の良い評価データを容易に作成することができるプロ
グラム評価データ作成方法を提供することにある。
【0017】
【課題を解決するための手段】本発明のプログラム評価
データ作成方法は、ソースプログラムを読み込み、分岐
命令およびラベルを検出し、連続した一連のプログラム
群ごとに分割するプログラム分割手順と、分割された各
プログラム群から他の分割された1つまたは複数のプロ
グラム群へ移行するためのプログラム群相互間の移行情
報を生成して記憶する移行情報生成手順と、生成された
移行情報を連続して前記ソースプログラムの最初から各
プログラム群に到達するための到達情報を生成して出力
する到達情報生成手順とを含む。
【0018】また、別の実施態様においては、ソースプ
ログラムを読み込み、分岐命令およびラベルを検出し、
連続した一連のプログラム群ごとに分割するプログラム
分割手順と、ソースプログラム中の変数を代入および参
照するための変数情報を生成して記憶する変数情報生成
手順を含み、分割された各プログラム群から他の1つの
プログラム群へ移行するためのプログラム群相互間の移
行情報を生成して記憶する移行情報生成手順と、生成さ
れた移行情報からプログラム群の処理の流れの経路を示
す経路情報を生成する経路情報生成手順と、経路情報と
変数情報とから評価データを生成する評価データ生成手
順とを有する。
【0019】また、好ましくは、経路情報中の主要な経
路の経路情報を選択する経路情報選択手順と、経路情報
選択手順により選択された経路情報と変数情報とにより
評価データを生成する評価データ生成手順とを有する。
【0020】また、ソースプログラムは、プログラムの
作成および保守のためのコメント文を含む高級言語によ
り記述されてもよい。
【0021】また、プログラム群は、1つの分岐命令ま
たはラベルによって分割される基本ブロックと、2つ以
上の基本ブロックを含む複合ブロックとからなるもので
もよい。
【0022】
【作用】第1の実施態様において、高級言語により記述
されたプログラムを含むソースプログラムは、プログラ
ム分割手順により、分岐命令およびラベルにより1つ以
上のプログラム群に分割され、移行情報生成手順により
各プログラム群から抽出・生成された他の1つのプログ
ラム群への移行情報を用いて、到達情報生成手順により
プログラムの最初から各プログラム群に到達する到達情
報が生成され、出力される。
【0023】第2の実施態様において、変数情報生成手
順により生成された変数情報と、移行情報生成手順によ
り各プログラム群から抽出・生成された他のプログラム
群への移行情報とを用いて、経路情報生成手順によりプ
ログラム群の処理経路を示す経路情報が生成され、評価
データ生成手順により評価データが生成される。
【0024】また、経路情報選択手順を設けて、経路情
報選択手順により選択した主要な経路情報と変数情報と
から冗長な経路を削除した評価データを生成することも
できる。
【0025】
【実施例】次に、本発明の実施例について図面を参照し
て説明する。
【0026】図1は本発明の第1実施例の構成を示すブ
ロック図、図2はプログラム分割手順に相当する基本ブ
ロック分割部110の流れ図、図3は基本ブロック分割
部110の内の移行先ブロック番号生成ステップS15
の流れ図、図4は移行情報生成手順に相当する移行情報
作成部130の流れ図、図5は到達情報生成手順に相当
する到達情報作成部150の流れ図、図6は本実施例に
より評価データを作成しようとする参考例のソースプロ
グラム、図7はフラグ更新ファイル、図8は基本ブロッ
クファイル120、図9、10は移行情報ファイル14
0の作成経過説明図、図11、12は到達情報ファイル
160の構成図である。
【0027】図1において、本実施例は、ソースプログ
ラム10を読み込んでそのラベル名、分岐命令により一
連のプログラム群である基本ブロックに分割し、その基
本ブロックごとのブロック番号、ブロックの開始および
最終の行番号、ラベル名、分岐命令、移行先のブロック
番号とラベル名および移行条件、フラグセット命令を有
する基本ブロック情報を生成して基本ブロックファイル
120に格納する、プログラム分割手順に相当する基本
ブロック分割部110と、基本ブロックファイル120
のデータから各基本ブロックのブロック番号n、その基
本ブロックの直前に通過した基本ブロックのブロック番
号mおよびそのm番目の基本ブロックからn番目の基本
ブロックに移行するための移行条件とからなる移行情報
ファイル140を生成する移行情報生成部130と、各
基本ブロックに到達するための条件を表すブロック到達
情報を基本ブロックファイル120および移行情報ファ
イル140のデータから生成してブロック到達情報ファ
イル160に格納する、到達情報生成手順に相当するブ
ロック到達情報作成部150とからなり、評価データ作
成部200においてブロック到達情報ファイル160に
出力されたデータから評価データ250が作成され、評
価実行部300においてこの評価データ250を用いて
ソースプログラム10の評価が行なわれる。
【0028】基本ブロックファイル120は、図8に示
すように、ブロック番号121、開始行122、最終行
123、先頭ラベル124、移行命令または制御文12
5、移行先126、移行情報127からなり、さらに、
移行先126欄はブロック番号126a欄とラベル名1
26b欄とに、移行情報127はフラグセット命令12
7a欄、第1オペランド127b欄、第2オペランド1
27c欄の各欄に分けられる。
【0029】基本ブロック分割部110は、行数カウン
タとブロック番号カウンタとを有しており、その手順が
図2に示される。まず、これらのカウンタを0として初
期化し(ステップS1)、このカウンタの値を基本ブロ
ックファイル120の「開始行122」と「ブロック番
号121」の欄にそれぞれ書き込む(ステップS2)。
次に、ソースプログラム10を1行読み込んで(ステッ
プS3)、最終行かどうか判定して(ステップS4)最
終行でない場合は行数カウンタの値に「1」を加える
(ステップS5)。次に、まず、読み込んだ1行の命令
がフラグを変化させる命令か否かを判定して(ステップ
S6)、フラグを変化させる命令の場合は、フラグ情報
を更新し(ステップS7)、移行命令の場合は(ステッ
プS8)、読み込んだ行の移行命令と移行先のラベル名
とを「分岐命令125」欄と「移行先ラベル名126
b」欄に書き込む(ステップS9)とともに、フラグを
変化させる命令の場合は更新されたフラグ情報により、
フラグセット命令、第1オペランドおよび第2オペラン
ドをそれぞれ「フラグセット命令127a」、「第1オ
ペランド127b」および「第2オペランド127c」
の各欄に書き込む(ステップS10)。また、読み込ん
だ1行の先頭にラベルがある場合は(ステップS1
1)、そのラベルを「先頭ラベル名124」欄に書き込
むとともに、行数カウンタの値を「最終行123」の欄
に書き込み(ステップS12)、次の行を読み込む準備
として、ブロックカウンタの値に「1」を加え(ステッ
プS14)、そのブロックカウンタの値を次のブロック
の「ブロック番号121」欄に、また、行数カウンタの
値にも「1」を加えてその値を次のブロックの「開始行
122」欄にそれぞれ書き込んで(ステップS14)か
らステップS3に戻って次のソースプログラムの1行を
読み込む。ステップS11でラベルがないと判定された
ときは、ステップS12〜S14の最終行の書き込みや
カウンタの処理を行なわずに、ステップS8またはステ
ップS10の処理の後、ステップS3に戻る。
【0030】次に、基本ブロックファイル120に書き
込まれた各ブロックごとに、ステップS9で書き込まれ
た移行先ラベル名をブロック番号に変換してその値をそ
れぞれのブロックの「移行先ブロック番号126a」欄
に書き込む(ステップS15)。図3は、移行先ブロッ
ク番号生成(ステップS15)の詳細な手順を示す。す
なわち、まず、第1のブロックカウンタ#1に移行先ブ
ロック番号を求めようとするブロック番号121欄の値
n(最初は1)を設定する(ステップS151)。次に
分岐命令125欄を見て(ステップS152)、「NUL
L」でない場合は、第2のブロックカウンタ#2に第1
ブロックカウンタ#1と同じ値nを設定して(ステップ
S153)、第1ブロックカウンタ#1の指示するブロ
ック番号nの移行先ラベル名126b欄のラベル名と、
第2ブロックカウンタ#2の指示するブロック番号m
(最初はn、すなわち1に等しい)の先頭ラベル名12
4欄のラベル名とが等しいかをみる(ステップS15
4)。この2つのラベル名が等しくない場合は、等しく
なるまで第2ブロックカウンタを「1」ずつ増加して次
のブロックのラベル名を調べる(ステップS155)。
移行先ラベル名と先頭ラベル名が一致すると、第2ブロ
ックカウンタの値mを第1ブロックカウンタの指示する
ブロックの移行先ブロック番号126a欄に記入する
(ステップS156)。
【0031】次に、移行情報作成部130の手順によ
り、基本ブロックファイル120に基づいて移行情報フ
ァイル140を作成する。
【0032】移行情報ファイル140は、図9および図
10に示すように、「ブロック番号141」欄と、その
ブロックに移行する直前のブロックの番号を表す「直前
ブロック番号142」欄と、その直前ブロック番号14
2のブロックからブロック番号141欄のブロックに移
行するための条件を表す「移行条件143」欄とからな
る。直前ブロック番号142欄に記入されるブロック番
号mは、ブロック番号141欄に記入された1つのブロ
ック番号nに対して通常はn−1番の1件のみである
が、分岐命令により他の基本ブロックからも移行されて
くる場合には、n−1番の外に1件以上記入されること
がある。
【0033】移行情報作成部130は、まず、最初に必
ず通過しなければならないブロック番号「1」の移行情
報の作成から開始して、ブロック番号順に1ブロックず
つ処理する。すなわち、図4に示すように、最初に移行
情報ファイル140のブロック番号141欄に「1」、
直前ブロック番号142欄に最初のブロックの関数名と
して定義された「START 」、移行条件143欄に「NUL
L」と記入する(ステップS21)。
【0034】次に基本ブロックファイル120からブロ
ック番号141欄に示される1つのブロック番号n(最
初はステップS21による「1」)の情報を読み出して
(ステップS22)、それが最終の基本ブロックでなけ
れば(ステップS23)、その分岐命令125欄のデー
タが「NULL」であるかどうかを判定する(ステップS2
4)。
【0035】分岐命令125欄のデータが「NULL」の場
合は、このブロック番号n(最初は1)が次のブロック
番号n+1(最初は2)に無条件に移行することを示す
のでこのことを次のように記入する。すなわち、記入済
みのブロック番号nの次の行のブロック番号141欄に
次に移行すべき直後のブロック番号「n+1」を、通過
条件143欄に「NULL」を、直前ブロック番号142欄
には処理中のブロック番号「n」を、それぞれ記入(ス
テップS25)してからステップS22に戻って次の基
本ブロック情報を読み込む。
【0036】分岐命令125欄のデータが「NULL」でな
い場合は、まず、フラグセット命令と分岐命令から移行
先ブロックに直前ブロックとしてこのブロックを通過し
たという移行条件を設定する。すなわち、基本ブロック
ファイル120のブロック番号n(最初は1)の移行先
ブロック番号126a欄のブロック番号「m」を移行情
報ファイル140のブロック番号141欄に、また、分
岐命令125欄、フラグセット命令127欄、および第
1、第2オペランド欄から導かれる移行条件を移行条件
143欄にそれぞれ書き込み、直前ブロック番号142
欄には、処理中のブロック番号「n」を書き込む(ステ
ップS26)。
【0037】さらに、ステップS26の移行条件に該当
しない場合には、分岐命令125欄のデータが「NULL」
であった場合と同様に、次に移行するブロック番号とし
て次のブロック番号「n+1」を移行情報ファイル14
0のブロック番号141欄に、また、移行条件143欄
にステップS26の移行条件の否定条件を記入(ステッ
プS27)した後、ステップS22に戻る。
【0038】次に、到達情報ファイル160を作成する
到達情報作成部150の手順について説明する。
【0039】到達情報ファイル160は、図12に示す
ように、ブロック番号161欄と、到達条件162欄と
からなる。図5において、まず、初期設定として、移行
情報ファイル140のブロック番号141欄と移行条件
143欄の最初のデータを到達情報ファイル160のブ
ロック番号161欄と到達条件162欄の1列目にそれ
ぞれ転写して「1」、「NULL」と書き込む(ステップS
31)。次に移行情報ファイル140の次のブロック番
号のデータを読み込む(ステップS32)。次に、ステ
ップS33の判定で最終のブロックでなければ、前のブ
ロック番号の後に続けてそのブロック番号を到達情報フ
ァイル160のブロック番号161欄に書き込み(ステ
ップS34)、移行条件143欄のデータを到達条件1
62欄に転記する(ステップS35)。このとき、移行
条件が複数の場合は、それらの論理和を演算する。すな
わち、例えば、移行条件が「AまたはBまたはCまたは
・・」などとあり、AとBが同じ条件の肯定と否定であ
る場合は、結局A(またはB)の条件があってもなくて
もどちらでもよいことになるので、その条件を消去して
到着条件は「Cまたは・・」とする。また、もしこのよ
うなAとBのみでC以下がない場合は「NULL」として到
達条件162欄に記入する。
【0040】このようにして最後のブロックまで処理し
て作成された到達情報ファイル160は、所望の形式で
到達条件リストとして出力表示される。
【0041】次に、本実施例の動作例をソースプログラ
ム10が図6に示すようなアセンブラプログラムの場合
について具体的に説明する。
【0042】先ず、基本ブロック分割部110により基
本ブロックファイル120が作成される経過について説
明する。
【0043】行数カウンタとブロックカウンタを初期化
して基本ブロックファイル120のブロック番号121
欄に「0」、先頭ラベル124欄に「NULL」を設定し
て、始めにブロック番号121、開始行122、先頭ラ
ベル名124を書き込んでからソースプログラム10を
1行ずつ読み込むとともに、行数カウンタを1ずつ増加
する。フラグセット命令を検出したときは、フラグ情報
を更新して分岐などの移行命令かラベルを検出するまで
保持する。図7は、フラグ更新ファイルの一例を示す。
分岐命令またはラベルを検出すると、行数カウンタの値
を最終行123に書き込むとともに、分岐命令であれ
ば、分岐命令125、移行先ラベル名126b、フラグ
セット命令127a、第1および第2オペランド127
b,127cの各欄に該当の値を書き込み、ラベルの場
合は、ブロックカウンタを1増加して次の基本ブロック
のブロック番号と開始行を更新してから次の行を読み込
む。このようにして作成されたのが図8の(A)であ
る。基本ブロック分割部110は、さらに、図8(A)
のブロック番号121と先頭ラベル名124を参照して
移行先ラベル名126bに相当する移行先ブロック番号
を、図8の(B)に示すように、移行先ブロック番号1
26a欄に書き込み、基本ブロックファイルを完成す
る。
【0044】基本ブロックファイル120が作成された
後、移行情報ファイル140が図9の(A)ないし
(C)の順序で作成される。まず、最初のブロック番号
n、すなわちブロック1、の直前ブロック番号142欄
には、最初の関数として定義された関数名「START 」を
記入し、次に、基本ブロックファイル120の1行目の
分岐命令が「NULL」であるかを判定する。この場合は、
分岐命令が「JNE 」で、「NULL」ではないので、その次
のブロックn+1、この場合はブロック2、と移行先の
ブロック3の直前ブロック142欄にそれぞれ「1」
を、移行条件143欄に「FNAME[BX]== 'R' 」と「FNAM
E[BX]!= 'R' 」とを設定する。これが図9の(B)であ
る。移行命令が「NULL」である2行目は、ブロック番号
2の移行命令欄が「NULL」なので、ブロック3の直前ブ
ロック番号欄に「2」、移行条件欄に「NULL」と記入す
る。これが同図の(C)である。以下同様にして基本ブ
ロックファイル120の最後のブロック番号5まで処理
した結果作成される移行情報ファイル140が図10で
ある。
【0045】次に、到達情報ファイル160の作成経過
を図11により説明する。まず、ブロック番号1のブロ
ックは最初に実行されるブロックなので、到達条件16
2欄に「NULL」と記入する。ブロック番号2の到達条件
は、直前ブロック1の到達条件「NULL」と移行情報ファ
イル140の移行条件「FNAME[BX]=='R'」とを合わせた
ものなので、「FNAME[BX]=='R'」となる。ブロック番号
3の到達条件も同様に、直前ブロック(ただし、この場
合はブロック1とブロック2の2つ)の到達条件と移行
条件とを合わせたものであるから、図11の(A)に示
すように、「FNAME[BX]=='R'またはFNAME[BX]!='R'」と
なる。さらに、この条件は「FNAME[BX]」がRである場
合とRでない場合の両方を表しているので、結局「NUL
L」として到達条件欄に記入される。以下同様にしてブ
ロック5の途中まで処理したのが図11の(B)で、最
終結果が図11の(C)である。
【0046】最後に、到達条件情報の一例として図12
に示すような到達条件リストが、基本ブロックファイル
120と到達情報ファイル160とを組合わせることに
より作成され、印刷装置等の出力装置から出力される。
【0047】評価データを作成するときは、この到達条
件リストから、ブロック番号1、3、5のブロックは評
価データの如何にかかわらず通過し、ブロック番号2を
通過するためには、「FNAME[BX]=='R'」となる評価デー
タが必要であり、ブロック番号4を通過するためには
「FNAME[BX]=='W'」となる評価データが必要なことが判
る。したがって、この例では「FNAME[BX]=='R'」と「FN
AME[BX]=='W'」となる評価データを作成することによ
り、アセンブラソースプログラムの全てのパスを評価す
ることができる。
【0048】次に第2の具体例として、ソースプログラ
ムがC言語によって記述された場合を説明する。
【0049】C言語は、関数が処理単位の基本になるの
で、特定の関数に到達する条件と、その関数内で特定の
ブロックに到達する条件とが必要である。また、C言語
のソースプログラムから変換されたアセンブラプログラ
ムは、コンパイラの行番号情報とC言語のソースプログ
ラム文の記述をコメントとしたコメント文とを含む。こ
こでは、図20にその一部を示すC言語によるある1つ
のソースプログラムを言語処理プログラムで処理して出
力されたアセンブラプログラム(ただし、図示を省略)
から本実施例の方法により到着情報を出力する経過を説
明する。この基本ブロック分割部は、図13、図14に
示す流れ図のように、基本ブロック分割部110と基本
的には同じものであるが、さらに、Cソース文に対する
関数の処理を含む。
【0050】この場合の基本ブロックファイルは、図1
6に示すように、基本ブロックのブロック番号121
と、開始行122と、最終行123と、先頭ラベル名1
24と、制御文を含む分岐命令125と、移行条件12
7と、移行先のブロック番号126aとラベル名126
bの各欄からなる図8と同様のファイルに、関数名12
8と、その関数が呼び出された呼び出し関数名129a
とブロック番号129b、の各欄が付加されたものであ
る。
【0051】図13、図14において、まず、カウンタ
を初期化して最初の基本ブロック情報のブロック番号と
開始行とを基本ブロックファイル120に書き込んでか
らソースプログラムを先頭から読み込む(ステップS5
1−S54)。
【0052】読み込んだ行がC言語のソースプログラム
と判定されたときは、関数名を検出すると関数名の欄を
記入し(ステップS56,57)、条件文を検出すると
制御文と移行条件の欄を記入し(ステップS58,5
9)、関数呼び出し文を検出すると呼び出される関数の
関数名とブロック番号を呼び出し関数名欄とブロック番
号欄に記入(ステップS60,61)してから、ステッ
プS53に戻って次の行を読み込む。読み込んだ行が行
番号情報の場合は、言語処理プログラムによるアセンブ
ラソースプログラムではブロックの最終行が行番号とし
て示されているので、この行番号を最終行の欄に記入
し、この行番号に1を加えたものを次の開始行として保
持する(ステップS62〜S64)。
【0053】また、読み込んだ行がアセンブラプログラ
ムの場合は、まず、ラベルか移行文を検出するまで次の
行を読み込み(ステップS65,66)、ラベルを検出
したときは先頭ラベル名欄に記入し、「ブランチ」など
の移行文を検出したときは移行先ラベル名欄に記入する
(ステップS67〜S70)。次に、ブロックカウンタ
を1増加して次の基本ブロックの基本ブロック情報、す
なわち、ブロック番号と開始行を作成し(ステップS7
1〜S73)、ステップS53に戻って次の行を読み込
む。
【0054】以上の処理により作成された基本ブロック
ファイルの内容が図16である。
【0055】次に、移行情報ファイル140を作成する
移行情報作成部130の手順は、前の例とほぼ同様であ
るが、移行条件を制御文と条件式から定める点が、フラ
グセット命令、分岐命令および条件式から定めた前の例
と異なる。この例では、例えばブロック番号3−3の場
合は、制御文が「IF」、条件式が「di-si<0 」であるか
ら、「di-si<0 」のときに先頭ラベル「$SCS21115 」の
ブロックに移行し、条件式が「di-si>=0」のとき直後の
ブロックに移行する。また、移行命令が「DO WHILE」で
移行条件が「strcmpi (keycode,scode[dx])!=0」である
ブロック番号3−8の場合は、「strcmpi (keycode,sco
de[dx])!=0」のときは、先頭ラベル「$D111 」のブロッ
クに移行し、「strcmpi (keycode,scode[dx])==0」のと
きは、直後のブロックに移行する。このようにして作成
された移行情報ファイル140の内容が図17である。
【0056】この移行情報ファイル140から前の例と
同様に到達情報作成部150によって、図18に示すよ
うな到達情報ファイル160が作成される。
【0057】さらに、このファイルから特定の関数の到
達条件と、特定のブロックの到達条件を出力する手順を
図15により説明する。まず、要求された特定のブロッ
クをこの到達情報ファイル160から検索して、関数
名、ブロックの開始行と最終行、および到達条件リスト
を出力する。次に、呼び出し関数名が「START 」となる
まで基本ブロックファイルの呼び出しブロック番号を検
索し、その関数の関数名と、その関数を呼び出した関数
の関数名と、到達条件のリストとを出力する。その一例
が図19である。
【0058】このソースプログラムの評価データを作成
するときは、このリストを参考にして、例えば、ブロッ
ク番号3−5のブロックを通過する評価データは、関数
「main」で、「selno == 1」の条件を満たし、関数「se
arches」で、「csno==2 」の条件を満たし、さらに関数
「search21」で「di-si>=0」、かつ、「strcmpi(keycod
e,scode[dx])>=0 」となるように作成すればよいことが
判る。
【0059】次に、呼出し変数の代入、参照に関する変
数情報の作成を含む移行情報作成部と、評価データを作
成する経路を効率的に選択する経路選択部とをさらに含
む本発明の第2の実施例について図21〜図36により
説明する。
【0060】この実施例の構成は、図21に示すよう
に、前述の実施例と同様のソースプログラム10を基本
ブロックに分割して基本ブロックファイル120に格納
する基本ブロック分割部110と、ソースプログラム中
の変数呼出しに関する変数情報を含む移行情報を生成し
て移行情報ファイル145に格納する移行情報作成部1
35と、経路情報生成手順に対応して移行情報ファイル
145からソースプログラムの各経路の情報を生成して
経路情報ファイル165に格納する経路情報作成部15
5と、経路情報選択手順に対応して経路情報ファイル1
65に格納された経路の内から評価データを作成する経
路を選択する評価経路選択部170と、評価データ生成
手順に対応する評価データ作成部200とを有する。
【0061】本実施例の移行情報作成部135は、前述
の移行情報作成部130と同様にして移行先のブロック
番号や移行条件を作成するとともに、プログラムの移行
先を指定する呼出し変数およびその変数の演算式等の変
数情報を検出し、移行情報として移行情報ファイル14
5に格納する。
【0062】図22は、経路情報作成部155の処理手
順、図23は経路情報ファイル165の構成例を示す。
【0063】経路情報ファイル165は、図23に示す
ように、経路番号166と、各経路番号ごとに通過する
基本ブロック番号167、その基本ブロックの移行条件
168および変数情報169の各欄とからなる。
【0064】まず、経路数nを計数するカウンタを1と
して初期化し(ステップS80)、移行情報ファイル1
45からソースプログラムの最初の呼出し関数として定
義された関数名「START 」を探してその基本ブロック情
報を読み込む(ステップS81)。次に、読み込んだ基
本ブロック情報から移行ブロック情報を作成する(ステ
ップS82)。ここまでは第1、第2の実施例と同様
で、移行ブロック情報の枠組みを作成して基本ブロック
番号167と基本ブロック情報中の変数定義文や演算式
などの変数情報169が抽出、格納されるだけで、ブロ
ック移行条件168はまだ記入されない。次に、その読
み込んだ基本ブロック情報中に直後の基本ブロック以外
の基本ブロックへの分岐その他の移行先指定があるかを
調べ(ステップS83)、移行先指定がなければ未処理
の経路情報があるかを調べ(ステップS84)、未処理
の経路情報がなければ経路情報作成の処理を完了とす
る。未処理の経路情報があるときは、経路カウンタのn
を1増加して(ステップS85)次の経路情報作成の処
理に移る。(ステップS83)で移行先指定がある場合
は、移行先の件数mが1つだけか2つ以上かを調べて
(ステップS86)、移行先の数mが1ならその移行先
と移行条件("NULL"など)を記入し(ステップS8
9)、移行先の基本ブロック情報を読み込む(ステップ
S90)。移行先の数mが複数の場合は、まず、処理中
の基本ブロックnの経路情報をm−1個複写して合計m
個の経路情報を作り(ステップS87)、それぞれ対応
する移行先と移行条件とを記入する(ステップS8
8)。その後、移行先の基本ブロック情報を読み込んで
(ステップS90)から移行ブロック情報の作成処理
(ステップS82)に戻り、以後の処理を繰り返して全
ての経路について経路情報を作成する。
【0065】経路情報作成部155により作成された経
路情報ファイル165を用いることにより、評価データ
作成部200は、ソースプログラムの評価データを全て
の経路について漏れなく生成することが可能である。し
かし、ソースプログラムが複雑で経路の数が多い場合
に、全ての通過経路について評価データを生成し、ソー
スプログラムを評価することは、評価データの生成およ
び評価実行のいずれにも長時間を必要とし、ソースプロ
グラムの実用化が遅くなるので、評価すべき経路の重要
度を考慮して、冗長な経路を削除し、重要な経路のみを
選択して評価データを生成し、そのような経路について
評価を実施するのが実用的である。
【0066】評価経路選択部170は、このような場合
に効率的に評価データを生成する経路を選択する処理手
順で、図24はその一例である。
【0067】予め、図25のような作業域、すなわち、
m本の経路i(i=1〜m)を行、n個の基本ブロック
j(j=1〜n)を列としてm行xn列のマトリクス状
に配列する評価経路選択テーブル180を設ける。この
テーブル180は、経路iが基本ブロックjを通過する
か否かを数値の1,0で表わす要素Ei,j がマトリクス
状に配列される経路図欄181と、要素Ei,j の値の行
別の合計ΣEi,0 欄182と、要素Ei,j の値の列別の
合計ΣE0,j 欄183と、経路iが削除か残存かを表わ
す選択記号Ci 欄184とからなる。したがって、行合
計ΣEi,0 欄182は各経路ごとの通過基本ブロック数
を、列合計ΣE0,j 欄183は各基本ブロックごとの通
過経路数をそれぞれ表わしている。
【0068】図24において、まず、初期設定として、
経路図欄181の全ての要素Ei,jに、各経路が各基本
ブロックを通過するか否かに応じて1または0を記入
し、行合計欄182の各行、列合計欄183の各列およ
び選択欄184にそれぞれ0を記入する(ステップS1
80)。
【0069】次に、要素Ei,j の値(0または1)を各
行、各列について合計して、各合計値をそれぞれ行合計
欄182と列合計欄183に記入する(ステップS18
1)。
【0070】次に、列合計欄183のなかに値が”1”
の基本ブロックがあるか調べる(ステップS182)。
この列合計ΣE0,j の値が”1”であることは、その基
本ブロックjが只1つの経路iによってのみ評価され得
ることを表わしているので、必須の評価データ作成対象
経路としてその経路iを選択し、その行の選択記号欄C
i に「選択」の記号の”1”を記入する(ステップS1
83)。列合計ΣE0, j の値が”1”である基本ブロッ
クが2つ以上ある場合は、それらの経路の全てについて
同様に処理する。
【0071】このステップS182の判定で列ごとの合
計が1である基本ブロックが検出されないときは、行合
計ΣEi,0 欄182のうちの最大の経路iを1つ選択し
て選択記号欄Ci に「選択」の記号の”1”を記入する
(ステップS184)。
【0072】次に、経路図181上で、以上のステップ
で選択された各経路iに含まれる基本ブロックj、すな
わち、それらの経路番号iの各行で要素Ei,j が”1”
となっている全ての基本ブロックjの列にマスクをかけ
る(ステップS185)。この場合、マスクした基本ブ
ロックjは、選択された経路iに対して作成される評価
データにより評価されるので、マスクされた基本ブロッ
クjのみを含む経路i以外の他の経路は、削除しても通
過しない基本ブロックが発生しない経路であり、このス
テップにより、評価データ作成の対象から除外される。
【0073】その後、経路図181上にマスクされずに
残された基本ブロックがあるかを判定し(ステップS1
86)、残された基本ブロックがなくなれば選択処理は
終了し、マスクから残された基本ブロックがあれば、そ
れらの基本ブロックを含む各経路のみについて改めて要
素Ei,j の行合計ΣEi,0 欄182を計算し、経路選択
テーブル180を書き替えて(ステップS187)か
ら、ステップS184に戻って行合計ΣEi,0 欄182
の最大の経路を選択する。それ以後は、全ての経路に対
して削除か残存かが決定するまで上述の手順を繰り返
す。以上の手順により、冗長な評価経路が削除され、効
率的に評価が行える評価経路が選択される。この評価経
路選択手順を基本ブロック数nが8個、経路数mが6個
のソースプログラムに適用する場合を参考例として説明
する。
【0074】図26は、このソースプログラムについ
て、ステップS180,S181により作成された最初
の経路選択テーブル180’である。例えば、経路番号
i=1の経路は、基本ブロック番号j=1,2,3,
5,6および8、すなわち、行合計ΣE1,0 =6個の基
本ブロックを通過し、経路番号i=2の経路は、番号j
=1,3,5,8の基本ブロック、行合計ΣE2,0 =4
個を通過する。また、基本ブロック番号j=1の基本ブ
ロックは、経路番号i=1,2および6の経路、列合計
ΣE0,1 =3個が通過し、基本ブロック番号j=3の基
本ブロックは、経路番号i=1,2,4,5,6の経
路、列合計ΣE0,3 =5個が通過することを表わしてい
る。
【0075】この経路選択テーブル180’が作成され
たら、次に列合計183’の欄をみて”1”があるか調
べて(ステップS182)、基本ブロック番号j=4と
7が検出される。そこで、これらの基本ブロックを通過
する経路、すなわち、Ei,4とEi,7 が”1”である経
路iを調べて、それぞれE4,4 とE5,7 により経路番号
4と5が該当することが判るので、経路番号i=4と5
の選択記号C4 ,C5を1にする(ステップS18
3)。ここまでの経過と結果を図27(A)に示す。
【0076】次に、これらの経路4,5が通過する基本
ブロック番号j=3,4,8および2,3,7,8の基
本ブロック、合計5本の列にマスクをかけ(ステップS
185)、マスクされない基本ブロックの列があるか調
べる(ステップS186)。すると、番号j=1,5,
6の3個の基本ブロックが検出されるので、これらのマ
スクされない基本ブロックを通過する経路番号i=1,
2,3および6の4個の経路について、それぞれのマス
クに覆われない基本ブロックのみの行合計ΣE 1,0',Σ
2,0',ΣE3,0',ΣE6,0'を計算する(ステップS1
87)。この結果は、図27(B)のようになる。
【0077】次に、行合計182’欄の中で最大のもの
を1つ選択すると、ΣE1,0'=3が選択されるので、そ
の経路番号i=1の選択記号C1 を1にする(ステップ
S184)。その後、経路番号1の要素E1,j が1であ
る基本ブロックの列j=1,5,6にマスクをかけて
(ステップS185)、テーブル180’上にマスクさ
れない基本ブロックの列がまだ残っているか調べる(ス
テップS186)。
【0078】このとき、残った基本ブロックがあれば、
その基本ブロックを通過する経路についてステップS1
87以降の処理手順を繰り返すが、この例の場合は、す
べての基本ブロックjがマスクされるので、評価経路選
択を終了する。この結果、評価データ作成対象の経路と
して、図28のように、選択記号Ci が1である経路i
=1,4,5が選択され、経路2,3,6が削除され
る。
【0079】次に、図21の実施例の動作を、図29の
ようなC言語で記述されたソースプログラムの評価デー
タを作成する場合を具体例として説明する。
【0080】まず、C言語で記述されたソースプログラ
ムは、言語処理プログラムで処理されてアセンブラプロ
グラムに変換される。このアセンブラプログラムに変換
されたソースプログラム10は、上述の2つの実施例と
同様の基本ブロック分割部110と移行情報生成部13
0の処理手順により、基本ブロックに分割され、変数入
力、演算の変数情報を含む移行情報が、図30〜32に
示すような、移行情報ファイル145A〜Cとして抽
出、生成される。
【0081】次に、この移行情報ファイル145A〜C
をもととして、経路情報作成部155の手順により、図
33と図34に示すような経路情報ファイル165が作
成される。図33は、説明の都合により経路情報ファイ
ル165を変形したもので、各経路番号166を横の行
に、各基本ブロック番号167をそれぞれの変数情報1
69とともに縦の列に各経路の移行順序に従って並べ、
各行と列との交点にその経路がその基本ブロックを通過
するための移行条件168を記入して表の形式としたも
のである。
【0082】図33は、例えば、経路1が、基本ブロッ
ク1−1,1−2,2−1,2−2,2−4,1−4を
通過し、経路3が、基本ブロック1−1,1−3,3−
1,3−2,3−4,1−4を通過することを表す。ま
た、基本ブロック1−1を通過する条件は、変数情報1
69の「data 1 = buf 1 + buf 2 + 1」で定められる変
数data 1が、経路1、2に対してはともに100 以下であ
り、経路3,4に対しては100 より大きい場合であるこ
と、また、基本ブロック2−1の通過条件は、同様にし
てdata 2が、経路1に対しては200 以下であり、経路2
に対しては200より大きい場合であることをそれぞれ表
わしている。
【0083】図34は、図33を評価経路選択テーブル
180の経路図181の形式で表現したものである。す
なわち、このソースプログラムは、12の基本ブロック
1−1〜3−4に分割され、それらを連続する4つの経
路1〜4によって実行されることが判る。そこで、4つ
の経路1〜4のうち、評価データを作成しなくても良い
経路があるかを判定するために、評価経路選択部175
の方法を用いて調べると、基本ブロック2−2,2−
3,3−2,3−3がそれぞれ経路1〜4のいずれか1
つずつに通過されているので、基本ブロックを漏れなく
評価するためには、削除できる経路はないことが判る。
【0084】変数情報169は、言語処理技術で標準的
に用いられているバイナリツリと呼ばれる形式で表わす
ことができる。図35、36は、その1例を示す。
【0085】例えば、図33の評価経路166におい
て、経路1および2の基本ブロック1−1から基本ブロ
ック1−2に通過する移行条件は、変数「data 1」が10
0 以下であるが、この「data 1」は、「=buf 1 + buf
2 + 1 」により、変数の代入、演算が行なわれて、結局
「buf 1 + buf 2 + 1 <= 100」であることを表わしてい
る。このことは、図35の(A)のノード「<=」の左
辺の「data 1」を同図(B)のノード「=」の右辺で置
き換えて同図(C)が得られることに相当する。さらに
遡ると、buf 1 とbuf 2 は、この「data 1」の設定の直
前に関数「fscanf」により設定されるので、基本ブロッ
ク1−1から基本ブロック1−2に通過する評価データ
は、移行条件「buf 1 + buf 2 + 1 <= 100」を満足する
データ「buf1」、「buf2」を与えることにより作成され
る。
【0086】図36は、同様に、基本ブロック2−1か
ら基本ブロック2−3に通過する移行条件「data 2 > 2
00」の解析処理経過を示すもので、まず、移行情報から
「data 2 <= 200 」が読み出されて36図(A)のノー
ドが作成される。次に、変数情報から「data 2 = data
1 + buf 3 」が読み出されて同図(B)のノードが作成
され、この「data 2」のノードを同図(A)に代入して
同図(C)のバイナリツリが作成される。さらに、同図
(C)のバイナリツリの「data 1」に図35の(B)を
代入して36図(D)、すなわち、「buf 1 + buf 2 +
1 + buf 3 <= 200」が得られる。したがって、上述の条
件とこの条件を満足する「buf1」、「buf2」、「buf3」
のデータが求める評価データとなる。
【0087】
【発明の効果】以上説明したように本発明は、ソースプ
ログラムを読み込み、分岐命令およびラベルを検出し、
連続した一連のプログラム群ごとに分割するプログラム
分割手順と、分割された各プログラム群から他のプログ
ラム群へ移行するための各プログラム群相互間の移行情
報を生成して記憶する移行情報生成手順と、生成された
各プログラム群相互間の移行情報を連続して、ソースプ
ログラムの最初から個々のプログラム群までに到達する
ための到達情報を生成して出力する到達情報生成手順
と、到達情報によりソースプログラムの評価データを生
成する手順とを含むことにより、任意のプログラム群ま
での到達必要条件を求めることができ、ソースプログラ
ムを漏れなく評価する評価データを容易に作成すること
ができる効果がある。
【0088】また、ソースプログラム中の呼出し変数を
代入および参照するための変数情報を含み、分割された
各プログラム群から他のプログラム群へ移行するための
各プログラム群相互間の移行情報を生成して記憶する移
行情報生成手順と、生成された移行情報からプログラム
群の処理経路を示す経路情報を生成する経路情報生成手
順と、経路情報と変数情報とからソースプログラムの評
価データを生成する評価データ生成手順とを有すること
により、各経路の呼出し変数による移行条件に対応して
評価データを容易に作成することができる効果がある。
【0089】また、経路情報中の主要な経路の経路情報
を選択する経路情報選択手順と、経路情報選択手順によ
り選択された経路情報と変数情報とから評価データを生
成する評価データ生成手順とを有することにより、冗長
な経路を削除して評価データを効率よく作成することが
できる効果がある。
【0090】また、プログラムの作成および保守のため
のコメント文を含む高級言語により記述されたソースプ
ログラムを含むので、評価データを作成できるソースプ
ログラムの範囲を拡張できる効果がある。
【0091】また、プログラム群は、1つの分岐命令ま
たはラベルによって分割される基本ブロックと、2つ以
上の基本ブロックを含む複合ブロックとからなるので、
プログラム群の分割が効率よく行なわれ、したがって、
評価経路およびその評価データの作成が容易になる効果
がある。
【図面の簡単な説明】
【図1】本発明の第1実施例の構成を示すブロック図で
ある。
【図2】図1の基本ブロック分割部110の流れ図であ
る。
【図3】図2中の移行先ブロック番号生成の流れ図であ
る。
【図4】分岐情報作成部130の流れ図である。
【図5】到達情報作成部150の流れ図である。
【図6】第1実施例により評価しようとする参考例のソ
ースプログラムである。
【図7】フラグ更新ファイルの構成図である。
【図8】基本ブロックファイル120の構成図である。
【図9】移行情報ファイル140の作成経過を示す図で
ある。
【図10】移行情報ファイル140の内容の一例であ
る。
【図11】到達条件ファイル160の構成例を示す図で
ある。
【図12】到達条件ファイル160の内容の一例であ
る。
【図13】ソースプログラムがC言語で記述された第2
の適用例の流れ図である。
【図14】第2の適用例の流れ図の一部である。
【図15】特定のブロックおよび関数の到達条件リスト
出力の流れ図である。
【図16】ソースプログラムがC言語の基本ブロックフ
ァイルの例である。
【図17】第2の適用例の移行情報ファイルの一例であ
る。
【図18】第2の適用例の到達情報ファイルである。
【図19】特定のブロックと関数の到達条件リストの出
力例である。
【図20】第2の適用例のC言語プログラムの要部であ
る。
【図21】本発明の第2の実施例の構成を示すブロック
図である。
【図22】経路情報作成部155の処理手順を示す図で
ある。
【図23】経路情報ファイル165の構成図である。
【図24】評価経路選択部170の処理手順の流れ図で
ある。
【図25】評価経路選択テーブル180の構成図であ
る。
【図26】参考例の評価経路選択テーブル180’の作
成経過を示す図である。
【図27】参考例の評価経路選択テーブル180’の作
成経過を示す図である。
【図28】参考例の評価経路選択テーブル180’の作
成経過を示す図である。
【図29】第2の実施例の動作を説明するためのソース
プログラムの1例である。
【図30】図29のソースプログラムから作成された経
路情報ファイル165を示す図である。
【図31】図29のソースプログラムから作成された経
路情報ファイル165を示す図である。
【図32】図29のソースプログラムから作成された経
路情報ファイル165を示す図である。
【図33】図29のソースプログラムから作成された経
路情報ファイル165を示す図である。
【図34】図29のソースプログラムの経路図である。
【図35】図29のソースプログラムのバイナリツリの
説明図である。
【図36】図29のソースプログラムのバイナリツリの
説明図である。
【図37】情報処理システムのプログラム開発の工程図
である。
【図38】従来の評価データ作成方法を示すブロック図
である。
【図39】従来の評価データ作成方法を示すブロック図
である。
【図40】従来の評価データ作成方法を示すブロック図
である。
【図41】従来の評価データ作成方法を示すブロック図
である。
【図42】従来の評価データ作成方法を示すブロック図
である。
【図43】従来の評価データ作成方法を示すブロック図
である。
【図44】従来の評価データ作成方法を示すブロック図
である。
【符号の説明】
10 ソースプログラム 110 基本ブロック分割部 120 基本ブロックファイル 121 基本ブロック番号 122 開始行 123 最終行 124 先頭ラベル名 125 分岐命令、制御文 126 移行先 126a ブロック番号 126b ラベル名 127 移行条件 127a フラグセット命令 127b 第1オペランド 127c 第2オペランド 128 関数名 129 呼び出し関数 129a 関数名 129b ブロック番号 130,135 移行情報作成部 140,145 移行情報ファイル 141 ブロック番号 142 直前ブロック番号 143 移行条件 150 到達情報作成部 155 評価経路作成部 160 到達情報ファイル 161 ブロック番号 162 到達条件 165,165A,165B,165C 経路情報ファ
イル 166 経路番号 167 基本ブロック番号 168 移行条件 169 変数情報 170 評価経路選択部 180 経路選択テーブル 181 経路図 182 行合計ΣEi,0 183 列合計ΣE0,j 184 選択記号Ci 200 評価データ作成部 250 評価データ 300 評価実行部 350 評価結果出力 S1−S187 ステップ

Claims (5)

    【特許請求の範囲】
  1. 【請求項1】 情報処理システムの動作を制御するソー
    スプログラムの評価データ作成方法において、 前記ソースプログラムを読み込み、分岐命令およびラベ
    ルを検出し、連続した一連のプログラム群ごとに分割す
    るプログラム分割手順と、 前記分割された各プログラム群から他のプログラム群へ
    移行するための各プログラム群相互間の移行情報を生成
    して記憶する移行情報生成手順と、 前記生成された各プログラム群相互間の移行情報を連続
    して、前記ソースプログラムの最初から個々のプログラ
    ム群までに到達するための到達情報を生成して出力する
    到達情報生成手順と、 前記到達情報により前記ソースプログラムの評価データ
    を生成する手順とを含むことを特徴とするプログラム評
    価データ作成方法。
  2. 【請求項2】 情報処理システムの動作を制御するソー
    スプログラムの評価データ作成方法において、 前記ソースプログラムを読み込み、分岐命令およびラベ
    ルを検出し、連続した一連のプログラム群ごとに分割す
    るプログラム分割手順と、 前記ソースプログラム中の呼出し変数を代入および参照
    するための変数情報を含み、前記分割された各プログラ
    ム群から他のプログラム群へ移行するための各プログラ
    ム群相互間の移行情報を生成して記憶する移行情報生成
    手順と、 前記生成された移行情報からプログラム群の処理経路を
    示す経路情報を生成する経路情報生成手順と、 前記経路情報と前記変数情報とから前記ソースプログラ
    ムの評価データを生成する評価データ生成手順とを有す
    ることを特徴とするプログラム評価データ作成方法。
  3. 【請求項3】 経路情報中の主要な経路の経路情報を選
    択する経路情報選択手順と、 前記経路情報選択手順により選択された経路情報と変数
    情報とから評価データを生成する評価データ生成手順と
    を有する請求項2に記載のプログラム評価データ作成方
    法。
  4. 【請求項4】 ソースプログラムは、プログラムの作成
    および保守のためのコメント文を含む高級言語により記
    述された請求項1ないし3のいずれか1項に記載のプロ
    グラム評価データ作成方法。
  5. 【請求項5】 プログラム群は、1つの分岐命令または
    ラベルによって分割される基本ブロックと、2つ以上の
    基本ブロックを含む複合ブロックとからなる請求項1な
    いし4のいずれか1項に記載のプログラム評価データ作
    成方法。
JP6190333A 1993-12-10 1994-08-12 プログラム評価データ作成方法 Pending JPH07219819A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP6190333A JPH07219819A (ja) 1993-12-10 1994-08-12 プログラム評価データ作成方法

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP31023793 1993-12-10
JP5-310237 1993-12-10
JP6190333A JPH07219819A (ja) 1993-12-10 1994-08-12 プログラム評価データ作成方法

Publications (1)

Publication Number Publication Date
JPH07219819A true JPH07219819A (ja) 1995-08-18

Family

ID=26506017

Family Applications (1)

Application Number Title Priority Date Filing Date
JP6190333A Pending JPH07219819A (ja) 1993-12-10 1994-08-12 プログラム評価データ作成方法

Country Status (1)

Country Link
JP (1) JPH07219819A (ja)

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330692B1 (en) 1998-02-18 2001-12-11 Fujitsu Limited Method of determining the route to be tested in a load module test
JP2011248887A (ja) * 2010-05-24 2011-12-08 Fujitsu Ltd ソフトウェアモジュールのテスト方法及びシステム
JP2012243011A (ja) * 2011-05-18 2012-12-10 Ntt Data Corp ソースコード分析装置、ソースコード分析方法およびプログラム
WO2014112304A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 排他制御検査装置、排他制御検査方法、排他制御検査プログラム
WO2014112316A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 フラグアクセス不具合検査装置、フラグアクセス不具合検査方法、フラグアクセス不具合検査プログラム
JP2017182379A (ja) * 2016-03-30 2017-10-05 キャッツ株式会社 テストケース抽出装置、テストケース抽出方法及びプログラム

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04137146A (ja) * 1990-09-28 1992-05-12 Fujitsu Ltd テストデータ作成方法

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH04137146A (ja) * 1990-09-28 1992-05-12 Fujitsu Ltd テストデータ作成方法

Cited By (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6330692B1 (en) 1998-02-18 2001-12-11 Fujitsu Limited Method of determining the route to be tested in a load module test
JP2011248887A (ja) * 2010-05-24 2011-12-08 Fujitsu Ltd ソフトウェアモジュールのテスト方法及びシステム
JP2012243011A (ja) * 2011-05-18 2012-12-10 Ntt Data Corp ソースコード分析装置、ソースコード分析方法およびプログラム
WO2014112304A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 排他制御検査装置、排他制御検査方法、排他制御検査プログラム
WO2014112316A1 (ja) * 2013-01-21 2014-07-24 日産自動車株式会社 フラグアクセス不具合検査装置、フラグアクセス不具合検査方法、フラグアクセス不具合検査プログラム
JP5962779B2 (ja) * 2013-01-21 2016-08-03 日産自動車株式会社 フラグアクセス不具合検査装置、フラグアクセス不具合検査方法、フラグアクセス不具合検査プログラム
JP2017182379A (ja) * 2016-03-30 2017-10-05 キャッツ株式会社 テストケース抽出装置、テストケース抽出方法及びプログラム

Similar Documents

Publication Publication Date Title
US5729676A (en) Method of generating data for evaluating programs
US7721255B2 (en) Sequence program editing apparatus
JP2783641B2 (ja) 設計評価方法および設計評価ツール
US20050015730A1 (en) Systems, methods and computer program products for identifying tab order sequence of graphically represented elements
US5852564A (en) Method and apparatus for interactively displaying signal information during computer simulation of an electrical circuit
JPH0683598A (ja) ジョブフロー仕様書自動作成方法
US6243858B1 (en) Program construction assisting system
JPH07219819A (ja) プログラム評価データ作成方法
US5907851A (en) Editing nested documents by appointing a portion for insertion with an alternative substitute
JPS6081641A (ja) レジスタトレース方法
US7620937B2 (en) System and method for debugging programs
JP4629183B2 (ja) 要求仕様記述支援装置およびその方法、記録媒体
US3684871A (en) Network plotting system
US5751288A (en) Program display method and device, and also program generation method and device
JPS6136868A (ja) 情報検索装置
JP2005301568A (ja) 表示情報記憶制御装置および表示情報記憶制御プログラム
US9128807B2 (en) Module structural analysis supporting device and program
KR100237659B1 (ko) 도형 편집 장치 및 방법
Zaw et al. A design-aware test code approach for code writing problem in Java programming learning assistant system
US8151242B1 (en) Description support apparatus and method for requisition sheet, and recording medium
JP2009104562A (ja) 業務支援システム及びそれに用いられるプログラム
JPWO2018123039A1 (ja) プログラム比較装置およびプログラム差分照合方法
Weninger Flowchart Visualization in JavaWiz
Tolg Computer Science to the Point: Computer Science for Life Sciences Students and Other Non-Computer Scientists
Kroma et al. A Taxonomy for Guiding XR Prototyping Decisions by the Non-Tech-Savvy